Forum: Mikrocontroller und Digitale Elektronik Schaltung aus AVR-Tutorial funktioniert nicht


von Roland N. (eroli)


Lesenswert?

Hallo zusammen,

ich habe mir endlich mal etwas Zeit genommen (und auch Mut) und die 
Selbstbau-Schaltung aus dem AVR-Tutorial nachgebaut.

Nachdem ich die Schaltung fertig hatte, habe ich einen bereits im STK500 
programmierten Mega8 reingesetzt. Im STK500 war dieser so programmiert, 
dass alle LEDs an PortB blinken.
Wenn ich diesen Mikrocontroller nun in die Schaltung setze, dann 
leuchtet meine Test-LED durchgehend und blinkt nicht. Deshalb tippe ich 
auf einen Fehler in der Schaltung...

Mir ist außerdem aufgefallen, dass ich den internen Takt vom 
Mikrocontroller noch aktiviert habe, also habe ich einfach das Kabel an 
Pin 9 gezogen, doch auch das hat nicht geholfen...

Die Led ist übrigens so angeschlossen, wie ihr es beschrieben habt:
http://www.mikrocontroller.net/articles/AVR-Tutorial:_IO-Grundlagen

Wahrscheinlich müsst ihr jetzt so ziemlich ins blaue Raten, aber 
vielleicht gibt es ja einige bekannte Standard-Fehler, die die meisten 
Neulinge machen.

Ich hoffe jedenfalls, dass mir jemand geduldig helfen kann. Das wäre 
toll :-)

Schönen Abend noch an alle :-)

von Floh (Gast)


Lesenswert?

Roland Moch schrieb:
> ich habe mir endlich mal etwas Zeit genommen (und auch Mut) und die
> Selbstbau-Schaltung aus dem AVR-Tutorial nachgebaut.

Gut, das es da nur eine Schaltung gibt. -.-
Mach mal ein Bild davon und stells hier rein.

von Roland N. (eroli)


Lesenswert?

Hallo,

sorry, das war wohl etwas unpräzise. Eine Kamer habe ich zur Zeit nicht 
zur Hand (aber vielleicht ab Montag, falls es nicht anders geht).

Ich meine diese Schaltung:
http://www.mikrocontroller.net/wikifiles/f/f6/Mega8_Tutorial.png

http://www.mikrocontroller.net/wikifiles/2/22/Tutorial_grundschaltung_breadboard.jpg

http://www.mikrocontroller.net/wikifiles/c/c5/V_Regler.gif

Ist eigentlich so wie auf dem Bild mit dem Breadboard, nur dass ich mir 
die Anschlüsse zum programmieren gespart habe, da ich das Programmieren 
(erstmal) mit dem STK500 vornehmen wollte...

von Jörn P. (jonnyp)


Lesenswert?

Wenn der µC neu ist läuft er auf internem Takt 1MHz, da wirst du das 
Blinken kaum mit den Augen verfolgen können. Wenn er auf externem Takt 
lief hast du am Pin 9 grad den Oszillator oder Quarz abgehängt, dann 
läuft er  gar nicht.
Und check mal ob der Reset Pin auf hi liegt.

von Roland N. (eroli)


Lesenswert?

Ich habe bei diesem uC noch nie irgendwelche FUSE-Bits gesetzt, deshalb 
wird er noch auf dem internen Takt von 1Mhz laufen. Das Blinken ist mit 
2 ineinander verschachtelten Schleifen gemacht worden und auf dem STK500 
seh ich es auch ganz deutlich blinken.

Da er also noch auf internem Takt läuft, habe ich den Oszillator von Pin 
9 abgehangen.
Er sollte also laufen, oder irre ich mich?

> Und check mal ob der Reset Pin auf hi liegt.

Zwischen GND und Pin1 kann ich keine Nennenswerte Spannung messen. Wenn 
ich den Taster drücke (der Taster ist so wie auf dem Breadboardbild 
angenordnet), dann messe ich zwischen GND und Pin1 eine Spannung von 
0.69 V

