Forum: Mikrocontroller und Digitale Elektronik Quarz auf Funktionalität testen?


von Martin M. (kaktus621) Benutzerseite Flattr this


Angehängte Dateien:

Lesenswert?

Hallo!

Nachdem mein Display endlich korrekt vom PIC angesteuert wird, wollte 
ich mich nun weiter in Richtung Digitaluhr bewegen. Nun ergibt sich aber 
das nächste Problem mit dem Quarz.

Ich habe einen "Mini-Uhrenquarz" von Reichelt, Taktfrequenz 32 kHz. 
Anschließend habe ich einige Teile Code aus dem LCD Uhren Beispiel auf 
Sprut genommen und in meine Anwendung eingepasst.
Hier das Problem:

Läuft der PIC im Low Power mode mit dem Externen Quarz, so wird auf dem 
Display nur 00:00:01 angezeigt und die Uhr "hängt" scheinbar. Der PIC 
selber läuft aber, da ich auf Tastendruck die Uhrzeit verstellen kann, 
nur läuft sie eben nicht eigenständig.

Nehme ich exakt den gleichen Sourcecode, nur mit anderer Config ( 
_INTOSC_OSC_NOCLKOUT), so läuft die Uhr eigenständig, nur eben viel zu 
schnell (da der interne Oszillator ja ein "wenig" schneller ist ;-))

Es sieht also so aus, als würde der Quarz nicht "anspringen". Wie kann 
ich einfach testen ob der Quarz funktioniert? Habe kein Ossziloskop oder 
ähnliches, nur ein einfaches Multimeter :-D

Hab den Source mal hochgeladen. Zeit wird verstellt, in dem der Button 
an Pin 0, Port A gedrückt gehalten wird und dann mit Pin 1 die Minuten 
oder Pin 2 die Stunden verstellt.

von AVRFan (Gast)


Lesenswert?

Schreib Dir doch ein Mini-Programm, das nix weiter tut als in einer 
Endlosschleife einen Portpin zu toggeln.  Mit einer passenden 
Delayschleife drin wirds so langsam, dass Du das Blinken einer LED 
bequem sehen kannst.  Blinkt sie ordnungsgemäß fünf Minuten lang, dürfte 
Dein Quarz OK sein.

von Martin M. (kaktus621) Benutzerseite Flattr this


Angehängte Dateien:

Lesenswert?

Hab folgendes Programm gebastelt.
Das Programm müsste dann alle 65000 "Ticks" ( == alle 2 Sekunden 
ungefähr?) den Status der Leds umschalten. Hab das Programm auf den Chip 
geflasht und

..

nichts passiert. Die LEDs bleiben dunkel. Interrupts müssten an sein, 
PORTB steht auch auf Ausgang. Schlussfolgerung : Quarz defekt? Oder doch 
ein Fehler im Code? =)

von AVRFan (Gast)


Lesenswert?

Hab von der PIC-Programmierung leider keine nennenswerte Ahnung.  Aber 
das Testprogramm kann doch viel einfacher sein:

Loop:
  [Verzögerungsschleife]
  [Register inkrementieren]
  [irgendein Bit des Registers auf Pin ausgeben]
  jmp Loop

Da Interrupts und Timer unnötig sind, würde ich auch drauf verzichten, 
und mir das allersimpelste überlegen, was seinen Zweck erfüllt. Sonst 
weißt Du wieder nicht worans liegt, wenns nicht geht.

Just my 2 cents...

von Manfred (Gast)


Lesenswert?

Hallo,

ich unterstelle du wilst den Timer benutzen. Ich sehe aber keine 
initialisierung des Timers und keine Freigabe des Timer-Interrupts. 
außerdem wird der Timer nicht gestartet.
Schreibe doch in deinem Hauptprogramm eine verschachtelte Schleife und 
verzichte auf Timer und Interrupt.

Gruß

Manfred

von Martin M. (kaktus621) Benutzerseite Flattr this


Lesenswert?

Ach, soo.. ich ging eigentlich davon aus, dass der externe Quarz nur die 
Impulse für die Interrupts "abgibt". Da er ja den kompletten Takt 
vorgibt, ist es selbstverständlich einfacher, die Schleife ins 
Hauptprogramm zu tun. Ich teste dies mal sofort, dankeschön.
Anschließend werde ich das Ergebnis hier herein editieren.

EDIT: Hat nicht funktionert :-/ Hab den Source nochmal angehängt

von Martin M. (kaktus621) Benutzerseite Flattr this


Angehängte Dateien:

Lesenswert?

Quellcode..

von Martin M. (kaktus621) Benutzerseite Flattr this


Lesenswert?

Ich habe jetzt den Quarz gegen einen neuen ausgetauscht, allerdings 
funktioniert es weiterhin nicht. Dann habe ich mal die Konfiguration des 
Chips auf IntRC, no CLKOUT geändert und siehe da, es blinkt. Der 
Programmcode scheint also zu funktionieren. Nur in der Schaltung stimmt 
etwas nicht.
Könnten die Kondensatoren schuld sein? Laut Schaltplan sollten es 2 x 
100pF Kondensatoren sein. Auf meinen steht die Beschriftung 101, was 
eben 100pF entspricht. Also laut Schaltplan stimmt alles, trotzdem 
funktioniert es nicht...
Laut Reichelt besitzt der Quarz eine Lastkapazität von 12pF besitzt. 
Allerdings ist mir der Begriff der "Lastkapazität" nicht ganz klar. 
Bedeutet diese, dass nicht 100pF, sondern eben 12pF Kondensatoren 
angeschlossen werden?
Ich würde mich sehr über eine Antwort freuen.

von T. S. (trse)


Lesenswert?

Probier enfach mal 12pF Kondensatoren.

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.