mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Atmega162 außerhalb von STK500 geht nicht


Autor: Thomas (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: M. M. (miszou)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Reset mit einem 10k Pull Up Widerstand nach VCC vergessen.

Gruß MISZOU

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Woran könnte es sonst noch liegen?

Hast du den Quarz-Oszillator per Fuses aktiviert?

MfG Spess

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@spess
ja, habe ich.

Gruß

Thomas

Autor: Thomas (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Magnus M. (magnetus) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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

Autor: MWS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Mark Leyer (m2k10) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Thomas (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
ja, sorry Betriebsstrom..

Habe den Code angehängt.

Gruß

Thomas

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@m2k10

werde ich nachher mal probieren, Danke.

Gruß

Thomas

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: cskulkw (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Serieller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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/...

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann es sein, dass du den Chip verkehrt herum eingesteckt hast? Er ist 
in deinem Bild nämlich mit Kerbe nach unten gezeichnet...

Autor: Serieller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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.

Autor: 900ss D. (900ss)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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"

Autor: MWS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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

Autor: MWS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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:
DDRA^=(1<<PA2);
den PORTA beschreiben:
PORTA^=(1<<PA2);
und DDRA in der initPorts() passend setzen.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@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

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.