ATMEGA162 PortD will nicht!!

Gast #363677
Lesenswert?
• ▲
▼
Guten Abend,
ich hexe schon eine Weile herum mit meinem ATMEGA162. Der gibt auf Port
D im Gegensatz zu den anderen nix raus. Mein Programm fängt so an:
int main(void)
{

//Fuse CKDIV8 und JTAGEN aus!!
MCUCR |= (1<<ISC01);    //INT0 falling slope
GICR |=  (1<<INT0);    //INT0 allowed
TIMSK &= ~((1<<OCIE2)|(1<<TOIE2));
  /* Write new values to TCNT2, OCR2, and TCCR2. */
TCNT2 = preload;
TCCR2 |= ((1<<CS20)|(1<<CS21)|(1<<CS22)); //1024 Vorteilung
TIFR |= ((1<<OCF2)|(1<<TOV2));
TIMSK|= (1<<TOIE2);//Timer 2 Overflow Interrupt ein.
DDRA = 0xFF;
DDRB = 0xFF;
DDRC = 0xFF;
DDRD = 0xFB;   //All Ports OUTPUTS except INT0 (Pin12)
PORTD |= ( 1 << PB2 );  //Pullup-resistor on INT0
sei();    //Enable all interrupts

while(1)
{
}
  return (1);
}

Im Timer Interrupt gebe ich auf meinen Ports A-D alle 30ms Werte aus,
aber Port D schweigt immer. WARUM??
JTAG Fuse ist aus. Ich werde aus den möglichen Sonderfunktionen von
Port D (Seite 77 ATMEL Doku) nicht schlau und will die auch gar nicht.
Was ist da eingeschaltet was ich gar nicht will??

Danke für eine kurze Hilfestellung.

Thomas
Gast #363681
Lesenswert?
• ▲
▼
Hallo Tim,
ja habe ich (zumindest geht es nun...).
Ursprünglich habe ich die Bits der Ports mit XOR Befehlen manipuliert
wie folgt:

PORTC ^=(1<<S3F);

Das hat immer funktioniert, nur nicht auf Port D (dort nur auf Bit1).
Danach habe ich erst für jeden Port eine Variable definiert und diese
mit XOR bearbeitet. Anschließend hab ich das Ergebnis dann auf die
Ports geschrieben (PORTD = Display[3];), so funktioniert es.
Warum verhält sich PortD anders als die anderen Ports?

Mein Problem hat sich also gelöst.

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.