Forum: Mikrocontroller und Digitale Elektronik Quarz fehlerhaft?


von Thomas K. (thomas99)


Angehängte Dateien:

Lesenswert?

Hallo zusammen!

Ich habe ein Problem mit meiner Schaltung, vielleicht könnt ihr mir ja 
weiterhelfen...
Ich habe an einen Mikrocontroller einen 10MHz Quarz angeschlossen, der 
eigentlich für meinen Takt sorgen soll. Außerdem ist noch ein 
Stepup-Spannungswandler mit der zugehörigen Schaltung auf der Platine, 
um den uC über zwei Batterien mit einer konstanten Spannung von 5V zu 
versorgen.
Um ihn zu testen habe ich ein kurzes Programm geschrieben, dass einfach 
nur im 5-Sekunden-Takt eine LED an und aus schaltet, um zu sehen ob 
alles funktioniert.
1
#define F_CPU 10000000UL
2
#include <avr/io.h>
3
#include <util/delay.h>
4
5
int main ()
6
{
7
    DDRD |= (1<<PD0);
8
    
9
    while(1)
10
    {  
11
        PORTD ^= (1<<PD0);
12
        _delay_ms(5000);
13
    }
14
}
Wenn ich jetzt die Fuses im AtmelStudio folgendermassen einstelle:
-SUT_CKSEL auf "EXTOSC_8MHZ_XX_8KCK_65MS" (maximale "Aufwachzeit", >= 
8MHz)
-CKDIV8 aus (also den Takt nicht teilen)

flackert die LED nur unregelmässig, mit etwa 5Hz. (Geschätzt, nicht 
gemessen, aber auf jeden Fall viel zu schnell und zu unregelmässig.)

Wenn ich dagegen CKDIV8 einschalte und F_CPU auf 1250000 anpasse bekomme 
ich einen sauberen Wechsel mit exakt 5s hin.

Kann jemand mir einen Tipp geben, woher dieses Flackern kommen kann?

Bis jetzt habe ich folgendes probiert:
->Die Platine auf Kurzschlüsse geprüft, und die komplette Platine mit 
neuen Bauteilen komplett von vorne aufgebaut (Conrad war so freundlich, 
mir gleich mehrere Platinen zu liefern ;))

->Den Takt über den Fuse "CLKOUT" am Pin B-1 nach aussen gegeben und 
dort mit dem Oszi ausgemessen: ist bei den Fuses der Quarz ausgewählt 
(ohne CLKDIV8) gibt der Pin auch sauber 9.999x MHz aus.

->Da ich EMV-Störungen als Quelle für das Flackern vermutet habe, habe 
ich die Spule des Stepup-Wandlers herausgenommen und über zwei ca. 5cm 
lange Kabel wieder verbunden. Auch wenn ich die Spule so von der Platine 
"entfernt" habe bleibt das Flackern unverändert. Die Spannung am uC 
bleibt davon unbeeindruckt bei 5V.

-> Meine Aktuelle Platine ist eine verkleinerte Version einer anderen 
Platine, die tadellos funktioniert. (Gleicher Schaltplan, nur neues 
Layout).

Kann es wirklich sein, dass ein anderer Aufbau so starke Störungen 
hervorruft?
Woran könnte es sonst liegen, das die LED bei 10Mhz nur flackert, obwohl 
der CLKOUT-Pin ein sauberes Signal liefert?


Sorry für den vielen Text, ich hoffe es ist alles drinnen, was von 
Interesse ist.

Thomas

PS: Die Beschaltung des uC und die Spannungsversorgung hab ich 
angehängt.

von c-hater (Gast)


Lesenswert?

Thomas K. schrieb:

> ->Da ich EMV-Störungen als Quelle für das Flackern vermutet habe, habe
> ich die Spule des Stepup-Wandlers herausgenommen und über zwei ca. 5cm
> lange Kabel wieder verbunden. Auch wenn ich die Spule so von der Platine
> "entfernt" habe bleibt das Flackern unverändert. Die Spannung am uC
> bleibt davon unbeeindruckt bei 5V.

Sicher mit einem Multimeter gemessen. Halte mal einen Oszi dran, dann 
siehst du, was von diesen 5V tatsächlich zu halten ist.

> Kann es wirklich sein, dass ein anderer Aufbau so starke Störungen
> hervorruft?

Komische Frage. Du hast doch selber bereits praktisch bewiesen, daß das 
der Fall sein kann...

> PS: Die Beschaltung des uC und die Spannungsversorgung hab ich
> angehängt.

