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
intmain()
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.
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?
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 ;)
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?
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 ;)
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).
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
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: