mikrocontroller.net

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


Autor: Martin Matysiak (kaktus621) Benutzerseite Flattr this
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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.

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Martin Matysiak (kaktus621) Benutzerseite Flattr this
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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? =)

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Manfred (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Martin Matysiak (kaktus621) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Martin Matysiak (kaktus621) Benutzerseite Flattr this
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Quellcode..

Autor: Martin Matysiak (kaktus621) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: T. S. (trse)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Probier enfach mal 12pF Kondensatoren.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.