Schwach leuchtende LED klingt nach per default aktivem internem Pullup-Widerstand des Controllers.
Moin,
Ich habe das Atmel Evaluationsboard v2.01 und da sind 2 LEDs vorhanden. Ich habe ein Diamex All-Programmer und konnte erfolgreich ein Attiny2313 flaschen mit lunaavr. Simple Aufgabe (LEDs leuchten abwechselnd). Sie leuchten aber sehr schwach! Dann habe ich mein Atmega32 rausgeholt, der schon geflasht war (siehe Zielscheibensystem) und da leuchten die LEDs stark auf. Als ich den ATmega32 mit Lunaavr und den gleichen script geflasht hatte, leuchteten die LEDs plötzlich wieder sehr schwach. Woran kann ds nur liegen?
Nicht wundern, ich habe noch ein Summer hinzugefügt.
Code:avr.device = atmega32 avr.clock = 1000000 #define LED1 as Portd.5 #define LED2 as Portd.6 #define SU as Portd.7 LED1 = 0 LED2 = 0 SU = 0 do LED1 = 1 LED2 = 0 SU = 1 wait 1 LED1 = 0 LED2 = 1 SU = 0 Wait 1 loop
Schwach leuchtende LED klingt nach per default aktivem internem Pullup-Widerstand des Controllers.
Wunderbar! zwar musste ich sehr viel suchen, was du meinst, aber dann bin ich dahinter gekommen, dass der Port nicht richtig als Ausgang definiert worden ist. Ist das vom Controller normal, dass der Ausgang, fals man Portd.6.mode = output vergessen sollte, als Pullup defeniert wird? Oder ist das Programm abhängig. Damals musste ich auch Output für den jeweiligen port einstellen.
Das hier hatte gefehlt:
auf jedenfall danke für den kleinen Denkanstoß ^^Code:Portd.5.mode = output Portd.6.mode = output Portd.7.mode = output
mfg EKI
Hallo Erik.
Ups, da hatte ich nachts um Halbeins nicht mehr ganz sauber formuliert ...
Ich arbeite ausschließlich mit PICs, von daher würde ich die Frage gerne an die Kenner weiterreichen. Die Antwort sollte sich aber auch in der Doku zum Controller finden lassen.
Mein offenbar treffender Hinweis beruht halt darauf, dass 1.) ich schon seit Jahren auch die Atmel-Themen mitlese und 2.) deine Frage zu den Top-Five der Anfängerprobleme mit Atmel-Controllern gehört.
Viel Erfolg und Spaß weiterhin.
RoboHolIC
Hallo EKI.
Ich kenne die Amtel nicht speziell, dafür aber eine Menge andere Controller.
Grundsätzlich können die meisten Ports als Ein- oder Ausgang verwendet werden.
Bei einem Reset, weiss der Controller aber nicht, als was ein Port benutzt werden soll. Wenn da jetzt z.B. ein Schalter daran angeschlossen ist und das Port als Ausgang definiert wird, gäbe es einen Kurzschluss an diesem Port.
Also setzt man alle Ports als Eingang.
Dann hat man aber noch dass Problem, dass wenn der Pin als Eingang geschaltet ist und da aber ein Eingang z.B. eines Gatters dran hängt, sich ungültige Pegel einstellen, ist ja alles sehr hochohmig. Bei manchen Gattern können aber, bei ungültigen Pegeln, beide Transistoren in der Ausgangsstufe gleichzeitig leitend sein, was einem Kurzschluss der Versorgungsspannung gleich kommt. Will man auch nicht wirklich!
Also werden oft auch die Pull Ups aktiviert.
Nach einem Reset übernimmt dann die Software, da kann es dann Unterschiede geben, je nachdem was du für Bibliotheken verwendest.
Grundsätzlich muss man aber immer ins Datenblatt schauen, in welchem Zustand die Ports nach einem Reset nun genau sind!
MfG Peter(TOO)
Bei einem AVR ist der Port nach einem Reset auf Eingang geschaltet. Schreibt man in diesem Zustand eine 1 auf den Port, wird der PullUp (50k bis 70k) aktiviert.
Schaltet man den Port auf Ausgang, entweder so: Portx.5.mode = output oder so DDRx=0b00100000; und schreibt eine 1 auf den Port, dann geht der Port auf High und mit einer 0 auf Low. Über den max. Strom informiert das Datenblatt.
Lesezeichen