bitwait funktioniert nicht

Gast #210942
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
Gast
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
Gast
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
Gast
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
Gast
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
Gast
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
Gast
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

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 21 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.