Quarz auf Funktionalität testen?

Persönliche Seite #728922
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.
Angehängte Dateien:
Persönliche Seite #728985
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? =)
Angehängte Dateien:
Gast #729675
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...
Persönliche Seite #730315
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
Persönliche Seite #734091
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren