Forum: Mikrocontroller und Digitale Elektronik Erster Aufbau - AVR Schaltung


von Me D. (quorr)


Lesenswert?

Hallo miteinander!

Ich hoffe nun auch bald in die Welt der Mikrocontroller einsteigen zu 
können. Ein paar Teile sind zwar noch unterwegs, aber ich denke, diese 
treffen bis zum Wochenende ein :).

Trotzdem habe ich mir schon einmal Gedanken gemacht, wie ich meine erste 
Schaltung aufbauen möchte. Zum Programmieren habe ich einen USBprog 
Adapter.

Hier erst mal der Plan:
http://quorr.de/temp/images/erster_plan.png
Das ist meine erste Eagle Zeichnung - ich hoffe ihr versteht, wie ich 
das meine.

Ich beziehe mich auf das Handbuch unter 
http://atmel.com/dyn/products/product_card.asp?part_id=2014
( ATmega32(L)  (346 pages, revision M, updated 5/08) )

So, nun die Fragen:

1. Quarz

Für meinen ersten Aufbau benötige ich doch nicht zwingend ein Quarz 
oder?
Für spätere Versuche, wenn ich einen Quarz ranhängen möchte, welche 
Frequenz muss der haben?

(Handbuch S.26)
For resonators, the maximum frequency is 8 MHz with CKOPT unprogrammed 
and 16 MHz with CKOPT programmed.

Heißt das (wildes Raten), wenn ich den CKOPT-Fuse -> 0 setze, kann ich 
einen 16MHz Quarz benutzen?

2. Programmierung

Ich möchte ja den USBprog Adapter unter Linux mit AVRDUDE verwenden.

2.1 Stromquelle

Wenn ich den entsprechenden Jumper setze (1-2 -> 5V vom USB über 
Schottky Diode) brauche ich keine andere Spannungsquelle mehr für meine 
Schaltung? (http://www.embedded-projects.net/index.php?page_id=148)

2.2. dumme Frage

Woher erkennt der Mikrocontroller, das er jetzt programmiert wird? Gibt 
das Programmiergerät Spannung auf den Resetpin und dadurch kann man den 
µC programmieren?

2.3 Anschlussplan USBprog

Ich bin mir nicht ganz sicher, ob es so passt wie ich in dem Plan 
eingezeichnet habe. Ich habe mir einfach die Verbindung unter dem Link 
von 2.1 rausgesucht... Kann das jemand vielleicht mal kurz anschauen?

3. Schaltung

3.1 LEDs

Benötigen noch einen Vorwiderstand! Den habe ich in der Zeichnung 
vergessen.

(5V - 2.4V) / 0.02A = 130 Ohm

Aber ansonsten kann ich die schon direkt anschließen oder?

DC Current per I/O Pin ... 40.0 mA (S. 287)

4. Fuses

Ich finde irgendwie in dem Handbuch keine Übersicht über alle Fuses. 
Gibt es die noch mal irgendwo extra?


Ich muss sagen, der Einstieg in diese Welt ist wirklich nicht leicht - 
finde zumindest ich. Ich hoffe ich konnte euch mit meinen Fragen 
amüsieren ;)

Gruß Mark

von Timmo H. (masterfx)


Lesenswert?

>Für meinen ersten Aufbau benötige ich doch nicht zwingend ein Quarz
>oder?
Nö, alle AVRs haben einen internen Oszillator (meist 1-8MHz), welcher 
standardmäßig aktiv ist. Beim Mega32 glaub ich auf 4 MHz. Aber steht ja 
im Datenblatt

>Für spätere Versuche, wenn ich einen Quarz ranhängen möchte, welche
>Frequenz muss der haben?
Egal, hauptsache innerhalb der Spec. des µCs. Beim ATmega32 darfst du 
bis 16Mhz, einige können auch mehr (steht ja im Datenblatt). Für genaue 
Baudraten gibts extra "krumme" Quarze mit denen man besser an die 
Baudrate rankommt, als mit 4,8 oder 16 MHz. Ich würde auf das Board 
ruhig schon einen sockel an XTAL vorsehen mit 22pF Kerkos.

>2.1 Stromquelle
Der µC muss selber auch ne Spannungsversorgung haben. Die Schottky dient 
imho nur als Schutz für USBprog

>2.2. dumme Frage
Genau, erst kommt ein Reset und dann werden die MISO,MOSI Pins 
stimuliert.

>2.3 Anschlussplan USBprog
Sieht imho richtig aus.
Ich würde die Resetschaltung nochmal angucken. Wenigstens ein Pullup 
sollte da noch ran.

Du solltest zwischen VCC und GND noch nen 100nF packen. Und am besten 
auch noch einen etwas größeren Elko (z.B. 47uF). Kannst dich auch 
hiervon ein wenig inspirieren lassen: 
http://www.roboternetz.de/wissen/index.php/RN-Control

Oder eben hier im Artikelbereich gibts auch einige Grundschaltungen

>3.1 LEDs
Ja kannst du.

>4. Fuses
http://www.mikrocontroller.net/articles/AVR_Fuses

von AVRFan (Gast)


Lesenswert?

(Nur die Fragen, die ich schnell beantworten konnte)

>Hier erst mal der Plan:

Es fehlen Vorwiderstände für die LEDs sowie ein Pullup-Widerstand für 
den Reset-Pin.  Sonst soweit überflogen OK.

>Für meinen ersten Aufbau benötige ich doch nicht zwingend ein Quarz
>oder?

Nein, Du kannst den AVR auch vom internen Oszillator (kein Quarz --> 
nicht so furchtbar frequenzgenau) takten lassen.  Das ist auch die 
Fuse-Konfiguration im Auslieferungszustand. Einen Quarz brauchst Du z. 
B. für den UART (zeitkritisch) oder wenn Du eine Uhr programmieren 
willst (soll ja nicht 10 min pro Tag falsch gehn) oder wenn Du einen 
besonders schnellen Takt willst (intern nur 1 MHz).

>Für spätere Versuche, wenn ich einen Quarz ranhängen möchte, welche
>Frequenz muss der haben?

Alles bis max. 20 MHz geht ("V"-Controllerversionen nur 10 MHz). 
Richtet sich nach der Anwendung.

>Heißt das (wildes Raten), wenn ich den CKOPT-Fuse -> 0 setze, kann ich
>einen 16MHz Quarz benutzen?

Seh ich auch so.

>Woher erkennt der Mikrocontroller, das er jetzt programmiert wird? Gibt
>das Programmiergerät Spannung auf den Resetpin und dadurch kann man den
>µC programmieren?

Nein, gerade anders herum.  Er zieht den Resetpin für die Dauer der 
Programmierung auf GND.  Es gibt auch einen zweiten Programmiermodus mit 
in einigen speziellen Punkten erweiterten Möglichkeiten (dieser Modus 
wird nicht von allen Programern unterstützt). Dort wird eine Spannung 
von 12 V auf den Resetpin (nur auf diesen!) gegeben.  Heißt deshalb 
"High-Voltage-Programming".

>Benötigen noch einen Vorwiderstand! Den habe ich in der Zeichnung
>vergessen.

Jaha.

>Aber ansonsten kann ich die schon direkt anschließen oder?

Na klar.  Nicht direkt (sondern via Treibertransistoren) anschließen 
sollte man u. a. Lautsprecher, Motoren und Relais.

>DC Current per I/O Pin ... 40.0 mA (S. 287)

Ja. Außerdem gibts noch Beschränkungen für den Port-Summenstrom und den 
Controller-Summenstrom. Stehen im Data Sheet, hinten bei den "Electrical 
Characteristics".

>Ich finde irgendwie in dem Handbuch keine Übersicht über alle Fuses.
>Gibt es die noch mal irgendwo extra?

Hm, also im Atmega48/88/168 Data Sheet sind die Fuses und ihre 
Bedeutungen schön in Tabellenform beschrieben ("27.2 Fuses").  Davor 
daselbe für die Lock Bits, danach für die Signature Bytes und das 
Calibration Byte.

>Ich muss sagen, der Einstieg in diese Welt ist wirklich nicht leicht -

Halb so wild.

Guten Start!

von Michael H* (Gast)


Lesenswert?

reset-beschaltung fehlt,
vorwiderstände für leds fehlen,
taster haben keinen pulldown, oder sollen nach masse schalten, da der 
atmel interne pullups hat.
junctions fehlen.

von let (Gast)


Lesenswert?

Als Ergänzung:

Die Taster sollten nach GND schalten. So kann man mit Hilfe
der internen Pullups die Schaltzustände eindeutig erkennen.

Es ist zwar nicht nötig aber vielleicht nützlich die Taster
auch über Vorwiderstände anzuschließen. Dann kann bei einem
falsch konfigurierten Ports nichts kaputt gehen.

von Peter D. (peda)


Lesenswert?

Mark S. wrote:

> Wenn ich den entsprechenden Jumper setze (1-2 -> 5V vom USB über
> Schottky Diode) brauche ich keine andere Spannungsquelle mehr für meine
> Schaltung? (http://www.embedded-projects.net/index.php?page_id=148)

Auch wenn es viele Bastler cool finden, der USB-Anschluß ist kein 
Experimentiernetzteil.

Man macht schnell mal nen Kurzschluß oder schließt was falsch an und das 
nicht nur als Anfänger.
Ein toter USB-Anschluß oder sogar ein schadhaftes Motherboard ist dann 
vielleicht nicht mehr so cool.

Besser ein Netzteil mit einstellbarer Strombegenzung (Wandwarze mit 2 * 
LM317 als billige Selbstbaulösung geht auch).


Peter

von Mike J. (Gast)


Lesenswert?

Es fehlen alle Abblock Kondensatoren!

Überall gehören noch Widerstände dazwischen, auch bei den Tastern.

Je nach Qualität der Spannung eine Begrenzung.

von Me D. (quorr)


Lesenswert?

Guten Mittag!

Ich möchte mich erst mal bei allen für ihre Hilfe bedanken! Ich habe 
jetzt noch ein paar Verbesserungen (aufgrund eurer Vorschläge) in meinen 
Plan einfließen lassen. Die neue Version könnt ihr hier bestaunen:

http://quorr.de/temp/images/v2.png

Ein paar Sachen sind mir noch nicht so ganz klar.

Mike J. wrote:
> Es fehlen alle Abblock Kondensatoren!

Wo müssten solche Kondensatoren verbaut werden?

Michael H* wrote:
> junctions fehlen.

Was versteht man unter junctions? Punkte wo sich die Leitungen kreuzen?

- Resetpin -

Stimmt diese Konstruktion so? Ich meine, nach dem was AVRFan geschrieben 
hat, müsste der Pin immer auf VCC liegen und nur zum Programmieren auf 
GND?

- Widerstände vor den Tastern -

Natürlich würde ich gerne meinen neuen µC schützen. Wie dimensioniere 
ich die Widerstände?

- USBprog -

Vielleicht eine blöde Frage, aber die VCC Spannung wird ja nun durch 
mein Netzteil geliefert - also brauche ich am USBprog keinen Jumper 
mehr? Ich möchte da nichts kaputt machen (vor allem am USBprog)!


Bin echt begeistert von der Freundlichkeit hier im Forum. Ich kenne 
Foren (damals von meinem Umstieg auf Linux), da werden Anfänger nicht so 
geduldig behandelt (um es mal vorsichtig auszudrücken)! Also nochmals 
vielen Dank an euch alle und ich hoffe ihr bleibt so nett ;).

Gruß Mark

