Forum: Mikrocontroller und Digitale Elektronik ATmega16 läuft nicht stabil


von Frank P. (creeper)


Lesenswert?

Hallo!

Ich bin derzeit drum und dran etwas mit einem ATmega16 herumzuspielen 
und dafür eine kleine Testplatine in Anlehnung an das Mini-Mega-Board 
von Elektor zu bauen.

Die Platine ist soweit fertig und ich kann per Ponyprog auf den Atmel 
zugreifen. Nun hab ich ein Problem, die Ausgänge scheinen irgendwie 
nicht stabil zu sein. Ich habe einige kleinere Anwendungen probiert, 
immer mit dem gleichen Ergebnis...

Bei PWM stockt der Motor und selbst eine LED leuchtet nicht stabil, sie 
flackert. Ich habe die Security bits gesetzt wie im Elektor beschrieben. 
Die Programmierung erfolgt über die serielle Schnittstelle. Muss ich mit 
dem Reset Anschluss irgendetwas beachten? Dieser hängt an dem seriellem 
Programmierinterface.

Hat jemand eine Idee wie ich das Teil stabilisieren kann?
Vielen Dank im Voraus!

von Der M. (steinadler)


Lesenswert?

Hallo Frank,

schau dir mal die Versorgungsspannung (5V) für den Controller an, ob die 
stabil ist. Am besten mit einem Oszilloskop.
Am Resetpin ist normalerweise ein Pullup-Widerstand dran, der dir dort 
einen definierten Pegel zuführt.

Das wäre die Hardware-Seite.

Ansonsten klingt mir das so, als ob dein Programm immer wieder 
neustartet.

Poste doch hier mal den Code!?

Evtl. Endlosschleife vergessen? Stack nicht initialisiert?

von Benedikt K. (benedikt)


Lesenswert?

Falls der Controller mit >8MHz läuft: CKOPT Fusebit gesetzt ?

von Matthias L. (Gast)


Lesenswert?

>Bei PWM
Blockkondensatoren korrekt verbaut?


>kleine Testplatine
An eine EMV-gerechtes Layout gedacht?

http://www.atmel.com/dyn/resources/prod_documents/doc1619.pdf

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

JTAG-Fuse?

von Frank P. (creeper)


Lesenswert?

Die Fusebits sind folgendermaßen gesetzt:
BODEN,SUT1,BOOTSZ1,BOOTST0, alle anderen sind aus, CKOPT habe ich Ein 
und Aus geschalten, ohne Erfolg.

Mittlerweilen bekomme ich nicht einmal mehr die LED zum flackern. Ich 
lade folgendes (Anfänger!!!)Programm:


;************************************************
;*Blinklicht
;*
;*
;*
;************************************************

.include "m16def.inc"

    ldi r18,255
    out DDRA,r18 ;Port als Ausgang
Loop:

    sbi porta,1 ; LED ein
    ldi r23,0
    ldi r24,0
    ldi r16,0
    ldi r17,0

Loop1:
    inc r16    ; Zähler 1
    cpi r16,100
    brne loop1

    inc r24    ; Zähler 2
    cpi r24,100
    brne Loop1
    cbi porta,1 ; LED aus

Loop2:
    inc r17    ; Zähler 3
    cpi r17,100
    brne loop2

    inc r23    ; Zähler 4
    cpi r23,100
    brne Loop2
    rjmp Loop

danach habe ich auf PIN7 welcher eigentlich PortB6 ist ständig High 
Signal, Port A ist komplett finster...

Das High Signal an PIN7 kommt nicht über die Schnittstelle herein.

von Klaus K. (Gast)


Lesenswert?

Ja das wüsste ich auch gerne...

Keiner ne Idee?

von senex24 (Gast)


Lesenswert?

Von Fuse-bits und Hardware einmal abgesehen, wie schnell läuft der uC?
Wenn ich 1 MHz annehme, so komme ich auf eine Zeit von

100*100*4*1 us = 40 ms;

wäre nichts für meine müden Augen.

