12 LEDs an ATMega32 (Port A + C)

Gast #2003040
Lesenswert?

Hi,

ich habe an meinem ATMega32 an PortA 8 LEDs und an PortC 4 LEDs (an PC0, 
PC1, PC2, PC3). JTAG ist deaktiviert.
An PortB hängt ein LCD (HD44780), das funktioniert problemlos. Ich 
denke, das ist für das Problem nicht relevant.

Meine Schaltung betreibe ich über das ATMEL Evaluations-Board 2.0 über 
das IDE-Kabel (J4) auf meinem Steckbrett.

Mein Testcode sieht so aus:
1
int main(void)
2
{
3
  DDRA = 0xFF;
4
  DDRB = 0xFF;
5
  DDRC = 0xFF;
6
  DDRD = 0b11100000;  
7
  
8
  PORTA = 0xFF;
9
  PORTC = 0xFF;  
10
  while(1) {}
11
  return 0;
12
}
Das funktioniert, alle LEDs leuchten und an allen Pins liegen ~5V an.

Schalte ich jetzt PortC komplett aus, habe ich schon das erste seltsame 
Verhalten.
1
DDRA = 0xFF;
2
  DDRB = 0xFF;
3
  DDRC = 0xFF;
4
  DDRD = 0b11100000;  
5
  
6
  PORTA = 0xFF;
7
  PORTC = 0x00;

An PortC leuchtet jetzt wie erwartet nichts mehr, allerdings sind auch 
PA4 und PA5 betroffen. Diese leuchten nur noch ganz schwach (es liegen 
etwa 2.5V an)

Nächster Test: PortA komplett aus, PORTC komplett an.
1
DDRA = 0xFF;
2
  DDRB = 0xFF;
3
  DDRC = 0xFF;
4
  DDRD = 0b11100000;  
5
  
6
  PORTA = 0x00;
7
  PORTC = 0xFF;

Jetzt leuchten ausschließlich die hintern 2 LEDs an PortC (PC2 + PC3). 
PortA scheint aus zu sein, doch das trügt. Denn PA4 und PA5 erhalten 
etwa 2,3V => LEDs leuchten ganz schwach.

Ich habe vorher ein einfaches Lauflicht an PORTA betrieben und auch 
damit festgestellt, dass es irgendwelche Zusammenhänge zw. PA4/PA5 und 
PC2/PC3 geben muss. Die haben immer gleichzeitig geleichtet (PA4 + PC2 
und PA5 + PC3)

Leider weiß ich jetzt nicht mehr weiter. Habt ihr eine Idee? Ist mein 
Controller kaputt?

MfG
Simon
Gast #2003043
Lesenswert?

Habe gerade nochmal das Lauflicht getestet:
1
DDRA = 0xFF;
2
  DDRB = 0xFF;
3
  DDRC = 0xFF;
4
  DDRD = 0b11100000;  
5
  
6
  PORTA = 0x01;
7
  PORTC = 0x00; 
8

9
while(1)
10
  {   
11
    PORTA = PORTA << 1;
12
  _delay_ms(75);
13
}

Zusätzlich zum Problem, dass scheinbar ein Zusammenhang zw. diesen Pins 
besteht, leuchtet mein LCD-Display ein bisschen heller, wenn PA4 bzw. 
PA5 aktiv sind.

Es gibt also auch einen Zusammenhang mit PortB....
Gast #2003047
Lesenswert?

Kann es sein das deine 12 LEDs einfach zuviel Strom über die Ports des 
avr ziehen? 12 * sagen wir mal 20mA, sowie ich weiss ist bei den meisten 
avrs bei 200mA Schluß. Versuch doch einfach irgendeinen Treiber z.B. 
ULN2803 oder sowas zwischen PortA und die 8 leds zu schalten dann kanste 
n Strom problem schonmal ausschließen.
Gast #2003051
Lesenswert?

hmm ok, mal probiert es umzudrehen? So dass die LED leuchtet wenn der 
Pin low ist? Kann mich dunkel erinnern das es schon einen Unterschied 
macht. Des weiteren gibts da auch noch pullups aber die dürften 
eigentlich nach deinem code nicht eingeschaltet sein
Gast #2003059
Lesenswert?

Habe leider keine Möglichkeit, das umzudrehen. Ich kann mir aber auch 
nicht vorstellen, dass es daran liegt.

Haben denn die oben beschriebenen Pins irgendwelche Zusatzfunktionen, 
die man abschalten kann? Das Datenblatt verwirrt mich an der Stelle...
Gast #2003066
Lesenswert?

Sehr interessant: Ist das gesamte Board inkl. Schaltung stromlos und ich 
gehe mit dem Durchgangsprüfer einmal an A5 und einmal an C0, erhalte ich 
ein Durchgangssignal. Das selbe bei A4 und C1. ALle andere Kombinationen 
bieten keinen Durchgang. Als Widerstand zeigt mir mein Multimeter bei 
Durchgang ca. 2 Ohm an.

Stecke ich das 40polige Kabel (J4) vom Pollinboard ab, erhalte ich 
keinen Durchgang mehr. Somit lässt sich ein Lötfehler auf meinem Adapter 
(fürs Steckbrett) ausschließen. Jetzt teste ich noch, ob ich ebenfalls 
einen Durchgang habe, wenn der Controller vom Board genommen wird.
Gast #2003068
Lesenswert?

Sooo, das Problem wurde lokalisiert und behoben!!!
Es lag tatsächlich am Pollin-Board. Mein Code war die ganze Zeit korrekt 
(zum Glück)

Ich bin mit dem Multimeter an die Platine und hab die Pins direkt am 
Board nachgemessen. Es gab eine Verbindung zwischen den besagten Pins. 
Also machte ich mich auf die Suche nach dem Fehler und schaute ins 
Handbuch.

Das war der entscheidende Schritt, denn dort sah ich, dass es 2 Jumper 
gibt (JP11 und JP12), die scheinbar eine Verbindung mit den Pins haben. 
Diese Jumper habe ich entfernt und jetzt funktioniert es.

Die Frage ist jetzt: Ist das Verhalten erwünscht oder habe ich einfach 
schlampig gelötet? Die Kontakte sehen eigentlich alle sauber aus.

Es wäre hilfreich, wenn von euch jemand auf seinem Board nachschauen 
könnte :-)
Gast #2003929
Lesenswert?

Ich habe das gerade mit dem Board von einem Freund getestet. Er hat 
genau das selbe Problem, ohne die 2 Jumper funktioniert es.

Ein Lötfehler kann also ausgeschlossen werden.

Hat jemand eine Idee, ob das von Pollin bewusst so gemacht wurde?

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