Forum: Compiler & IDEs Pin PE3 bei ATmega128 nicht als Ausgang nutzbar


von Manfred (Gast)


Lesenswert?

Hallo!

Ich habe bereits einen Post aus dem Jahr 2005 zu diesem Thema gefunden, 
leider war aber keine Antwort auf das Problem zu finden.

Ich habe folgendes Problem: Wenn ich beim ATmega128 versuche, den Pin3 
des Ports E (PE3/OC3A/AIN1) als Ausgang zu nutzen und ihn auf HIGH zu 
setzen, bleibt dieser LOW. Hier der Code:


int main(void)
{
  //ACSR |= (1<<ACD);
  //SFIOR|= (1<<ACME);
  //ADCSRA &= ~ (1<<ADEN);
  //ADMUX  &= ~ ((1<<MUX2)|(1<<MUX1)|(1<<MUX0));
  DDRE |= (1<<DDE3)|(1<<DDE4)|(1<<DDE5);
  PORTE = 0xFF;
  while (1)
  { PORTE = 0xFF;
  }
}


Es funktioniert z.B. auf PE4 und PE5, PE3 bleibt aber LOW. Ich habe auch 
schon versucht, den negativen Eingang des Analogkomparators (AIN1) zu 
disablen (siehe auskommentierte Zeilen), aber das hat auch nichts 
genutzt.

Eigentlich wollte ich den 16bit-Timer 3 zur PWM nutzen. Auf PE4/OC3B und 
PE5/OC3C funktioniert die PWM auch wunderbar, nur bei PE3 habe ich das 
gleiche Problem wie schon beim simplen Output eines konstanten Wertes.

Ich verwende AVRStudio mit WinAVR und den Olimex JTAG ICE. Der 
ATmega103-Kompatibilitätsmodus ist in den Fuse-Settings deaktiviert.

Hat irgendwer eine Idee, was der Grund für das Problem sein könnte?
Hat irgendwer schon mal erfolgreich die "output compare A" Funktion des 
Timers 3 genutzt?

Grüße
Manfred

von Hagen R. (hagen)


Lesenswert?

Also ich meine das ich auf meinem m128 Testboard schon mit allen 3 PWMs 
des Timer 3 gearbeitet habe, und kann mich nicht erinnern das ich 
Probleme damit hatte. Sollte also gehen.

Da fällt mir ja ein das ich im meinem derzeitgen Drum-Projekt auch den 
PE3 als Ausgang mit PWM benutze. Das muß also funktionieren.

Gruß Hagen
1
 DDRE |= (1<<DDE3)|(1<<DDE4)|(1<<DDE5);

ich mach das immer so:
1
  DDRE = (1 << PE3) | (1 << PE4);

vielleicht sind deine #defines DDE3 usw. falsch, also überladen ?

von Manfred (Gast)


Lesenswert?

Hallo Hagen,

Deine Antwort hat mir insofern weitergeholfen, dass ich die Fehlersuche 
wohl am AVR nicht fortsetzen muss...

Nach etwas Fehlersuche habe ich bemerkt, dass auf meinem EVA-Board 
ausgerechnet dieser Pin einen Masseschluss hat (welch dummer Zufall). 
Ich habe zwar vorher schon mal gegen die Nachbarpins gemessen, nicht 
aber gegen Masse (wie dumm von mir...).

Danke nochmal für die schnelle Antwort.

Grüße
Manfred

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
Noch kein Account? Hier anmelden.