von senex24 (Gast)


Lesenswert?

Das eben war missverständlich formuliert, also der 1. Satz korrigiert:

Von Fehlern bei Fuse-bits und Hardware einmal abgesehen, wie schnell 
soll
der uC denn laufen?


(Und warum wird als 2. oder 3. Aktion immer gleich an den Fuses 
herumgespielt?)

von Matthias L. (Gast)


Lesenswert?

Poste doch mal eine Schaltung (und das Layout)

von Michael H* (Gast)


Lesenswert?

wenn ich motor und pwm lese...
du hast garantiert ein emv problem. reset härter gegen V_cc ziehn, 
größeren pufferkondensator. versorgungsspannung mit drossel entstören, 
evtl fürn atmel getrennt erzeugen. optokoppler einbaun und komplette 
galvanische trennung herstellen. uswusf...

von luke (Gast)


Lesenswert?

hat der motor eine treiberstufe?

von Frank P. (creeper)


Lesenswert?

Die Versuche mit PWM waren nur vorgefertigte Programme die ich mal 
ausprobieren wollte, als das aber nicht funktionierte oder besser gesagt 
nur stotternd, habe ich immer weiter minimiert. Nun soll nur noch eine 
LED leuchten. Mit den Zeiten werd ich mal noch ein wenig runter gehen da 
der ATmega mit 8Mhz Quarz läuft.

Es ist analog zu der Schaltung ATmega Board aus dem Elektor, welche nur 
noch ein wenig dezimiert wurde. Sind nur noch ein paar LEDs und Schalter 
auf der Platine.

Die Fusebits habe ich geändert wie es in dem Elektor Artikel vorgegeben 
war. Daher habe ich mich daran zu schaffen gemacht.

Hat irgendwer ne Idee warum ich am Pin7 ständig H Signal habe? Es ist 
auch der MOSI Pin über den der serielle Port die Daten schiebt. Er wird 
in dem Programm nicht erwähnt.

Danke für die Nachsicht gegenüber ATmega noobs...

von senex24 (Gast)


Lesenswert?

Also ich würde:

- einen neuen mega16 nehmen oder versuchen, beim alten die Fuses
  in den Auslieferungszustand zu bringen; dann läuft der uC mit
  internem RC-Oszillator auf 1 MHz
- die LED zum blinken bringen; das Programm ist okay, nur flimmert die
  LED mit 2*40 ms = 12.5 Hz. 1 Hz wäre schöner
- dann die Fuses auf den 8 MHz-Quarz umstellen
- jetzt nochmal die Blink-LED mit 1 Hz

und dann kann es weiter gehen...


(Warum kaprizieren Sie sich so auf den Pin 7? Mir wäre der völlig egal.)

von Matthias L. (Gast)


Lesenswert?

Da haben wir es doch:
>Sind nur noch ein paar LEDs und Schalter auf der Platine.

>>11.08.2008 08:14
>>Blockkondensatoren korrekt verbaut?
>>An eine EMV-gerechtes Layout gedacht?

Link lesen:
http://www.atmel.com/dyn/resources/prod_documents/doc1619.pdf

>Hat irgendwer ne Idee warum ich am Pin7 ständig H Signal habe?
Weil der Widerstand R42 mit 42kOhm zu groß ist, und in COdezeile 42 ein 
Fehler ist!

>>

Poste doch mal eine Schaltung (und das Layout)

von Frank P. (creeper)


Lesenswert?

Ich habe die Kondensatoren um den ATmega so aufgebaut wie es im Elektor 
beschrieben war. Die Schalter sind DIP Switches gegen +5V, und die LEDs 
mit dem korrekten Vorwiderstand gegen Masse geschalten. Ich habe alles 
mit Pfostensteckern aufgebaut, wo ich jeweils nur die anstecke die 
gebraucht werden. Das Layout zu posten ist leider ein bisschen 
umständlich. Ich glaube schon das die Schaltung entstört ist. Was ist 
ausser den Entstörkondensatoren  noch zu beachten für ein EMV gerechtes 
Layout?