von Nico E. (masta79)


Lesenswert?

Mark S. wrote:
> Guten Mittag!
>
> Ich möchte mich erst mal bei allen für ihre Hilfe bedanken! Ich habe
> jetzt noch ein paar Verbesserungen (aufgrund eurer Vorschläge) in meinen
> Plan einfließen lassen. Die neue Version könnt ihr hier bestaunen:
>
> http://quorr.de/temp/images/v2.png

Das sieht schonmal besser aus.

> Ein paar Sachen sind mir noch nicht so ganz klar.
>
> Mike J. wrote:
>> Es fehlen alle Abblock Kondensatoren!
>
> Wo müssten solche Kondensatoren verbaut werden?

Wenigstens erstmal zwischen VCC und GND, möglichst nah an der CPU. 
Generell aber überall wo du irgendeine Form von Versorgungs oder 
Referenz-spannung hast die u.U. belastet wird. Kleine 100n KeKos sind da 
voll ausreichend.

> - Widerstände vor den Tastern -
>
> Natürlich würde ich gerne meinen neuen µC schützen. Wie dimensioniere
> ich die Widerstände?

Die externen PullUps brauchst du nicht, einfach die internen pullups 
aktivieren, indem du die bits auf PORTD setzt. Falls du Vorwiderstände 
an die Taster machen willst, dann sollten die nicht zu gross sein, da du 
dir zusammen mit dem internen PullUp einen Spannungsteiler baust und 
ansonsten das Potential nicht sauber erkannt werden kann. Die internen 
pullups liegen bei 20-50kOhm. Die Vorwiderstände braucht man im 
Normalfall aber nicht, problematisch wird es halt nur wenn man den Port 
als Ausgang definiert und eine 1 ausgibt, da du somit einen Kurzschluss 
nach GND erzeugst. Die AVRs schalten in dem Moment aber normal ab.

Bei den LED Vorwiderständen kommt es natürlich darauf an was du für LEDs 
hast, die 150 sind aber im Normalfall ok. Einen netten kleinen Rechner 
gibts beim ELKO: 
http://www.elektronik-kompendium.de/sites/bau/1109111.htm

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Mark S. wrote:
> Guten Mittag!

Halloechen Mark ;)


> Ich möchte mich erst mal bei allen für ihre Hilfe bedanken! Ich habe
> jetzt noch ein paar Verbesserungen (aufgrund eurer Vorschläge) in meinen
> Plan einfließen lassen. Die neue Version könnt ihr hier bestaunen:
>
> http://quorr.de/temp/images/v2.png

Was ich da sehe: D2 ist ueberfluessig, die Jumper am Quarz machen keinen 
Sinn. Die externen Pullups fuer die Taster sind auch nicht notwendig.

LEDs werden ueblicherweise gegen GND geschalten, Deine Loesung ist aber 
auch moeglich. Den reset am ISP-Stecker solltest Du noch mit einem 45n 
abpuffern. Selbiges gilt fuer die Taster: der aktive (gedrueckte) 
Zustand sollte GND entsprechen.

AREF und AGND solltest Du (abgepuffert) ebenfalls immer anschliessen. 
Ebenfalls solltest Du den AVR selber nochmal mit 100n abblocken.

Die 10u bzw. 100n am 7805 sind reichlich klein bemessen. In richtung 
100u bzw. 470u solltest Du da gehen.


> Was versteht man unter junctions? Punkte wo sich die Leitungen kreuzen?

Ein Verbindungspunkt, der eine elektrische Verbindung darstellt. Richtig 
und da sehe ich dass die bei Dir fast alle fehlen. Wie hast Du das 
geschafft? Kann natuerlichd dann gut sein dass das alles nicht verbunden 
ist auf Deinem Board nachher.


> Natürlich würde ich gerne meinen neuen µC schützen. Wie dimensioniere
> ich die Widerstände?

?