Das war sehr klug von dir. So kann man nämlich schonmal sagen, daß der 
grundsätzliche Aufbau OK zu sein scheint, soweit von den Schaltplänen 
abgebildet. Möglicherweise kritisch könnte allerdings der 
Innenwiderstand der (Akku-)Batterie sein, insbesondere, wenn er auch 
noch von ungünstiger Masseführung begleitet wird.

Was passiert, wenn du statt Batterie/Akku mal ein großzügig 
dimensioniertes Netzteil dranhängst und zwar idealerweise direkt an die 
entsprechenden Anschlüsse des LT1302 gelötet?

von Thomas K. (thomas99)


Lesenswert?

c-hater schrieb:
> Sicher mit einem Multimeter gemessen. Halte mal einen Oszi dran, dann
> siehst du, was von diesen 5V tatsächlich zu halten ist.

Nein, mit dem Oszi.. direkt nach dem LT1302 sind noch Spannungsspitzen 
von ca. 0,5V (Frequenz ca 6KHz) drinnen, die aber dank der Elkos und 
Abblockkondensatoren am uC schon nicht mehr ankommen... da ist die 
Spannung tatsächlich glatt...

c-hater schrieb:
>Komische Frage. Du hast doch selber bereits praktisch bewiesen, daß das
>der Fall sein kann...#

ja, ich hoffe ja immernoch, das mir jemand sagt "Hey, setz mal den Fuse 
XYZ anders, dann läuft das" ;)

ist es denn generell möglich, EMV-Störungen "abzufangen", d.h. wenn ich 
zum Beispiel ein dünnes Blech mit Masse verbinde und es direkt über 
meine Platine lege, nur getrennt von einer dünnen Plastikfolie, damit es 
zu keinen Kurzschlüssen kommt? (Falls das Käse ist, vergebt mir ;))

c-hater schrieb:
>Was passiert, wenn du statt Batterie/Akku mal ein großzügig
>dimensioniertes Netzteil dranhängst und zwar idealerweise direkt an die
>entsprechenden Anschlüsse des LT1302 gelötet?

Probier ich gleich aus ;)

von Route_66 H. (route_66)


Lesenswert?

Thomas K. schrieb:
> EXTOSC_8MHZ

Heißt die Fuse für externeen Quarz nicht anders?

: Bearbeitet durch User
von Thomas K. (thomas99)


Lesenswert?

Route 66 schrieb:
> Thomas K. schrieb:
>> EXTOSC_8MHZ
>
> Heißt die Fuse für externeen Quarz nicht anders?

EXTXOSC meinte ich, ich hab beim Abschreiben ein X vergessen... Zum 
Glück muss man das ja nur anklicken ;)

Oder stimmt meine Auswahl nicht?

von gtz (Gast)


Lesenswert?

Und korrigieren Sie mal die Bezeichnung von Pin 2 des Schaltreglers.

Bei "VCC" kriege ich langsam Angst.

von Thomas K. (thomas99)


Lesenswert?

gtz schrieb:
> Und korrigieren Sie mal die Bezeichnung von Pin 2 des Schaltreglers.
>
> Bei "VCC" kriege ich langsam Angst.

Ja, Vc gehört da eigentlich hin, oder? Korrigiere ich beizeiten ;)

von Georg G. (df2au)


Lesenswert?

Der Unterschied mit CKDIV8 gesetzt oder nicht, ist nur ein Teiler im uC 
selbst. Auf das Programm darf das keinen Einfluss haben. Hast du mal 
eine andere CPU probiert? Nicht, dass dein Exemplar Probleme mit 10MHz 
hat (warum auch immer).

von Klaus D. (kolisson)


Lesenswert?

was spricht nun dagegen, das du dir die Frage, ob eine Störung über die 
Spannungsversorgung oder EMV ensteht, selbst beantwortest, indem du die 
Schaltung mal probeweise mit Batterien versorgst ?

"If you have a problem, break it into pieces"

Gruss Klaus

von Peter Z. (Gast)


Lesenswert?

Thomas K. schrieb:
> Wenn ich dagegen CKDIV8 einschalte und F_CPU auf 1250000 anpasse bekomme
> ich einen sauberen Wechsel mit exakt 5s hin.

ich vermute mal das es an
1
_delay_ms(5000);
liegt. Vielleicht kann man mit _delay_ms() nur Pausen bis zu einer 
bestimmten Länge machen.
Probier doch mal:
1
for(uint8_t n = 10;n;n--) _delay_ms(500);
mit CKDIV8 aus und F_CPU auf 8000000

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.