Ist es ein Problem wenn das Interface für die serielle Schnittstelle 
stecken bleibt?

von senex24 (Gast)


Lesenswert?

Ich kenne weder ponyprog noch das Elektor-Mini-Mega-Board oder was
Sie daraus gemacht haben, aber ich hoffe doch, Sie erhielten eine
Fehlermeldung, wenn beim eigentlichen Programmiervorgang (dem 'Brennen')
etwas schief ginge; folglich muss Pin 7 == MISO (nicht MOSI !) ja wohl
okay sein.
Und um erstmal nur eine LED blinken zu lassen reichen 100 nF in der Ver-
sorgungsspannung; falls Sie Ihrem Aufbau misstrauen und ein Steckbrett
haben, können Sie den programmierten uC dort einsetzen, Kondensator, LED
und Widerstand dazu - fertig.

von J. K. (rooot)


Lesenswert?

Ich glaube schon das die Schaltung entstört ist. Was ist
> ausser den Entstörkondensatoren  noch zu beachten für ein EMV gerechtes
> Layout?

Viiiiiiiiiiiiiel. Kurze Leitugen, keine Masseschleifen, keine 90° 
Ecken....

Ist in diesem Anwendungsfall aber eher unkrtitisch glaub ich.

Wichtig sind aber die kurzen leitungen am Quarz! er sollt direkt an den 
Pins de µC sitzen.

mfg
J.K

von senex24 (Gast)


Lesenswert?

Welche Spannung messen Sie an Pin 30 == AVcc?

von Stefan W. (wswbln)


Lesenswert?

Wie Matthias Lipinsky oben schon schrieb: Bitte mal die Schaltung (und 
Foto vom Aufbau?) posten!

Alles andere ist Kaffeesatzleserei...
(Wir helfen ja gerne, aber Hellseher sind wir nicht)

von Matthias L. (Gast)


Lesenswert?

>Das Layout zu posten ist leider ein bisschen umständlich.

Warum?
Ein png machen und hochladen. Oder ein Foto...
Oder zumindest mal einen Schaltplan, mit der Angabe
>Elektor-Mini-Mega-Board
kann nicht jeder was anfangen.

PS: Du möchtest Hilfe, als sei so "nett" und gib uns Infos, die wir 
möchten/brauchen...

von Stefan W. (wswbln)


Lesenswert?

Hmmm, hat sich wohl erledigt (oder ist Hilfe zu bekommen zu anstengend, 
wenn man was dafür tun muss)?

von senex24 (Gast)


Lesenswert?

Nach meiner Vermutung waren es Anfängerfehler der allersimpelsten Art,
oder um R. Mey zu zitieren:

"Ich übe den Fortschritt und das nicht faul,
nehme zwei Schritt auf einmal und fall aufs Maul"

von Henne (Gast)


Lesenswert?

Die Sache ist relativ einfach:

A) Source, Schaltplan und Layout wird zum Debuggen beötigt.
B) Die Daten dürfen nicht veröffentlicht werden, da die Geschichte 
kommerziell eingesetzt werden soll.

Also sucht sich der Threadstarter einen ihm kompetent erscheinenen 
Menschen aus, und bietet ihm an, nach Unterzeichnung einer 
Vertraulichkeitsvereinbahrung gegen einen Fixpreis von 300-1kEUR bzw 
einen Stundenlohn von 30-70EUR (so schätze ich die Spanne je nach 
Qualifikation ein) den Krempel zu debuggen.

Das ist der normale Weg - warum sollte es hier anders laufen?

Hendrik

von Stefan W. (wswbln)


Lesenswert?

@Henne:

Ich zitiere mal den ersten Absatz des Ursprungspostings:
"Ich bin derzeit drum und dran etwas mit einem ATmega16 herumzuspielen
und dafür eine kleine Testplatine in Anlehnung an das Mini-Mega-Board
von Elektor zu bauen."

Nochmal die Stichworte: Testplatine, Elektor, spielen

;-))

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.