PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Atmega32 + 16Mhz + Pollins Funk AVR Board = uC macht Quatsch



-schumi-
01.08.2010, 20:59
Hallo liebe Community,

Mein Atmega32 macht was ganz komisches...

Zutaten für diese Problemsuppe:
- Das Funk AVR Evaluations Board von Pollin (als Bausatz)
- ein jungfreulicher Atmega32-16PU
- Eine Priese PonyProg
- und BASCOM

1. Atmega32 ins Board stecken (richtig rum natürlich, Atmega8 hats schon 2 mal falsch rum überlebt 8-[ )
2. Mit PonyProg Fuses wie im Bild angehängt setzten
3. Bas-Datei mit folgendem Inhalt


$regfile = "m32def.dat"
$crystal = 16000000

Config Portd.5 = Output 'LED 1
Config Portd.6 = Output 'LED 2
Config Portb.1 = Input 'Taster

Do
Portd.5 = 1
Portd.6 = 0
Do
Loop until Portb.1 = 1
Portd.5 = 0
Portd.6 = 1
Waitms 1000
Loop

End

mithilfe von PonyProg via ISP in den Atmega laden
4. wundern

Was macht der Atmega?
-> Er macht das was ich ihm gesagt habe:
- LED1 an, LED2 aus
- Warten bis ich Taste drücke
- LED1 aus, LED2 an
- 1 sec. warten
- von vorne beginnen

Allerdings unterwirft er sich nur einer sehr begrenzten Zeit (ca. 3-5 sec.) meinen Programmierkünsten:
Denn dann:
- entweder er bleibt stecken wenn LED2 leuchtet und macht erst weiter wenn ich die Taste drücke (eig. sollte er nur 1 sec. warten)
- er macht etwas ganz anderes (teilweise leuchten LED1+2 !?!)
- Er macht das was ich will, aber beide LEDs glimmen nur schwach

3-5 sec. später geht er wieder ganz normal und dann spinnt er wieder und geht wider normal und...so weiter

Ich hab wirklich gar keinen Plan warum das so ist... Es muss offensichtlich mit dem Taster zusammenhängen, weil wenn der Atmega nur blinken soll ohne das die Taste gedrückt wird macht er das ganz brav das macht er jetzt schon seit ca. 30 min. ohne Probleme . Allerdings funktioniert der Taster mit einem Atmega8 tadellos... (sogar das selbe Programm, nur eben die ersten beiden Zeilen entsprechend geändert)

Woran zum Teufel liegt das???

Bitte um ergebenst um Hilfe
-schumi-

PS: kann sein das die Fuses irgendwie nicht stimmen?? hab mich noch kaum damit auseinander gesetzt... (bzw. hab sie mir von da geklaut: http://www.mikrocontroller.net/topic/59460, die 2. Antwort. Aus dem Datasheet zum Atmega32 wurde ich noch nicht so ganz schlau... )

Besserwessi
01.08.2010, 22:19
An den Fuses wird es eher nicht liegen. Eher schon an einem Fehlen Pullup Widerstand bei der Taste. Ich weiss nicht ob da einer in Hardware auf dem Board drauf ist.

Der Fehler liegt darin, das man den Eingang nicht mit Portb.1 abfragt, sondern über Pinb.1 .

michiE
01.08.2010, 23:51
Bascom ist nicht mein Gebiet, aber wie siehts denn mit der Stromversorgung aus ? Meine Erfahrungen haben gezeigt dass Probleme der Art zu 80% auf die Stromversorgung fallen (spricht vor allem für deine teilweise glimmenden LEDs und den offensichtlich ab einem gewissen Punkt "dauerschleiferesetenden" µc

-schumi-
02.08.2010, 17:27
Hallo,

erst mal danke für die Antworten!

@Besserwessi:
- Gut dass das mit den Fuses so stimmt, war nämlich noch verunsichert ob das wirklich so richtig ist...
- >> Eher schon an einem Fehlen Pullup Widerstand bei der Taste <<
Pullup ist dran (33 KOhm)
- >> Der Fehler liegt darin, das man den Eingang nicht mit Portb.1 abfragt, sondern über Pinb.1 . <<
Oh, tut mir leid. Das war ein Tippfehler. Das Programm ist nämlich auf einem anderen PC und da hab ich es einfach nur schnell abgeschrieben..

@michiE
- >> Probleme der Art zu 80% auf die Stromversorgung fallen <<
Das mit der Stromversorgung kann eigentlich nicht sein. Dazu wird ein normales 10V~ Netzteil + Gleichrichter + 5V- Spannungsregler (natürlich incl. Elkos etc.) benutzt. Messung während dem Betrieb zwischen GND & VCC ergab 5.05V, passt also. (Ich glaub schön langsam das mein Multimeter nicht ganz genau geeicht ist, weil bei allen Spannungsreglern 5.05V rauskommen statt 5.00V)

Hier gibts übrigens noch den Schaltplan von dem Board:
http://www.pollin.de/shop/downloads/D810046B.PDF


MfG
-schumi-

michiE
02.08.2010, 20:59
Hi Schumi

Ich dachte eher daran die Spannung mal mit dem Oszi anzuschauen.
Alternativ kannst du mal schauen ob der Controller schön im Sockel steckt, bzw mal die Widerstände zwischen Platine und Controller messen. Ich hatte neulich Probleme mit Sockeln mit runden "Pins", in denen die Pins des Mega8 nur ziemlich zufällig Kontakt hatten.

lg
Michi

Icon2k
02.08.2010, 22:38
Das könnte das selbe Problem sein, wie auf dem Atmel Evaluation Board. Die Schalter sind "Active High", d. h der interne PullUp Widerstand des Atmega's bringt dir nichts, bzw. du musst ihn abschalten, das Board hat extra einen PullDown Widerstand(R10). Das Problem ist der Kondensator C17, der nach dem Drücken auf den Taster einen kurzen Spannungseinbruch verursacht. Dieser Spannungseinbruch kann (manchmal) zu einem Reset führen, oder dazu dass der ATmega32 sich im Prog. verläuft ...
MfG Icon

-schumi-
03.08.2010, 16:38
Leute, ihr seid klasse!!

Ich hab mal schnell den originalen 330nF Kondensator durch einen 3.3nF ausgetauscht
-> Es funktioniert Problemlos! (Am Programm wurde nichts geändert)

Danke für die Hilfe
-schumi-

michiE
04.08.2010, 00:12
jetzt würde noch interessieren warum das Ganze so auf ein Mal funktioniert. Du betreibst das Board mit Netzteil + Gleichrichter, oder?

-schumi-
04.08.2010, 11:19
Hi

ja, wie oben geschrieben:

Dazu wird ein normales 10V~ Netzteil + Gleichrichter + 5V- Spannungsregler (natürlich incl. Elkos etc.) benutzt.

Es liegt anscheinend daran, dass die Stromversorgung kurz zusammenbricht (bzw. schwächer wird) wenn der Kondesator C17 (330nF) beim Taste-drücken aufgeladen wird. Bei dem 3.3nF ist der Einbruch nicht so stark, das sich der Atmega im Programm verläuft

MfG
-schumi-

Kampi
04.08.2010, 13:00
Ich würde mal ganz stark vermuten das das eventuell mit dem Ladevorgang des Kondensators zusammen hängt..... . So wie das im Plan gezeichnet ist wird der Kondensator direkt an 5V geklemmt, wenn man den Schalter betätigt. Ein entladener Kondensator wirkt im Einschaltmoment wie ein Kurzschluss. Dadurch passiert es dann das die Spannung zusammenbricht und der Mega verrückt spielt.
Das wäre eine Vermutung von mir.... 8-[

michiE
04.08.2010, 19:46
Meine Vermutung wäre in Richtung der Restwelligkeit der Gleichspannung gegangen, und die Eigenschaft eines Kondensators in dieser Schaltung den (niederfrequenten) Wechselstromanteil der Betriebsspannung nach GND kurzzuschließen.

Der Große Kondensator wird bei Einbruch der Betriebsspanung jedoch auch schnell entladen, und mit einem entsprechend großen Strom auch wieder geladen wenn die volle Betriebsspannung wieder anliegt.

Eventuell hätten Widerstände an den Tastern auch einiges gebracht.

-schumi-
04.08.2010, 20:12
R's auf die schnelle währen aber n bischen aufwendig gewesen (Leiterbahn trennen, Löchle bohren , Löten - da geht C17 austauschen schneller ;-))

MfG
-schumi-

michiE
04.08.2010, 21:18
ging mir nur um die Klärung der Frage woher der Quatsch kommt und wie man ihn verhindern kann :)