Hilft das?

von Julian O. (juliano)


Lesenswert?

Roland Moch schrieb:
> Zwischen GND und Pin1 kann ich keine Nennenswerte Spannung messen.

Jetzt denken wir nochmal über diese Messung nach. Dann gucken wir uns 
den Schaltplan nochmal an und denken nochmal nach. Dann messen wir die 
Versorgunsspannung (5V?), dann denken wir nochmal nach.



und dann beschweren wir uns erneut über eine falsche Schaltung...

ps: zieh mal den Taster raus, vielleicht ist der um 90° verdreht 
eingebaut

von Roland N. (eroli)


Lesenswert?

> Jetzt denken wir nochmal über diese Messung nach. Dann gucken wir uns
> den Schaltplan nochmal an und denken nochmal nach. Dann messen wir die
> Versorgunsspannung (5V?), dann denken wir nochmal nach.

Hmm, hab mir das Breadboardbild nochmal angeschaut. Wenn ich das richtig 
sehe, soll Pin1 auf High liegen und nur durch einen Druck auf den Taster 
auf Low gesetzt werden. Sehe ich das richtig?

Mir ist außerdem aufgefallen, dass da etwas weiteres mit der Beschaltung 
nicht stimmt, aber um das zu ändern, bin ich jetzt zu müde...

Ich schlage deshalb vor, dass ich mich morgen einfach mal wieder 
melde...

von Karl H. (kbuchegg)


Lesenswert?

Roland Moch schrieb:

> Hmm, hab mir das Breadboardbild nochmal angeschaut. Wenn ich das richtig
> sehe, soll Pin1 auf High liegen und nur durch einen Druck auf den Taster
> auf Low gesetzt werden. Sehe ich das richtig?

Du siehst.
Nimm den ganzen Klimmbim erst mal runter an diesem Pin erst mal runter.
Du brauchst nur den 10k Widerstand nach Vcc (also 5V).
Und selbst wenn du den weglässt müsste dein µC immer noch laufen.

Im einfachsten Fall schliesst du nur die Versorungsspannung an und 
Masse. Wenn der µC tatsächlich auf internem Takt läuft, dann läuft er 
damit bereits.
Versorgungsspannungen anschliessen und du müsstes mit dem Voltmeter 
deinen µC schon auf den Pins 'blinken' sehen.

Und dann baust du den Rest der Schaltung wieder dazu.

von Jörn P. (jonnyp)


Lesenswert?

Wie man sieht ist eine gute Fehlerbeschreibung Gold wert ;-)

Roland Moch schrieb:
> Nachdem ich die Schaltung fertig hatte, habe ich einen bereits im STK500
> programmierten Mega8 reingesetzt. Im STK500 war dieser so programmiert,
> dass alle LEDs an PortB blinken.
> Wenn ich diesen Mikrocontroller nun in die Schaltung setze, dann
> leuchtet meine Test-LED durchgehend und blinkt nicht.

Das besagt noch nicht viel, denn man weiß nicht,ob der µC mit internem 
oder Externen Takt läuft.

Roland Moch schrieb:
> Ich habe bei diesem uC noch nie irgendwelche FUSE-Bits gesetzt, deshalb
> wird er noch auf dem internen Takt von 1Mhz laufen. Das Blinken ist mit
> 2 ineinander verschachtelten Schleifen gemacht worden und auf dem STK500
> seh ich es auch ganz deutlich blinken.

Jetzt haben wir eine klare Aussage.

Roland Moch schrieb:
>> Und check mal ob der Reset Pin auf hi liegt.
>
> Zwischen GND und Pin1 kann ich keine Nennenswerte Spannung messen.

Das ist KEINE Aussage!

Roland Moch schrieb:
> Wenn
> ich den Taster drücke (der Taster ist so wie auf dem Breadboardbild
> angenordnet), dann messe ich zwischen GND und Pin1 eine Spannung von
> 0.69 V

DAS ist eine Aussage ;-)

So, nun sei bitte nicht böse über meine "Manöverkritik". Es soll dir und 
andern einfach helfen, Fehler besser zu beschreiben.
Du hast ja auch, sehr positiv, auf die exakte Schaltung (Link) 
hingewiesen.

Da haben wir hier leider schon andere Sachen zur Kenntnis nehmen müssen 
wie:
"Ich hab da ne Schaltung (kein Bild dabei) und die geht nicht". Eine 
Stunde später im gleichen thread:" Kann mir denn keiner helfen?"
Dann winkt man nur müde ab.

Da der Fehler nun eingegrenzt scheint, wünsche ich dir viel Spass mit 
µCs.

von Bastian F. (Gast)


Lesenswert?

Im STK500 sind die LEDs anders geschaltet als in der Schaltung im 
Tutorial.
Sprich, sind sie im STK500 an, sind sie bei der Tutorialschaltung aus.

von Stefan B. (stefan) Benutzerseite


Angehängte Dateien:

Lesenswert?

Bastian F. schrieb:

> Im STK500 sind die LEDs anders geschaltet als in der Schaltung im
> Tutorial.

Die LEDs beim STK500 werden über Transistoren geschaltet, im 
Tutorial nicht.

> Sprich, sind sie im STK500 an, sind sie bei der Tutorialschaltung aus.

Die Logik der Ansteuerung ist aber gleich: Die LEDs sind active low 
d.h. LOW Pegel am dazugehörigen µC Steuerpin schaltet die LED an.

In der Grundschaltung des AVR Tutorials 
(http://www.mikrocontroller.net/wikifiles/f/f6/Mega8_Tutorial.png) ist 
keine LED verbaut.

In dem Breadboardaufbau 
(http://www.mikrocontroller.net/wikifiles/2/22/Tutorial_grundschaltung_breadboard.jpg) 
ist eine LED verbaut, man (ich) sieht aber nicht genau wie und im 
Begleittext ist es auch nicht erklärt.

Es sieht beim Breadboard fast aus wie eine active high Schaltung:

PB0 (Pin 14) o------->|-----###------o GND

also anders als bei AVR-Tutorial: IO-Grundlagen mit der active low 
Schaltweise:

PB0 (Pin 14) o-------|<-----###------o Vcc

von Bastian F. (Gast)


Lesenswert?

Ich bin vom Bild ausgegangen und da ist die Schaltung, wie du ja schon 
geschrieben hast, active high - im Gegensatz zum STK500.
Aber da man nicht weiß, wie der TE nun schlußendlich geschaltet hat...
Er hat ja beide Bilder gepostet und die sind nunmal unterschiedlich.

von Roland N. (eroli)


Lesenswert?

Hallo zusammen,

erstmal vielen Dank für eure Antworten :-) Eines Vorweg: ES KLAPPT JETZT 
:-)

> Nimm den ganzen Klimmbim erst mal runter an diesem Pin erst mal runter.
> Du brauchst nur den 10k Widerstand nach Vcc (also 5V).
> Und selbst wenn du den weglässt müsste dein µC immer noch laufen.

Der Taster ist jetzt erstmal weg und noch klappt alles :-)

>>> Und check mal ob der Reset Pin auf hi liegt.
>>
>> Zwischen GND und Pin1 kann ich keine Nennenswerte Spannung messen.
>
> Das ist KEINE Aussage!

Mit keine "nennenswerte Spannung" meinte ich eine Spannung die bei bei 
wenigen minivolt lag, also quasi 0.

> So, nun sei bitte nicht böse über meine "Manöverkritik". Es soll dir und
> andern einfach helfen, Fehler besser zu beschreiben.
> Du hast ja auch, sehr positiv, auf die exakte Schaltung (Link)
> hingewiesen.

