Forum: Mikrocontroller und Digitale Elektronik ATmega32 - minimale Bauteile


von Gernot F. (gernotfrisch)


Lesenswert?

Hallo,
ich versuche einen ATmega32 einzubauen. Dazu will ich ein Quarz
verwenden, keinen Oszillator (whatever that is?). Kann mal einer bitte
kucken:
<C>

                                          :ISP:
            R1    ------------------------RESET
            10kR /                   -----SCK
     +5V---+-O---+-Reset::PC5       / ----MISO
           |       PD0::::PC4       |/ ---MOSI
         C1=       PD1::::PC3       ||/   GND---GND
       47pF|       PD2::::PC2       |||   VCC---+5V
           |       PD3::::PC1       |||
     GND--/        PD4::::PC0       |||
     +5V-----------VCC:::AGND---GND |||
     GND-----------GND:::AREF---+5V |||
            -------XTAL1:AVCC-------/||
      +-+--/   ----XTAL2::PB5        ||
      | |     /    PD5::::PB4-------/ |
    C2= |     |    PD6::::PB3--------/
  27pF| |     |    PD7::::PB2
GND---+ ^     |    PB0::::PB1--
      | Quarz |        ^       \
    C2= Y 8MHz|     ATmega32   |
  27pF| |     |               / Taster
      +-+-----/                |
                               |
                               O R2
                               | 1kR
                               |
                              GND
</C>

Ich hab 5V aus einem 8505 wo ich +5V schreibe
Gibt es eine Polung am Quarz?
Stimmen die C2 wo sie sind?
Ist der Taster so gut angeschlossen?
Fehlt was? (Kondenstoren?)
Wie + wo würde ich einen Photowiderstand mit 1kOhm amschließen?

Danke!

von The Daz (Gast)


Lesenswert?

Die Reset Schaltung ist falsch. Der gemeinsame Kontakt von R1 und C1
muessen mit dem reset-pin des uC verbunden werden.

von johnny.m (Gast)


Lesenswert?

Woher kommt eigentlich diese Weisheit mit den 47 pF an Reset? Hab ich
jetzt schon tausend mal gesehen. Da muss sich irgend ein Dreckfuhler
seit Ewigkeiten halten... Also 47 pF kannste auch direkt weglassen, die
kriegste schon fast durch Streukapazitäten. Nimm 47 nF, macht mehr
Sinn...

von johnny.m (Gast)


Lesenswert?

...Und The Daz hat natürlich auch Recht...

von The Daz (Gast)


Lesenswert?

- Nein, der Quarz kann so oder so eingebaut werden.
- Der Taster ist ok, internen pull-up nicht vergessen zu aktivieren
- Bau noch nen 100nF Blockkondensator (Kerko) zwischen +5V und GND so
dicht wie moeglich an den uC

von johnny.m (Gast)


Lesenswert?

...Und noch einen 100nF zwischen AVCC und AGND...

> ...Oszillator (whatever that is?)...

Ein Oszillator ist ein Baustein, der neben einem Quarz die nötige
Elektronik enthält, um den Quarz zum Schwingen zu bringen (welch
schöner Reim...). Da Quarzoszillatoren im Vergleich zu Quarzen sehr
teuer sind und außerdem der µC bereits die Oszillator-Elektronik
enthält, macht ein externer Oszillator nur dann Sinn, wenn Du mehrere
Bausteine mit demselben Takt betreiben willst.

von Sebastian (Gast)


Lesenswert?

Zwischen Plus und Masse sollte möglichst nah am Controller nochn C hin.
100n Kerko oder so.
So wie dein Schalter angeschlossen ist musst du halt interne Pullups
aktivieren (ich geh mal davon aus dass der Mega32 auch welche hat).

Sebastian

von Gernot F. (gernotfrisch)


Lesenswert?

Die 47pF kommen von hier:
http://www.mikrocontroller.net/tutorial/equipment
<C>
                                          :ISP:
        R1        ------------------------RESET
        10kR     /                   -----SCK
     +5V-O-+-----+-Reset::PC5       / ----MISO
           |       PD0::::PC4       |/ ---MOSI
         C1=       PD1::::PC3       ||/   GND---GND
       47nF|       PD2::::PC2       |||   VCC---+5V
           |       PD3::::PC1       |||
     GND--/        PD4::::PC0       |||
     +5V-----------VCC:::AGND---GND |||
     GND-----------GND:::AREF---+5V |||
            -------XTAL1:AVCC-------/||
      +-+--/   ----XTAL2::PB5        ||
      | |     /    PD5::::PB4-------/ |
    C2= |     |    PD6::::PB3--------/
  27pF| |     |    PD7::::PB2
