ATmega16 Probleme bei der PORTC Nutzung

Gast #1803238
Lesenswert?

Hallo,
bei der Nutzung des PORTCs beim ATMEGA16 bekomme ich immer zusätzlich 
falsche Werte ausgegeben. Die JTAG-Schnittstelle hab ich temporär mit 
dem Befehl:
  MCUCSR |= 0x80;     // 1 in JTD Bit schreiben.
  MCUCSR |= 0x80;     // 1 in JTD Bit festnageln.
schon zweil mal deaktiviert. (Da ich noch weiter Programmieren muss, 
kann ich sie nicht bei den Fusebits deaktivieren.) Zur Progammierung hab 
ich manuell einen Reset ausgelöst.
Mein JATG Programmiergerät hab ich vom PORTC entfernt. Schließe ich eine 
LED-Leiste an, sehe ich  Bit 0, 1, 4, 6,7 aus und Bit 2, 3, und 5 
dimmen.

Hat jemand eine Idee, wie ich den Port als Ausgabe nutzen kann?

Danke für eure Hilfe.

Gruß
Manuel
Angehängte Dateien:
Gast #1803276
Lesenswert?

Danke für die Antworten
@Ausgeber:
DDRC 0xff; war im Ursprünglichen Code auch drin, nur beim Verschlanken 
zum Herausfinden des Fehlers hab ich es ausversehen mit gelöscht. Hab 
dies wieder eingefügt, gleiches Fehlerbild.

@ich:
siehe Anhang mit dem Code jetzt vollständig. Es soll nur 0 ausgegeben 
werden, selbst dies bereitet schon Probleme.

Gruß
Manuel
Angehängte Dateien:
#1803287
Lesenswert?

Für das JTD Bit im MCUCSR gelten spezielle Regeln, du musst es zweimal 
mit den gleichen Werten beschreiben, soweit ich weiß innerhalb von 4 
taktzyklen.

Deine ODER-Operation braucht zulange bis das MCUCSR beschrieben wird.

Versuch es doch mal hiermit:
1
uint8_t mcucsr = MCUCSR;
2
mcucsr |= (1 << JTD);
3
MCUCSR = mcucsr;
4
MCUCSR = mcucsr;
#1803345
Lesenswert?

Hast du mal getestet ob das mit JTAG ausschalten per Code wirklich 
funktioniert? Und zwar nicht in dem du auf die LEDs achtest sondern 
versuchst das Ding wirklich mit JTAG zu debuggen (was ja nicht gehen 
dürfte wenn JTAG aus ist).
Dann könnte man zumindest schonmal genau sagen wo das Problem liegt.

Mein Code oben funktioniert in meinem Projekt übrigens wunderbar 
(ATMega32).

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren