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
Noch ein kurzer Nachtrag: Im AVR Studio im Simulator ändert sich der PortD wie erwartet, im richtigen Leben aber nicht. Soweit zu den Simulationen....
kontrolliere mal fuses. vermutlich ist jtag interface active und blockiert den port
Hast du herausgefunden was das Problem war? Würde mich auch mal interessieren.
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.
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.