GND---+ ^     |    PB0::::PB1--
      | Quarz |        ^       \
    C2= Y 8MHz|     ATmega32   |
  27pF| |     |               / Taster
      +-+-----/                |
                               |
                               O R2
                               | 1kR
                               |
                              GND
</C>

Passt das so?

von johnny.m (Gast)


Lesenswert?

Sieht ganz ordentlich aus, bis auf dass die besagten
Abblockkondensatoren noch fehlen...

von The Daz (Gast)


Lesenswert?

Fuer den Fotowiderstand kommt die Beschaltung auf die Kennlinie des
Widerstandes an und auf den Einsatzbereich. Ist ja eher ein analoges
Bauteil womit sich der AD-Eingang mit nem simplen Spannungsteiler
anbieten wuerde. Also :

   +5V o---Rx---+---LDR---o GND
                |
                V
               ADC

von The Daz (Gast)


Lesenswert?

Wichtig : AREF nicht mit +5V verbinden. Das ist ein Ausgang und sollte
mit nem 100nF Kerko nach GND entkoppelt werden. Ausserdem scheinst du
nicht einen ATMega32 zu benutzen, der hat naemlich 40 pins. Wenns also
doch der ATMega8 ist, dann schliesst du die LDR Schaltung an pin 23
(PC0) an.

von johnny.m (Gast)


Lesenswert?

Hey, AREF ist zunächst mal kein Ausgang, sondern der Eingang für die
externe Referenzspannung! Wenn man die interne Referenz benutzt, dann
ist es ein Ausgang!

von The Daz (Gast)


Lesenswert?

Stimmt. Habs gerade nachgelesen. Sorry. Ist also ok mit AREF an +5V, es
sei denn, man will etwas genauer messen und braucht deshalb eine
stabilere Referenz.

von johnny.m (Gast)


Lesenswert?

OK, obs Eingang oder Ausgang ist, hängt eben davon ab, ob man die
interne oder externe Referenz benutzt. Wenn Gernot sich ein allgemeines
Experimentierboard bauen will, ist es vielleicht sogar am besten, beide
Möglichkeiten in Auge zu fassen (Autsch...) und einen Jumper
einzuplanen, mit dem man den AREF-Pin auch von AVCC trennen kann und
eben auch den Kondensator vorzusehen...

von Gernot F. (gernotfrisch)


Lesenswert?

<C>
                                          :ISP:
        R1        ------------------------RESET
        10kR     /                   -----SCK
     +5V-O-+-----+-Reset::PC5       / ----MISO
           |       PD0::::PC4       |/ ---MOSI
         C1=       PD1::::PC3       ||/   GND---GND
       47pF|   *2  PD2::::PC2 *1    |||   VCC---+5V
           |   |   PD3::::PC1 |     |||
     GND--/    V   PD4::::PC0 V     |||
     +5V-----------VCC:::AGND---GND |||
     GND-----------GND:::AREF---+5V |||
            -------XTAL1:AVCC-------/||
      +-+--/   ----XTAL2::PB5        ||
      | |     /    PD5::::PB4-------/ |
    C2= |     |    PD6::::PB3--------/
  27pF| |     |    PD7::::PB2
GND---+ ^     |    PB0::::PB1--
      | Quarz |        ^       \
    C2= Y 8MHz|     ATmegaXX   |
  27pF| |     |               / Taster
      +-+-----/                |
                               |
                               O R2
                               | 1kR
 :Photowiderstand:             |
       R2      LDR            GND
       1kR     1kR
+5V o---O-------O---o GND
             |
             V
            ADC


*1: 100nF zwischen AVCC & AREF, nahe am uC
*2: 100nF zwischen VCC  &  GND, nahe am uC
</C>
Nochmal die 2 Kondensatoren für VCC und AVCC dazu. OK - die Schaltun
ist allgemein für einen ATmegaXX.
Was heisst das mit "interne oder externe Referenz"?
Mach ich mit +5V was kaput?

von johnny.m (Gast)


Lesenswert?

Was heißt hier 'MegaXX'? Musst Dich schon etwas spezifizieren. Sieht
mit nach Mega8 und kompatible aus. Aber was mir jetzt noch auffällt:
Der SCK-Anschluss hat nichts an AVCC verloren! Der ist an PB5!

