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!
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?
>Bei PWM Blockkondensatoren korrekt verbaut? >kleine Testplatine An eine EMV-gerechtes Layout gedacht? http://www.atmel.com/dyn/resources/prod_documents/doc1619.pdf
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 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.
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?)
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...
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...
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.)
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)
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?
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.
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
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)
>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...
Hmmm, hat sich wohl erledigt (oder ist Hilfe zu bekommen zu anstengend, wenn man was dafür tun muss)?
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"
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
@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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.