Taster an PortD funktionieren, an PortC nicht. Warum?

Gast #282918
Lesenswert?
• ▲
▼
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
Gast #282920
Lesenswert?
• ▲
▼
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?
Gast #1724568
Lesenswert?
• ▲
▼
@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

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.