von johnny.m (Gast)


Lesenswert?

> *1: 100nF zwischen AVCC & AREF, nahe am uC

macht natürlich auch nicht viel Sinn. Eher von AVCC nach AGND. Und
zusätzlich einen von AREF nach AGND, es sei denn, Du willst den ADC gar
nicht nutzen. Wenn Du nicht sicher bist, ob Du externe oder interne
Referenz nehmen willst, dann machs flexibel...

von Gernot F. (gernotfrisch)


Lesenswert?

Oh weia! Bin verrutscht bei hinschaun. OK. Kann ich den AREF auch ganz
weglassen? Für was ist denn der?

So besser:
<CODE>
                                          :ISP:
        R1        ------------------------RESET
        10kR     /                   -----SCK
     +5V-O-+-----+-Reset::PC5       / ----MISO
           |       PD0::::PC4       |/ ---MOSI
         C1=       PD1::::PC3       ||/   GND---GND
       47pF|   *2  PD2::::PC2 *1    |||   VCC---+5V
           |   |   PD3::::PC1 |     |||
     GND--/    V   PD4::::PC0 V     |||
     +5V-----------VCC:::AGND---GND |||
     GND-----------GND:::AREF---+5V |||
            -------XTAL1:AVCC---+5V |||
      +-+--/   ----XTAL2::PB5------/ ||
      | |     /    PD5::::PB4-------/ |
    C2= |     |    PD6::::PB3--------/
  27pF| |     |    PD7::::PB2
GND---+ ^     |    PB0::::PB1--
      | Quarz |        ^       \
    C2= Y 8MHz|     ATmegaXX   |
  27pF| |     |               / Taster
      +-+-----/                |
                               |
                               O R2
                               | 1kR
 :Photowiderstand:             |
       R2      LDR            GND
       1kR     1kR
+5V o---O-------O---o GND
             |
             V
            ADC
</CODE>

von The Daz (Gast)


Lesenswert?

Die Referenz des ADCs sagt diesem, fuer welche Spannung der maximale
ADC-Register wert ermittelt werden soll. Wenn du also Spannungen
zwischen 0 und 5V messen willst, dann setzt du AREF auf 5V. Wenn du nur
0 bis 2,5V messen willst, wuerdest du mit AREF = 5V nicht die volle
Genauigkeit nutzen sondern eben nur 9 bzw. 7 statt 10 bzw. 8 Bit. AREF
sollte so dicht wie moeglich an der maximalen zu messenden Spannung
liegen (etwas darueber) und sehr stabil sein um die maximale
Genauigkeit des ADCs zu erhalten. Die interne Referenz liegt bei 2,56V
und ist relativ stabil verglichen mit der Versorgungsspannung. Wenn du
die interne Referenz nutzt, wird diese ueber den AREF Pin ausgegeben.
In diesem Fall darf der AREF Pin nicht mit +5V verbunden werden. Wenn
du eine andere (externe) Referenz nutzen willst, ist AREF ein Eingang
an den die Referenzspannung angelegt werden muss. Ob du die eine oder
andere Variante waehlst haengt von den Anforderungen und der ADC
Kondifuration ab, die du in deinem Programm festlegst.

von Gernot F. (gernotfrisch)


Lesenswert?

OK. Wie sag ich dem Programm: Ich hab am AREF +5V angelegt? Das will ich
nämlich dann machen, weil ich meinen LDR mit 5V betreibe.

von The Daz (Gast)


Lesenswert?

Und wenn du es richtig huebsch machen willst, baust du fuer AVcc noch ne
schoene LC-Glaettung zur Entkopplung von Vcc. Ist aber vermutlich nicht
noetig. Ich wuerde bei ner Experimentirr-Platine den ADC ohnehin nur
mit 8 Bit Genauigkeit und zur einfacheren Nutzung linksjustiert
verwenden.

von The Daz (Gast)


Lesenswert?

"Das will ich nämlich dann machen, weil ich meinen LDR mit 5V
betreibe". Tust du das ? Wenn der LDR nicht belichtet wird, hat er
doch 1K Widerstand, oder ? Dann wuerde die Spannung am ADC genau 2,5V
betragen. Deshalb meine Frage nach der Kennlinie. Wie du den ADC
konfigurierst steht im Datenblatt.

von Gernot F. (gernotfrisch)


Lesenswert?

"Wenn der LDR nicht belichtet wird, hat er
doch 1K Widerstand, oder ? Dann wuerde die Spannung am ADC genau 2,5V
betragen"

