Forum: Mikrocontroller und Digitale Elektronik bitwait funktioniert nicht


von Reinhard (Gast)


Lesenswert?

Hallo,

wenn ich das Prog auf meinem µC austesten will funktioniert es nicht,
sprich wenn ein LOW an Pind0 anliegt ( Zeile Bitwait ) werden die Leds
nicht eingeschaltet, klammer ich Zeile Bitwait aus, funktioniert alles,
Hardware i.O.. Auch im Simulator wird nach einem Low an Pind0 die
letzten Bits von portd low.
Wo liegt das Prob ?


$regfile = "4433def.dat"
$crystal = 8000000



Ddrd = &B11110000
Portd = &B11111111

Anfang:

Bitwait Portd.0 , Reset

Portd = &B00001111

Wait 1

Portd = &B11111111

Wait 1

Goto Anfang
End

von Gerd Laschinski (Gast)


Lesenswert?

Hallo Reinhard,

beim AVR gibt es ein PORT- und ein PIN-Register. Zum Abfragen eines
Eingangs mußt Du das PIN-Register nutzen: Bitwait Pind.0 , Reset.

Gruß
Gerd

von Reihard (Gast)


Lesenswert?

hallo gerd,

in der bascom-avr help datei wird das ganze so beschrieben

Bitwait Portb.7 , Reset         'wait until bit 7 of Port B is 0.

ich habe es mit pind.0 im avr studio simuliert, bitwait wird nun völlig
ignoriert, das Programm läuft ohne pind.0 auf low gesetzt zu haben bis
goto.

gruß
r

von Kurt (Gast)


Lesenswert?

Hallo Reinhard

Versuch mal "Pinb.7"


sollte gehen

Portpin muss auf -Eingang-    gesetzt sein

Kurt

von Gerd Laschinski (Gast)


Lesenswert?

Hallo Reinhard,

ja, das steht in der Hilfe. Aber es ist falsch, besser gesagt, es
funktioniert nicht. Klar wartet "Bitwait Portb.7 , Reset" darauf, daß
das Bit Nr. 7 im Register Portb auf 0 geht, aber das fragt nicht den
Ausgang ab. Daß Bitwait "Pind.0, Reset" im avr studio ignoriert wird,
liegt vermutlich daran, daß pind.0 = 0 ist.

Gruß
Gerd

von Kurt (Gast)


Lesenswert?

so ghehts bei mir


------------------------
Config Pinc.2 = Input

Eing Alias Pinc.2
---------------------





Bitwait Eing , Set


Kurt

von Reinhard (Gast)


Lesenswert?

es geht nicht, weder im avr-studio noch mit µc
das prog wartet nicht auf ein low an pind.0 , sondern
läuft bis goto Anfang usw... .

$regfile = "4433def.dat"
$crystal = 8000000

Ddrd = &B11110000 'Datenrichtung bit0-3 Eingang, rest Ausgang
Portd = &B11111111'Bit0-3 pullup

Anfang:

Bitwait Pind.0 , Reset 'warte bis low an pind.o



Portd = &B00001111

Wait 2

Portd = &B11111111



Goto Anfang
End

von Kurt (Gast)


Lesenswert?

schreib doch mal


Config Pind.0 = Input


dazu.



Ddrd = &B11110000 'Datenrichtung bit0-3 Eingang, rest Ausgang
Portd = &B11111111'Bit0-3 pullup

Da fehlt doch die "Config"  Sache ??

Kurt

von Andi K. (Gast)


Lesenswert?

Oder probiers einfach mal ungefähr so, wie es in der BASCOM-Hilfe
steht.
Also statt "Bitwait" die "echten" Maschinenbefehle:

label1:
 Sbic PINB,0   'Überspringe nächsten Befehl, wenn PinB.0 = 0 (clear).
 Rjmp label1   'Ansonsten erneut testen.

Es ist kein Problem in BASCOM ASM-Befehle zwischen rein zu schreiben.
Vielleicht hast Du ja irgend wann sämtliche Routinen in ASM unter
BASCOM was auch zur Optimierung beitragen würde ;-)

MfG
Andi

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.