Kein Ding, ich hatte ja schon quasi damit gerechnet, dass ich mein 
Problem in etwa so beschreiben würde:
> "Ich hab da ne Schaltung (kein Bild dabei) und die geht nicht". Eine
> Stunde später im gleichen thread:" Kann mir denn keiner helfen?"
(Obgleich ich versuchte ihn genau zu schildern...)


So, wo lag mein Fehler?
Ich hatte alles erstmal nur mit Sockel des Microcontrollers auf dem 
Breadboard aufgebaut. Leider hat mir mein Hirn dabei einen Streich 
gespielt und ich hab mich beim Drehen des uC's im Kopf vertan, sodass 
quasi jeder Pin falsch belegt war... autsch

Dies habe ich jetzt korrigiert und dann kam die Ernüchterung: Nun 
leuchtete die LED nichtmals mehr. Auf Grund eurer Diskussion zwischen 
ActiveHigh und ActiveLow hab ich dann einfach mal das Messgerät an die 
LED gehalten und siehe da: Die Spannung war da und oszillierte sogar :-)
Also die Diode einfach umgedreht und nun geht es ganz wunderbar :-)

Der Vollständigheit halber sei erwähnt, dass mein Microcontroller 
derzeit immer noch mit internem Takt läuft. Das Umstellen würde ich 
wahrscheinlich sogar hinkriegen, jedoch gibt AVRStudio mir da sehr viele 
Auswahlmöglichkeiten, nämlich:
External Clock: Start-up time: 6CK + 0ms (+4ms / +64ms)
Internal RC Oscillator: 1MHz; Start-up time: 6CK + 0ms (1-8MHz, +4ms, 
+64ms)
External RC Oscillator ... - 0.9 MHz; Start-up time: 18CK + 0ms (+4ms, 
+64ms, 6CK)
External RC Oscillator 0.9 - 3MHz (sonst so wie der hier drüber)
External RC Oscillator 3.0 - 8MHz (sonst so wie der hier drüber)
External RC Oscillator 8.0 - 12.0MHz (sonst so wie der hier drüber)
External Low-Freq Crystal; Start-up time: 1KCK + 4ms (+64ms; 32KCK + 
64ms)
External Crystal/Resonator Low Freq,; Start-up time: 258CK + 4ms (+64ms; 
1KCK +0/4/64ms; 16KCK + 0/4/64ms)
External Crystal/Resonator Medium Freq,; Start-up time: 258CK + 4ms 
(+64ms; 1KCK +0/4/64ms; 16KCK + 0/4/64ms)
External Crystal/Resonator High Freq,; Start-up time: 258CK + 4ms 
(+64ms; 1KCK +0/4/64ms; 16KCK + 0/4/64ms)

So, ich tippe mal, dass ich einen External Crystal/Resonator einstellen 
sollte, doch welche Frequenz? Low, Middle oder High? Und welche Start-Up 
Time?

Noch eine Frage:
Wenn ich den Takt auf den internen ändere, kann ich dann den uC noch am 
STK500 programmieren? Kann ich das STK500 ebenfalls auf einen externen 
Takt einstellen?

Nochmal vielen Dank an alle helfenden Hände :-)

Ciao,
Eroli

von Jörn P. (jonnyp)


Lesenswert?

Na also, geht doch ;-)
Einen Quarz kannst du auch in das STK500 einstecken und den µC auf 
externen Takt umstellen.(Jumper beachten)
Mach dich aber erst mal schlau über die externen Taktmöglichkeiten des 
µC.
Es gibt dann Oszillator und Resonator /Quarz. Welche fuses zu  setzen 
sind ist im Datenblatt genau beschrieben (System Clock). Es kommt also 
auch darauf an, welchen Taktfrequenz du verwenden willst. Ein sehr 
häufiger Fehler ist auch eine zu hohe Programmierfrequenz (ISP-Clock). 
Diese Freq. muss kleiner sein, als 1/4 der Clockfreqenz. D.h. wenn der 
µC jetzt mit
1MHz taktet muss deine ISP-Freq. kleiner sein als 250kHz.

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.