Ach!? <kopfkratz> dann lass' ich das Kabel am AREF weg und hab 2.56V >
2.5V = super.

von The Daz (Gast)


Lesenswert?

Schau am besten mal das Datenblatt zum LDR an. Ich kann mich auch irren.
Ich verbaue sowas nicht und bin nicht sicher, ob der Nominalwiderstand
auf den belichteten oder unbelichteten Betrieb bezogen ist. Du solltest
beide Werte kennen und die Schaltung entsprechend dimensionieren, wobei
der ADC gerne eine niedrige Quellimpedanz von unter 10k hat.

von The Daz (Gast)


Lesenswert?

Wenn der LDR 1k im belichteten Zustand hat und einen hoeheren Widerstand
im unbelichteten Zustand, solltest du die Positionen von R2 und LDR
vertauschen. Ansonsten gilt mein erster Vorschlag. In beiden Faellen
kannst du die interne Referenz nutzen und brauchst keine externe
Beschaltung des VREF Pins.

von Karl heinz B. (kbucheg)


Lesenswert?

Du sagst ihm nicht, dass da 5V liegen. Das interessiert
den ADC naemlich ueberhaupt nicht.

Aber in den Konfigurationsregistern gibt es eine Einstell-
möglichkeit, bei der man auswählt:

   1   ADC Referenz von AVcc nehmen
   2   interne Referenzspannung hernehmen
   3   externe Referenzspannung hernehmen

bei 1 und 2 wird die Referenzspannung zusätzlich am AREF
Ausgang ausgegeben. Bei 3 fungiert der AREF als Eingang.
Jede Spannung (natuerlich in Grenzen) die du dort anlegst
wird als Referenzspannung hergenommen.

Den Fehler hab ich auf meinen Experimentierboard auch gemacht.
Ich hab AREF fix mit AVcc verbunden. Ist zwar so für sich
alleine genommen noch kein Beinbruch, ich kann halt mit dem
ADC nur Spannungen ausmessen bei denen AVcc (also 5V) mit einem
Wert von 1023 am ADC ausgegeben wird. Bei der nächsten Version
kommt da ein Jumper hin, sodass ich den AREF von AVcc abkoppeln
kann. (Und ich werde auch die AREF Spannung etwas besser sieben
als bisher, die untersten 2, manchmal auch 3 Bit des ADC sind nicht
wirklich stabil, wenn ich ein Poti als Spannungsteiler an den ADC
anschliesse).

von Michael U. (Gast)


Lesenswert?

Hallo,

die Unart, ARef an AVcc zu hängen, ist mit schon mehrmals aufgefallen,
u.a. beim myAVR meines Kollegen.

Wenn ich AVcc will, setze ich das im Register.
An ARef einen 100nF gegen Masse. Dann knn man problemslos eine externe
Referenzspannung anlegen, wenn man will.
Ich weiß auch nicht so genau, was der interne MOSFet davon hält, wenn
er z.B. die internen rund 2,5V gegen die externe AVcc schalten muß,
wenn ich auf dem myAVR die Referenz auf intern setze.

Was mir noch aufgefallen ist (habe ich auf Anhieb im Datenblatt des
Mega8 und Mega16 nicht gefunden): der Analog-Port muß als Eingang ohne
Pullup programmiert sein, sonst misst der ADC nur Mist...

Gruß aus Berlin
Michael

von johnny.m (Gast)


Lesenswert?

@Michael:

> die Unart, ARef an AVcc zu hängen, ist mit schon mehrmals
> aufgefallen, u.a. beim myAVR meines Kollegen.

Die 'Unart', den AREF-Pin überhaupt mit AVCC zu verbinden ist
'historisch bedingt' und kommt von den älteren AVRs (AT90Sxxxx), die
noch nicht über die Möglichkeit verfügten, dies intern zu
konfigurieren. Ich habe da natürlich auch wieder nicht dran gedacht,
aber es ist eine 'eingefahrene Angewohnheit', die bei Leuten, die
noch mit den älteren AVRs gearbeitet haben u.U. schwer abzustellen
ist.

Aber wie schon weiter oben gesagt: Wenn man ein einigermaßen universell
einsetzbares Experimentierboard bauen will, dann sollte man den o.g.
Kondensator gegen Masse am AREF vorsehen und zusätzlich eine
Anschlussmöglichkeit für eine externe Referenzspannung.

Gruß

Johnny

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.