Hallo, ich setze bei einem ATMEGA32 einen Portpin auf high: sbi porta.6 Frage: Wie kann ich im Programmverlauf abfragen, ob der Pin High oder Low gesetzt wurde? sbis PINA.6 oder sbis PORTA.6 funktioniert bei mir nicht. Holger
Holger schrieb: > Frage: Wie kann ich im Programmverlauf abfragen, ob der Pin High oder > Low gesetzt wurde? Als Denkanstoss: du (bzw. dein Programm) mußt das doch wissen, denn du hast den Pin doch selber auf diesen Pegel gesetzt... > sbis PINA.6 ... funktioniert bei mir nicht. Dann liegt das Problem woanders... Evtl. wird der Port nur sehr kurz gesetzt und ist schon wieder '0', wenn du ihn abfragst...
also: test: sbis PORTA.6 jmp test0 cbi PORTA.6 ret test0: sbi PORTA.6 ret Also ich möchte den PIN A.6 bei jedem Unterprogrammaufruf von test toggeln. Holger
1 | test: sbis PORTA , 6 |
2 | rjmp test0 |
3 | cbi PORTA , 6 |
4 | ret |
5 | |
6 | test0: sbi PORTA , 6 |
7 | ret |
> Also ich möchte den PIN A.6 bei jedem Unterprogrammaufruf von test > toggeln. PIN A.6 = Schreibfehler? BTW. bei manchen modernen AVR kann man ein Bit im PORT Register tatsächlich toggeln, wenn man das betreffende Bit im PIN Register 1 setzt. Ich weiss aber nicht, ob der Atmega32 das bereits kann (=> Datenblatt).
Holger schrieb: > Also ich möchte den PIN A.6 bei jedem Unterprogrammaufruf von test > toggeln. Schau mal im Datenblatt deines AVRs, ob es zum toggeln nicht reicht, einfach eine "1" in das entsprechende Bit vom zugehörigen "PIN"-Register zu schreiben.
Holger schrieb: > Also ich möchte den PIN A.6 bei jedem Unterprogrammaufruf von test > toggeln. Und das tut er nicht? Hast du den schon auf Ausgang geschaltet (via DDRA)?
Kannst du den Portpin mit cbi PORTA,6 und sbi PORTA,6 statisch umschalten?
wo sind die rcall, die zum ret gehören bzw. was sollen die rets möglicherweise steckt das Programm in irgendeiner Schleife und kommt garnicht zur Ausführung dieser Befehle. So, wie oben nach "also:" geschrieben, kann das Programm garnicht laufen ersetze erst einmal das "ret" jeweils durch "rjmp test" und prüfe dann die Funktion
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.