Forum: Mikrocontroller und Digitale Elektronik Schwingt mein Quartz oder nicht?


von Rene S. (gigastulle)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen

Ich benutze ein Atmega8 mit externem Quartz.
Ich Programmiere schon eine Ganze weile an der Sache rum und mir ist nun 
Aufgefallen Das Das Program an Mancher Stelle einfach Stehen zu bleiben 
scheint da sich an eine CS Leitung auf low bleibt und das SCK Signal 
auch Weg ist. ALLERDINGS NICHT IMMER der Fehler das der AVR 
einzuschalfen scheint ist vollkommen Sporadisch und läst sich kaum 
Provozieren. Durch mein OZI habe ich nachgewissen das Der AVR wenn der 
Fehler auftrit stehen geblieben sein muss !!! Ich habe mal das Ozi an 
das Qaurtz gehalten und das gemessen was im Anhang zu sehen ist. Laut 
dem Bild Leite ich mal ab das Das Quartz NICHT schwingt. Allerdings habe 
ich das Selbe Messergebnis wenn Der AVR läuft !!! das kann doch irgent 
wie nicht sein oder ???

Nun zu den Details:
- Schaltung wie im DatenBlatt
- 11,0592 MHz Quartz
- 2x 22pF Condesatoren Parallel wie im Datenblatt

Fuses:
Ext. Crystal/Resonator Medium Freq.; Start-up time: 16K CK + 64 ms

Selbst wenn ich den auf HIGH Freq. umschalte habe ich das Selbe ergebnis 
!!!

Das dumme ist das ich nicht weis wie groß die Kondensatoren sein müssen 
da mir nur die Frequenz bekannt ist mit der das Qaurtz schwingen soll.

Achso noch zum schluss wenn der AVR eingeschalfen ist und ich mit der 
OSZI Messpitze einen Pin vom Quartz berühre läuft er kurz weiter und 
bleibt wieder stehen :(

Vielen Dank schon mal im Vorraus

von holger (Gast)


Lesenswert?

>Das Program an Mancher Stelle einfach Stehen zu bleiben
>scheint da sich an eine CS Leitung auf low bleibt und das SCK Signal
>auch Weg ist.

Schalte den SS Pin auf Ausgang.

von Stefan N. (laser)


Lesenswert?

Hast du nen 1x Tastkopf verwendet? Wenn ja, versuchs mit einem 10x, der 
beeinflusst den Quarz nicht so sehr.

von Alex P. (drdatensalat)


Lesenswert?

Hallo,

wichtig ist, dass du am richtigen Pin misst!
wenn du den Oszi auf den Eigang des UC-Oszillators hällst, hört er 
sofort mit schwingen auf!
Irgend wo sollte im Datenblatt die Ersatzschaltung zu sehen sein (ein 
Logikinverter). Am Ausgang davon kannst du messen, aber du brauchst 
einen 10:1 Tastkopf (glaube ich)
Alternativ: Wenn ein UC-Pin für eine externe Frequenzeinspeisung ist, 
ist das der Eingang, der andere Pin ist der Ausgang (an dem man messen 
kann).

Die Kondensatoren dürften in etwa OK sein. Datenblatt des UC?

Schreib doch ein Testprogramm das nur einen Portpin toggelt, dann kannst 
du am Ausgangs-Port-Pin messen.

von Rene S. (gigastulle)


Lesenswert?

holger schrieb:
>>Das Program an Mancher Stelle einfach Stehen zu bleiben
>>scheint da sich an eine CS Leitung auf low bleibt und das SCK Signal
>>auch Weg ist.
>
> Schalte den SS Pin auf Ausgang.

SS benutze ich garnicht da er ja nach jeder Botschaft auf High geht und 
das will ich aber nicht da alle botschaften länger als 1 Byte sind.
Die Komunikation funktioniert ja es ist eben nur so das er manchmal 
stehen bleibt und nicht weiter macht das kann nach 10s ude erst nach 
20min sein.

von Rene S. (gigastulle)


Lesenswert?

Stefan N. schrieb:
> Hast du nen 1x Tastkopf verwendet? Wenn ja, versuchs mit einem 10x, der
> beeinflusst den Quarz nicht so sehr.

Habe jetzt mit 10x gemessen an beiden pins, mit dem selben ergebnis :(

von holger (Gast)


Lesenswert?

>> Schalte den SS Pin auf Ausgang.

>SS benutze ich garnicht da er ja nach jeder Botschaft auf High geht und
>das will ich aber nicht da alle botschaften länger als 1 Byte sind.

Hä? Nö, der geht nicht von alleine auf High.
Schalte den Pin auf Ausgang.

von Bensch (Gast)


Lesenswert?

>  Laut dem Bild Leite ich mal ab das Das Quartz NICHT schwingt.

Nee, der könnte auch mit niedriger Amplitude schwingen, das kann man aus 
dem Bild nicht klar erkennen. Das klappt aber bei der Frequenz ohne 
CKOPT nicht zuverlässig.

von Blumenkohl (Gast)


Lesenswert?

holger schrieb:
>>> Schalte den SS Pin auf Ausgang.
>
>>SS benutze ich garnicht da er ja nach jeder Botschaft auf High geht und
>>das will ich aber nicht da alle botschaften länger als 1 Byte sind.
>
> Hä? Nö, der geht nicht von alleine auf High.
> Schalte den Pin auf Ausgang.

Ich möchte die Aussage noch einmal unterstreichen! Wenn der SS-Pin als 
Eingang ein LOW-Signal sieht, schaltet der ATMega vom SPI-Master-Modus 
direkt in den SPI-Slave-Modus um! Sollte im Datenblatt unter den 
SPI-Modi auch so vermerkt sein ;)

Sobald Du den SS-Pin als Ausgang setzt, ist dieses Verhalten 
abgeschaltet.

von Rene S. (gigastulle)


Lesenswert?

Blumenkohl schrieb:
> holger schrieb:
>>>> Schalte den SS Pin auf Ausgang.
>>
>>>SS benutze ich garnicht da er ja nach jeder Botschaft auf High geht und
>>>das will ich aber nicht da alle botschaften länger als 1 Byte sind.
>>
>> Hä? Nö, der geht nicht von alleine auf High.
>> Schalte den Pin auf Ausgang.
>
> Ich möchte die Aussage noch einmal unterstreichen! Wenn der SS-Pin als
> Eingang ein LOW-Signal sieht, schaltet der ATMega vom SPI-Master-Modus
> direkt in den SPI-Slave-Modus um! Sollte im Datenblatt unter den
> SPI-Modi auch so vermerkt sein ;)
>
> Sobald Du den SS-Pin als Ausgang setzt, ist dieses Verhalten
> abgeschaltet.

DANKE DANKE DANKE das scheint des rätzels lösung zu sein und ist auch 
plausiebel zum Fehlverhalten im Programm !!!

Hab das Tei jetzt schon über 30min am laufen un der Fehler ist nicht 
wieder aufgetretten !!! Der SS pin war unbeschaltet und auf AUSGANG und 
somit ist sehr sehr wahrescheinlich warum er aufhöhrt über SPI zu senden 
und dann bleibt er ein einer programierten Busy schleife hängen auf SPIF 
wartet und es iom SLAVE nie kommen wird. Danke noch mal für diesen TIP

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.