PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [ERLEDIGT] Quarz defekt?



Genghis
22.06.2011, 18:38
Hallo liebe Bastlerkollegen/innen,

habe vor ein paar Jährchen mal mein AVR-Evaluationsboard mit Atmega32 und Display bei Ebay gekauft und das sieht total nach Marke Eigenbau aus und ich habe leider keinen richtigen Schaltplan. Aber vielleicht könnt ihr mir dennoch weiterhelfen. Im Anhang befindet sich ein Foto des Boards und der magere "Schaltplan" den ich damals mitbekommen habe. Vielleicht kommt es ja einem von euch bekannt vor oder jemand von euch hat es selbst entwickelt. Die Boards scheinen ohnehin alle ziemlich ähnlich zu sein.

Dieses Board sollte zum Entwurf des eigentlichen Boards meines Roboters dienen. Als ich letztens ein wenig rumprobiert habe wo ich welche Platine hinschrauben soll bin ich mit dem Board an das blanke Alu des Fahrgestells gekommen und das Display kurz hell aufgeleuchtet, obwohl nirgends Spannung anlag. Seit dem ist tote Hose. Das Lesen und Schreiben des Atmegas hat zwar weiterhin funktioniert, aber ansonsten wollte nix wie es sollte. Display lief nicht, Schrittmotoren bekamen keinen Takt mehr....ein wahres Trauerspiel nachdem der Roboter gerade angefangen hat richtig zu funktionieren (fahren & Koordinaten auf dem Display ausgeben).
Daher habe ich erstmal den Atmega 32 ersetzt, da ich ihn für das schwächste Glied gehalten habe. Voller Erschrecken musste ich nun gerade feststellen, dass er nicht der Übeltäter war. Als nächstes habe ich dann doch mein aufgeblähtes Roboterprogramm durch ein PWM-Signal erzeugendes Programm ersetzt (Schema hier: Port setzen, warten, rücksetzen und von vorne beginnen). Das Setzen des Ports funktioniert einwandfrei, aber das Rücksetzten tritt nicht ein nicht. Folglich kann _delay_ms(xxx) nicht richtig funktionieren, obwohl es richtig eingegeben wurde - hat ja bisher auch geklappt.
Die neue Vermutung ist nun, dass der externe Quarz defekt ist und er deshalb kein "Zeitgefühl" mehr hat und daher nichts mehr ging. Kann das jemand von euch der mehr Ahnung wie ich hat bestätigen oder eine bessere Annahme aufstellen? Hatte jemand von euch schonmal das Problem? Wäre es sinnvoll gleich alle Teile zu tauschen? Wie man auf dem Foto erkennen kann sind es nicht mal so viele, wobei unter dem Chip noch ein paar Widerstände und ähnliches versteckt sind.

Habe mich mittlerweile so an das Board gewohnt und will es echt nicht mehr missen. Bitte helft mir!

Vielen Dank und Beste Grüße
Genghis

shedepe
22.06.2011, 18:52
Hast du bei dem neuen Atmega32 denn überhaupt die richtigen Fuses gesetzt. Sonst läuft der mit 1 Mhz internem Takt. Hast du ein Multimeter ? Dann kannst du mal überprüfen ob An VCC, Reset und AVCC jeweils 5V anliegen.

Genghis
22.06.2011, 19:05
Erstmal danke für die schnelle Antwort. Also die 5V sind überall da. Mit den Fuses hab ich mich noch nie beschäftigt. Muss man die nur bei nem neuen Chip einstellen und ich hab's daher bisher nie gebraucht?

shedepe
22.06.2011, 19:16
Dann ist es kein Wunder dass der Takt nicht stimmt. Mit welchem Programm flashst du deinen ATmega denn ?

Genghis
22.06.2011, 19:25
Das Problem ist ja dass er gar keinen Takt zu haben scheint. Laut Internet ist der Atmega 32 immerhin funktionstüchtig wie er ausgeliefert wird, also die Fusebites laut Datenblatt gesetzt. Das würde doch bedeuten _delay_ms würde funktionieren, jedoch wäre die verstrichene Zeit inkorrekt, oder?
Also zum implementieren benutze ich AVR Studio 4 über AVR GCC. Geflasht wird mit Pony Prog. Wo zum Geier finde ich überhaupt die einzustellenden Bits im Datenblatt? Meins ist vom Reichelt und endet nach 21 Seiten, die voll mit Blockdiagramm, Geometriedaten und ein "paar" Assembler-Befehlem sind.

shedepe
22.06.2011, 20:26
Für die delay Funktionen muss der richtige Takt im Programm angegeben sein (F_CPU oder im AVR studio unter Projekteigenschaften). Da der Atmega jetzt im Auslieferungszustand allerdings mit 1MHz läuft stimmt diese Einstellung ja nicht mehr. Die Fuses kannst du ganz einfach mit dem ins AVR Studio integrierte Flashprogramm einstellen (Damit kannst du dir auch das flashen mit PonyPro sparen). Dazu gehst du in der oberen Leiste auf das Symbol das aussieht wie ein kleiner Microchip und auf dem AVR drauf steht. In dem danach aufgehenden Fenster gibt es den Reiter Fuses. Dort musst du bei SUT_CKSEL die Einstellung Ext. Crystal/ Resonator wählen. Je nachdem welche Frequenz dein Quarz hat musst Low Freq / Medium Freq / High Freq auswählen. Bei der Start-up time empfiehlt sich etwas wie 16K CK + 64ms.

Wenn du die Fuses mit PonyProg setzen willst gibt es im Internet auch einen Fuse Calculator (und das vollständige Datenblatt auf der Atmel website)

shedepe
22.06.2011, 21:00
Achso bevor ichs vergesse: Man kann mit falsch gesetzten Fuses so einiges zerschießen. Also lieber 2 Mal schauen bevor man die setzt.

Genghis
22.06.2011, 22:48
So jetzt kam ewig keine Antwort mehr von mir, weil ich mich in meine Werkstatt verkrochen habe, um einem Gedankenblitz nachzugehen. Und zwar, dass der alte Chip ja noch lesbar und beschreibbar war und mir die Fusebits sagen kann. Da ich dann ja noch mein Testprogramm für den neuen Chip auf hatte hab ich's doch nochmal mit dem alten probiert. Siehe da: der alte Chip war nie defekt.
Es war nur so, dass ich bei jedem Test, den ich zuvor noch mit dem alten Chip gemacht hatte das Display mit angesprochen habe. Dies wiederum muss - ich kann's mir nicht anders erklären - das ganze Unternehmen blockiert haben. Das war jedenfalls die gute Nachricht.
Die schlechte ist, dass plötzlich einer meiner Schrittmotortreiber ausgefallen ist und mich jetzt über drei Stunden aufgehalten hat und der Treiber immer noch nicht läuft (außer im Halbschrittmodus - macht echt keinen Sinn). War echt ne miese Woche für das Projekt Roboter - alle was super lief ging kaputt. Ich glaub ich muss es erstmal auf Eis legen bis in ein paar Wochen.

Vielen Dank nochmals

PS: Das mit den Fusebits werde ich dann demnächst mal testen, wenn ich mein "richtiges" Board gebaut habe.