> Vielleicht eine blöde Frage, aber die VCC Spannung wird ja nun durch
> mein Netzteil geliefert - also brauche ich am USBprog keinen Jumper
> mehr? Ich möchte da nichts kaputt machen (vor allem am USBprog)!

?

> Bin echt begeistert von der Freundlichkeit hier im Forum. Ich kenne
> Foren (damals von meinem Umstieg auf Linux), da werden Anfänger nicht so
> geduldig behandelt (um es mal vorsichtig auszudrücken)! Also nochmals
> vielen Dank an euch alle und ich hoffe ihr bleibt so nett ;).
>
> Gruß Mark

Weil Du's bist ;)

lg,
Michael

von Andreas K. (a-k)


Lesenswert?

Mark S. wrote:

> http://quorr.de/temp/images/v2.png

Wo kommt der Strom für den 5V-Regler her? Die Bezeichnungen +5V/-5V 
klingen ein bischen komisch. Spannungen bezieht man ja i.A. auf Masse 
(GND) und mit einer Diode zwischen -5V und GND gibt's einen prima 
Kurzschluss.

AVCC/AGND muss beschaltet werden. Egal ob der ADC benutzt wird oder 
nicht.

Häng die LEDs nicht ausgerechnet an Port C. Könnten dir sonst ein paar 
fehlen, denn von Haus aus sitzt da der JTAG-Port dran (die Txx Pins 
2-5), der für's Debugging vorgesehen ist und im Betrieb die Pins belegt. 
Kann man zwar per ISP abschalten, aber wenn du nicht grad an Pinmangel 
leidest, leg die LEDs nicht ausgerechnet an Pins C2-5.

Die Pullups an den Schaltern sind nett, aber nicht zwingend, weil man 
dafür auch die internen Pullups des AVR nutzen kann.

> Wo müssten solche Kondensatoren verbaut werden?

Zwischen VCC und dem dazu gehörenden GND-Pin. Jeweils einer pro 
Pin-Paar. So dicht wie möglich dran. Keramik-Typ, kein Elko, kein 
Foilentyp.

> Was versteht man unter junctions? Punkte wo sich die Leitungen kreuzen?

Jo.

> Stimmt diese Konstruktion so? Ich meine, nach dem was AVRFan geschrieben
> hat, müsste der Pin immer auf VCC liegen und nur zum Programmieren auf
> GND?

Stimmt so. In störempfindlicher Umgebung hängt man gern noch einen 
Kondensator 10-100nF an Masse, aber in normaler Umgebung ist das nicht 
nötig.

von Andreas K. (a-k)


Lesenswert?

Michael G. wrote:

> AREF und AGND solltest Du (abgepuffert) ebenfalls immer anschliessen.
> Ebenfalls solltest Du den AVR selber nochmal mit 100n abblocken.

AVCC ja, aber grad AREF ist so ziemlich der einzige Pin, den man 
üblicherweise offen lässt. Allenfalls 1-100nF gegen GND, wenn der ADC 
verwendet wird. Andernfalls schliesst man die interne Referenzspannung 
allzu leicht kurz.

> Die 10u bzw. 100n am 7805 sind reichlich klein bemessen. In richtung
> 100u bzw. 470u solltest Du da gehen.

Wenn gleichgerichtete Wechselspannung am Eingang, die erst geglättet 
werden muss, ja. Wenn das Gleichspannung ist, dann passt das hingegen 
genau so wie gezeigt. Ein 470µF Monster hinter dem Regler ist schlicht 
Unfug. Sinnvoller sind 10µF über die Platine verteilt. Da hier nicht 
viel ist, tut es einer davon in der Nähe des Controllers, muss aber 
nicht sein.

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Andreas Kaiser wrote:
> Michael G. wrote:
>
>> AREF und AGND solltest Du (abgepuffert) ebenfalls immer anschliessen.
>> Ebenfalls solltest Du den AVR selber nochmal mit 100n abblocken.
>
> AVCC ja, aber grad AREF ist so ziemlich der einzige Pin, den man
> üblicherweise offen lässt. Allenfalls 1-100nF gegen GND, wenn der ADC
> verwendet wird. Andernfalls schliesst man die interne Referenzspannung
> allzu leicht kurz.

