Archiv verlassen und diese Seite im Standarddesign anzeigen : Interrupt ! ich bitte um Hilfe
Hallo an alle,
Ich habe mir einen IR Sensor mit dem IS471 gebastelt.
Ich möchte nun sobalt der Sensor etwas erkennt, ihn ausweichen lassen.
Geht sowas über Schleifen oder Interrupts? -der Atmega16 hat ja nur 2Interrputs
Weil sonst müsste man ja z.b. folgendes machen:
4:
portd.1 = 1
waitms 1
if pinb.1 = 0 Then
portd.1 = 0
else goto 4
end if
Hat jemand einen Gedankestoß oder eine Lösung für dieses Problem?
Hab schon eine Stunde mit Suchen verbracht, aber weiter bin ich nun auch nicht :(
Ich würde mich über jegliche Hilfe freuen!
Viele Grüße
FLorian
Werner_Just
23.04.2005, 22:20
Hallo,
wie kommst Du darauf, daß der M16 nur 2 Interrupts hat?
Ich hab die Liste gerad nicht parat, die Anzahl bewegt sich aber eher im der Größenordnung um die 20.
> Hab schon eine Stunde mit Suchen verbracht, aber weiter bin ich nun auch nicht
vielleicht würde es helfen, wenn Du das was die BASCOM-Help zu einem Suchbegriff anbietet, liest?
BASCOM HELP, Suchbegriff "Interrupt", Thema "On Interrupt"
Enable Interrupts
Enable Int0 'enable the interrupt
On Int0 Label2 Nosave 'jump to label2 on INT0
Do 'endless loop
nop
Loop
End
Label2:
Dim A As Byte
If A > 1 Then
Return 'generates a RET because it is inside a condition
End If
Return 'generates a RETI because it is the first RETURN
Return 'generates a RET because it is the second RETURN
Zur Funktion der einzelnen Interrupts -> M16 Datenblatt
Ciao,
Werner
Hallo tms2002,
also wenn ich dich jetzt richtig verstanden habe, dann meinst du, dass der Mega16 lediglich zwei Ports hat die einen externen interrupt bereitstellen. ja das stimmt. sollte aber auch im normalfall immer reichen.
zu deinem Problem mit dem IS471F:
ja du musst deine Ports( an denen die Sensoren hängen) immer wieder abfragen (pollen) und bei Pegeländerung dann darauf entsprechend reagieren (andere Ports schalten o.ä.)
Gruß
Baui
danke Baui! hast du einen Codeschnipsel wie ich den Pin pollen kann?
bzw wie ich schleifen schnell durchlaufen lassen kann? Ich hab auch irgend was von Case Select gehört aber wie das funktioniert hab ich keinen Plan
gruß
florian
hallo florian,
folgender Code würde zum Beispiel Sensoren am Portd abfragen ob diese eine Hinderniss erkennen oder nicht und darauf mit dem Schalten des Ports B reagieren
$crystal=400000
config portd=input
config portb=output
do
if portd<>255 then gosub Hinderniss
=>mach andere sachen (LCD o.ä.)
loop
Hinderniss:
if pind.0=0 then
'tu was
elseif pind.1=0 then
'tu was anderes
elseif pind.n=0 then
end if
Return
Hoffe das hilft dir ansonsten einfach nochmal melden.
Gruß
Baui
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.