Hallo, im STK 500 läuft der atmega 162 prima: LED1 Betriebsanzeige LED2 Impulsanzeige LED3 Warnanzeige Nun habe ich zum Testen den µC auf ein Steckbrett nach obigem Schaltplan aufgebaut. Es tut sich aber gar nichts. Spannung von 5V liegt an. Kann mir jemand einen Tipp geben, was ich falsch gemacht habe? Vielen Dank Thomas
Hi Reset mit einem 10k Pull Up Widerstand nach VCC vergessen. Gruß MISZOU
vielen Dank für die Antwort, allerdings ändert der 10K von VCC an Reset nichts. Geht immer noch nicht. Woran könnte es sonst noch liegen? Gruß Thomas
Hi
>Woran könnte es sonst noch liegen?
Hast du den Quarz-Oszillator per Fuses aktiviert?
MfG Spess
Hallo, hier nochmal der geänderte Schaltplan. Bei den Fuses hatte ich noch CKDIV8 und JTAG rausgenommen. Habe auch unter Minimalbeschaltung Atmega geschaut. Wenn der µC Saft hat müsste er doch laufen...... Gruß Thomas
Auf dem STK500 hängen die LEDs übrigens mit der Anode an VCC und werden mittels LOW-Pegel vom AVR zum leuchten gebracht. Gruß, Magnetus
@magnetus habe ich im manual für das STK500 gelesen. Da sitzen noch Transistoren dran, damit die LED immer die selbe Betriebsspannung haben. Aber man kann doch trotzdem mit dem µC LED direkt ansteuern? Das heißt dass in meinem Beispiel zumindest irgendeine LED angehen muss. Habe mal die Spannungen an den Portpins gemessen: Im STK 500 4,4V High, LED aus. Beim µC auf dem Steckbrett ist aber keiner der PIN s auf High, obwohl an VCC 5 V anliegen..... wenn ich ihn ins STK 500 stecke, arbeitet er aber ganz normal... ich fürchte ich steh da mächtig auf dem Schlauch ;-(( Gruß Thomas
Thomas schrieb: > Da sitzen noch Transistoren > dran, damit die LED immer die selbe Betriebsspannung haben. Denselben Betriebsstrom. Thomas schrieb: > Habe mal die Spannungen an den Portpins gemessen: Im STK 500 4,4V High, > LED aus. Kann von den Transistoren kommen. Wo ist der Code ? Im recht unwahrscheinlichen Fall würden die Pins Tristate gesteuert, d.h. aktiv Low oder offen, das würde so ein Fehlerbild ergeben.
Vielleicht schwingt der Quarz nicht richtig an, Du könntest mal den internen Osci aktivieren, wenn's dann läuft liegt der Fehler nicht an der Schaltung oder Software.. Gruß Mark
ja, sorry Betriebsstrom.. Habe den Code angehängt. Gruß Thomas
@m2k10 werde ich nachher mal probieren, Danke. Gruß Thomas
Hallo, habe jetzt den externen Quarz entfernt und die Fuse auf int Oszi gestellt. Aber der µC macht immer noch nichts!!!! Unter Minimalbeschaltung habe ich bei www.rn-wissen.de/index.php/Atmel_Controller_Mega8 gesehen, wie jemand den Atmega 8 nur mit VCC, GND, Reset-10k-VCC drei LEDs zum Leuchten bringt. Was braucht denn der Atmega 162 anderes?? Im Datenblatt habe ich definitiv nur gefunden, dass er von 1.8 V bis 5.5 V betrieben werden kann. es muss doch was ganz Fundamentales sein, was hier nicht funktioniert. Habe auch berücksichtigt, dass ein µC kaputt sein könnte und zweimal ausgetauscht. Es geht einfach nicht.;-(( Hat irgendjemand eine Idee, was ich noch probieren könnte?? Gruß Thomas
Im STK ist der Reset definiert. Ich glaube nicht, dass es reicht, am Reset nur einen Pullup-widerstand anzuschließen. Da sollte mindestens noch ein 1 µF- Kondendator dran. Damit ein Reset über den PIN bei jedem Spannungeinschalten auch durchgeführt wird. Im STK ist eine Pulldown-Kondensator vorgesehen... Vielleicht ist es das ja schon. Lass doch mal eine Kontroll_LED in der äußeren While-Schleife blinken. Entsprechend verzögern. Aber sag mal, führst Du da eine int32-Berechnung durch? Wofür ist die gut, wenn Da nur ein paar LED-blinken sollten. Viel Erfolg
Hast du ein Multimeter? Falls ja, verbinde die Minus-Leitung (schwarz, COM) mit Pin 20 (GND) des Atmega162. Dann messe mit der Plus-Leitung (rot) folgende Spannungen und berichte die Messwerte: Pin 40: Pin 9: Pin 37: Pin 38: Pin 39: Pinlayout wie in http://www.atmel.com/dyn/resources/prod_documents/doc2513.pdf
Kann es sein, dass du den Chip verkehrt herum eingesteckt hast? Er ist in deinem Bild nämlich mit Kerbe nach unten gezeichnet...
> Pinlayout wie in > http://www.atmel.com/dyn/resources/prod_documents/... Wichtig! Weil deine Skizze eine sehr ungewöhnliche Anordnung der Pins hat und großes Potential für Verwechselungen.
Benutzt du BOD (siehe Fuses)? Wenn ich das richtig überblicke, dann fehlt bei deiner Beschaltung noch was. Bei mir hat es sich damals genauso verhalten. STK geht, extern nicht. Siehe auch hier: Beitrag "MEGA164P läuft nicht an"
Na, ist kein Wunder, schau' Dir den Code nochmal an, genau wie ich vermutet hab' :D Die PortA-Pins werden über DDRA gesteuert. Damit sind sie entweder Low oder offen. Damit funktioniert eine Led gegen GND natürlich nicht. Warum eigentlich diese eher ungewöhnliche Verwendung des DDR-Registers ? Es gibt Dinge bei denen Tri-State Sinn macht, aber in dieser Schaltung nicht. Wer hat den Code geschrieben ? Wär' der von Dir, hätte es Dir eigentlich sofort klar sein müssen, wo's hakt.
@cskulkw habe keinen 105er (1µF);-( Tuts zum probieren auch ein 0.1µF? Die int32 Berechnung brauche ich für die Erzeugung von Harmonischen die ziemlich genau mit extern gemessenen Harmonischen übereinstimmen sollen (Resonanz) @Serieller PIN40 5,05 V PIN9 5,05 V ohne LEDs: PIN37 0,7 V PIN38 0,5V PIN39 1,2 V mit LEDs: PIN37 0,2 V PIN38 0,05 V PIN39 0,43 V @ Daniel der µC steckt richtig rum! Habe ihn nur deswegen gedreht, weil er in einem Platinenlayout (nicht gepostet) so günstiger zum routen liegt. @Serieller Habe das Datenblatt ausgedruckt, die Pinansicht vergrößert und an die Wand genagelt;-)) Danke für die Antworten Thomas
@MWS bin Anfänger,Autodidakt und das ist einer meiner ersten Codes. War ganz stolz, dass er innerhalb des STK 500 genau das macht was ich möchte. Deswegen ist mir leider überhaupt nicht klar, dass ich hier Tri-state verwendet habe. Musste mir den Begriff auch erst mal im Wiki durchlesen ;-(( Muss mir jetzt nochmal im Tutorial anschauen wie man eine LED ohne Tri-state schaltet. Oder hast Du einen Tipp ? vielen Dank Gruß Thomas
Thomas schrieb: > Deswegen ist mir leider überhaupt nicht klar, dass ich hier Tri-state > verwendet habe. Du hast doch PortB auch richtig angesteuert, deswegen musste man fast von Absicht ausgehen ;-) Das DDR = Data Direction Register legt fest, ob's der Portpin Ein- oder Ausgang ist. Der klassische Weg eine Led zu schalten, ist den Portpin über DDRx auf Ausgang und per PORTx den Zustand, High oder Low zu setzen. Tristate dagegen ist: Offen - Low - High Wenn man so etwas braucht, dann kann man über den Weg über's DDR-Register machen, etwas daß Du offenbar unabsichtlich gemacht hast. Register PORTA wird nirgends initialisiert, ist aber nach dem Reset auf 0. Ein Schreiben einer 1 auf ein Bit des DDRA bewirkt, daß der entsprechende Pin Ausgang wird, also Low, ein Schreiben einer 0 daß der Ausgang offen wird. Er wird so aber nie High, d.h. Leds von VCC auf Portpin leuchten, aber Leds von Portpin gegen GND nie. Thomas schrieb: > Oder hast Du einen Tipp ? Ja, statt hier:
1 | DDRA^=(1<<PA2); |
den PORTA beschreiben:
1 | PORTA^=(1<<PA2); |
und DDRA in der initPorts() passend setzen.
@MWS Super!!!! Vielen Dank für die ausführliche Erklärung! Werde heute abend mal den Code entsprechend anpassen und dann schaun was passiert. Müsste aber, so wie Du es erklärt hast, laufen... Gruß Thomas
Es läuft!! Ursache war die der fehlerhafte Implementierung der LED Steuerung, wie MWS festgestellt hatte. Die von ihm vorgeschlagene Lösung hat das Problem behoben. Vielen Dank an alle die geholfen haben, Gruß Thomas
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.