mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Pic12F683 und externer Oscillator (20MHz)


Autor: Andreas Krechla (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ich versuche einen Pic12F683 mit einem externen Quartz (20Mhz) zum 
laufen zu bringen. Der Pic tuts aber nicht. Gleiche Beschaltung an einem 
PIC16F877A und alles läuft perfekt. Hat vielleicht jemand eine Ahnung. 
An den OSC-Pins messe ich eine Gleichspannung von 2,3V.

Die Beschaltung ist der Quartz 2 Kondensatoren 22pF von den 
Oscillatorpins nach Masse und einen Reihenwiderstand 100 Ohm zum 
OSC2-Pin des Controllers.

Autor: Sven Stefan (stepp64) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was denn nun, Quarz oder Qszillator? Bei einem Quarz wäre die 
Beschaltung mit den Cs richtig, allerdings musst du dann auch beide 
Quarzpins mit den entsprechenden Pins des PICs verbinden und nicht nur 
einen.

Bei einem Oszillator verbindest du nur den Ausgang des Oszillators mit 
dem Eingang des entsprechenden Pin des PICs. Allerdings benötigt ein 
Oszillator keine zusätzliche Kondensatoren. Nur Plus und Minus.

Sven

Autor: Andreas Krechla (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry natürlich Quartz (HC49 SMD) Die Beschaltung ist mir schon klar. 
Wie gesagt am grossen PIC läufts ja auch. Nur der kleine 8-Piner macht 
Probleme.

Andreas

Autor: John P. (lance1512)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich denk es hat eher was mit der Software zu tun zumal sich die ja 
erstmal sehr in Grenzen hält. Ich hab die fuses auf:

#FUSES HS                       //High speed Osc (> 4mhz)

gestellt, wodurch eigentlich schon gesagt sein müsste das er den 
externen Quartz nehmen soll.

Oder muss man noch mehr tun. Hier das Program:

#device adc=8

#FUSES NOWDT                    //No Watch Dog Timer
#FUSES HS                       //High speed Osc (> 4mhz)

#FUSES NOCPD                    //No EE protection
#FUSES NOPROTECT                //Code not protected from reading
#FUSES NOMCLR                   //Master Clear pin used for I/O
#FUSES NOPUT                    //No Power Up Timer
#FUSES NOBROWNOUT               //No brownout reset
#FUSES NOIESO                   //Internal External Switch Over mode 
disabled
#FUSES NOFCMEN                  //Fail-safe clock monitor disabled

#use delay(clock=20000000)


void main()
{


   setup_comparator(NC_NC);
   setup_vref(FALSE);
   enable_interrupts(GLOBAL);


   while(1){


   }
   // TODO: USER CODE!!

}

Autor: Sven Stefan (stepp64) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich würde die Rs weg lassen. Und natürlich den anderen Quarzpin mit 
OSC1 verbinden (steht so nicht in deinem Posting). Also:

GND --- C --- Quarz --- C --- GND
           |         |
          OSC1      OSC2

Bei mir hat es so immer funktioniert. Ich benutze allerdings 27p als C. 
Und möglichst dicht an den PIC das ganze (so ca. 1cm Leiterbahnlänge).

Config auf HS sollte auch richtig sein. Mal anderen PIC probiert?

Sven

Autor: Thorsten (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

mit dem Programm tut der PIC garnichts. Lass mal eine Ausgang toggeln 
und schau dann mal.

Gruß

Autor: John P. (lance1512)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich weiss das er nichts macht. Aber schaltet er dann denn Quartz ab? Ich 
lass es trotzdem mal toggeln.

Danke

Autor: John P. (lance1512)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sven Stefan wrote:
> Also ich würde die Rs weg lassen. Und natürlich den anderen Quarzpin mit
> OSC1 verbinden (steht so nicht in deinem Posting). Also:
>
> GND --- C --- Quarz --- C --- GND
>            |         |
>           OSC1      OSC2
>
> Bei mir hat es so immer funktioniert. Ich benutze allerdings 27p als C.
> Und möglichst dicht an den PIC das ganze (so ca. 1cm Leiterbahnlänge).
>
> Config auf HS sollte auch richtig sein. Mal anderen PIC probiert?
>
> Sven

Hallo Sven , so hab ichs auch nur halt 22p. Sonst nehm ich 18p.

GND --- C --- Quarz --- C --- GND
            |         |
           OSC1      R=100
                      |
                    OSC2

Wie gesagt selber aufbau mit kurzen Leitungen an nem pic16f877a und die 
20MHz stehen.

Autor: John P. (lance1512)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, da ich mich immer selbst ärgere das die meisten hier Fragen stellen 
aber sobald sie die Lsg. haben nicht mehr schreiben woran es lag, hier 
nochmal meine Ergebnisse.

Ich hatte mir ein Programm geschrieben in dem ich den internen Quartz 
benutzt hab und lies dann ein Pin im Timer2 Interrupt toggeln.
Als alles funzte hab ich dann die fuse für den Takt auf HS gestellt und 
der Quartz wollt immernoch nich schwingen.

Der Fehler war das am osc2-Pin (GP4) noch ein Kondensator 1nF dran hing. 
Hatte   ne alte Schaltung benutzt und die Leiterbahn nicht richtig 
durchtrennt.
Naja man lernt halt nie aus.

Andreas

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.