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


von Andreas Krechla (Gast)


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.

von Sven S. (stepp64) Benutzerseite


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

von Andreas Krechla (Gast)


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

von John P. (Gast)


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!!

}

von Sven S. (stepp64) Benutzerseite


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

von Thorsten (Gast)


Lesenswert?

Hi,

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

Gruß

von John P. (Gast)


Lesenswert?

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

Danke

von John P. (Gast)


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.

von John P. (Gast)


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

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.