Hmm... das ist mir neu. AFAIR hab ich meinen Grundaufbau mal aus 
irgendeiner Referenz uebernommen, evt. hier aus dem Tutorial. Konnte 
aber nichts finden. Das Problem ist doch dass die interne 
Referenzspannung recht ungenau ist. Und sofern ich mich erinnere kann 
man das doch auf extern konfigurieren, ohne jetzt nachgeschaut zu 
haben...?

von Andreas K. (a-k)


Lesenswert?

Michael G. wrote:

> Hmm... das ist mir neu. AFAIR hab ich meinen Grundaufbau mal aus
> irgendeiner Referenz uebernommen, evt. hier aus dem Tutorial.

Ja, das Tutorial hatte früher irgendeinen AT90-Typ drin, keinen ATMega. 
Da galten etwas andere Regeln, weil die keine interne Referenz hatten.

> Das Problem ist doch dass die interne
> Referenzspannung recht ungenau ist.

Ist sie, aber die ADC-Referenz lässt sich auch intern auf AVCC 
umprogrammieren ohne was am Pin drehen zu müssen. Erst wenn's drauf 
ankommt hängt man eine externe Präzisionsreferenz an den Pin. Aber da 
hier von präziser Analogmessung nicht die Rede ist, bleibt der schlicht 
offen.

von let (Gast)


Lesenswert?

Zu den Tastern:
> Die Vorwiderstände braucht man im
> Normalfall aber nicht, problematisch wird es halt nur wenn man den Port
> als Ausgang definiert und eine 1 ausgibt, da du somit einen Kurzschluss
> nach GND erzeugst. Die AVRs schalten in dem Moment aber normal ab.

Beim AVR habe ich das noch nicht ausprobiert, PICs und LPCs
(zumindest die 21xx) können Kurzschlüsse nicht ab. Der entsprechende
Ausgang geht kaputt. Manchmal läßt sich der Pin dann noch als Eingang
verwenden.

Welcher Wert? Er muß den Strom halt auf einen zulässigen Wert
begrenzen - wobei ich hier nicht das Maximum von 40mA ansetzen
würde - und darf nicht so groß sein das der Pin nicht weit
genug runtergezogen werden kann. Ich denke das man da mit 1k
nichts falsch macht.
In der Serienfertigung kann man die Widerstände weglassen. Aber
bei einer Experimentierschaltung mit ebenso experimenteller
Software würde die schon einbauen.

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Andreas Kaiser wrote:
> Michael G. wrote:

> Ist sie, aber die ADC-Referenz lässt sich auch intern auf AVCC
> umprogrammieren ohne was am Pin drehen zu müssen. Erst wenn's drauf
> ankommt hängt man eine externe Präzisionsreferenz an den Pin. Aber da
> hier von präziser Analogmessung nicht die Rede ist, bleibt der schlicht
> offen.

OK, bei meiner naechsten Schaltung mache ich es so. Danke fuer den 
Hinweis.

von Andreas K. (a-k)


Lesenswert?

let wrote:

> Beim AVR habe ich das noch nicht ausprobiert, PICs und LPCs
> (zumindest die 21xx) können Kurzschlüsse nicht ab.

Weshalb man mit einer 300mA Wandwarze als Stromversorgung auch besser 
dran ist als mit eine PC-Netzteil.

Hierauf bezogen: Ein 78L05 an Stelle des 7805 als Spannungsregler kann 
einem manche Fehler ausbügeln, weil nicht so viel Strom fliesst, dass es 
gleich knallt. AVRs sind recht robuste Kerlchen, bei den 100mA eines 
78L05 fliegen die nicht sofort weg.

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.