mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Taster an PortD funktionieren, an PortC nicht. Warum?


Autor: Christian Schreiber (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist das JTAG ( Portc )abgeschaltet?

Autor: Christian Schreiber (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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...

...

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Weis vieleicht jemand von euch wie man den jtag in bascom deaktivieren 
kann.

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
MCUCSR.JTD=1
müßte gehen.

MfG Paul

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke

Hab es aber schon gemacht. War einfach bei die Fuses verändern

Autor: Hc Zimmerer (mizch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Es sind bei mir alle Fusebits deaktiviert.

Wie programmierst Du das Ding dann mit BASCOM?  Denn - wenn das stimmt - 
muss auch SPIEN deaktiviert sein.

Autor: Kluchscheißernder Nixwisser (kluchscheisser)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.