Hallo, ich möchte, dass mein Controller reagiert, wenn ich eine von 5 Tasten drücke. Dazu habe ich bei meinem mega16 PortC auf Eingang geschaltet und die Pullups aktiviert. Drücke ich den Taster, so wird der entsprechende Pin an PortC und INT0 auf 0V gesetzt. Der Interupt wird bei falender Flanke ausgelöst. Die Interruptroutine soll nun nachgucken, welche Taste gedrückt wurde und entsprechend reagieren. Mein Code der Interruptroutine ist folgender: interrupt1: sbis PINC, 1 inc pls sbis PINC, 2 ldi pls,0x00 nop reti Im Simulator des AVR Studio 4.12 funktioniert der Code genau so, wie ich es erwarte. Die Befehle werden nur ausgeführt, wenn der entsprechende Taster gedrückt wurde.(die Bits im Simulator setzen/löschen) Lade ich das Ganze aber in meinen Controller, wird immer ldi pls,0x01 ausgeführt, obwohl die Pins durchgehend 5V haben.(habe ich kontrolliert) Wenn ich die Taster aber an PortD anschließe und im Code oben PINC durch PIND ersetze, funktioniert es komischerweise. Habe ich etwas übersehen, was ich evtl. aktivieren/deaktivieren muss, damit ich PORTC für I/O verwenden kann? Oder hab ich mein Controller zerstört? Gruß Christian
Danke für den Tip, anscheinend ist das JTAG an. Doch eigentlich sollte es aus sein. Es sind bei mir alle Fusebits deaktiviert. Auch OCDEN und JTAGEN. Trotzdem vermute ich, dass der JTAG Interface noch an ist, denn TDO(PC4) hat kein definiertes Level, obwohl die Pullups aktiviert sind. Das trifft genau auf das Verhalten aus dem Datenblatt zu. Da steht: The TDO pin is left floating when the JTAG interface is enabled. Auch das Setzen des JTD Bits in MCUCSR schaltet das Interface nicht ab. Was kann ich noch machen?
Du kannst JTAG auch per AVR-Software deaktivieren: in wl,mcucsr ;JTAG- sbr wl,1<<jtd ;Interface out mcucsr,wl ;deaktivieren out mcucsr,wl ;(PortC aktivieren) wobei "wl" ein oberes Register ist... ...
Hallo Weis vieleicht jemand von euch wie man den jtag in bascom deaktivieren kann.
Danke Hab es aber schon gemacht. War einfach bei die Fuses verändern
> Es sind bei mir alle Fusebits deaktiviert.
Wie programmierst Du das Ding dann mit BASCOM? Denn - wenn das stimmt -
muss auch SPIEN deaktiviert sein.
Paul Baumann schrieb: > MCUCSR.JTD=1 > müßte gehen. Aber nur, wenn man es zweimal direkt hintereinander macht. Wobei noch fraglich ist, ob Bascom den Bitnamen "JTD" kennt. Mir wurde mal von einem vertrauenswürdigen Bascom-Nutzer gesagt, dass man die Bitnamen nicht nutzen könnte, ich habe es daraufhin nie ausprobiert. > > MfG Paul MfG, Consulter
@Kluchscheißender Kluchscheißer Du hast Recht. Man muß sich heraussuchen, welches Bit in dem Register MCUCSR ist. (Hier Bit 7) MCUCSR.7=1 funktioniert. Ich habe es eben ausprobiert. OT: Dein alter Name war kürzer und einprägsamer... ;-) MfG Paul
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.