Forum: Mikrocontroller und Digitale Elektronik Externer Oscillator / Configuration Bits


von alterhase (Gast)


Lesenswert?

Hallo an alle!

An meinem dsPIC33 wird an PIN 63 ein externer Quarz angeschlossen. Meine 
Frage ist: Muss ich das entsprechende Bit im TRIS Register auf Input 
setzen ?

Im Datenblatt habe ich nur was von den OSCON bits gelesen.

Vielen dank.

von alterhase (Gast)


Lesenswert?

Hallo,

Ich habe in den Config bits jetzt folgendes gesetzt:
pragma config POSCMD = HS // Primary Oscillator Mode Select bits (HS 
Crystal Oscillator Mode)
HS da ich einen 8 MHz externen Takt auf der Platine sitzen hab.

Ist das richtig so ?  Bzw was muss ich noch einstellen ?

lG

von alterhase (Gast)


Lesenswert?

Weiß das niemand? Ich weiß gerade echt nicht weiter.. will ja auch 
nichts kaputt machen.

von Micid (Gast)


Lesenswert?

Naja kaputt machen wirst du nichts. Aber ich denke, wenn du das OSCON 
Register kann nichts passieren bzw. du musst es nicht als Eingang setzen

von Micid (Gast)


Lesenswert?

SAG bitte mal welcher PIC ganz genau und deine IDE

von alterhase (Gast)


Lesenswert?

Ist ein PIC dsPIC33EP512GM710
Ich benutze MPLAP X IDE v4,15

Ne richtige Anleitung wo drin steht was alles genau gesetzt werden muss 
für einen Oscillator finde ich einfach nicht. Nur jegliche Register, 
aber was konkretes nicht..desshalb bin ich gerade auf eure Hilfe 
angewiesen.

von Micid (Gast)


Lesenswert?

OK, also da gibt es immer AP Notes bzw. es immer das selbe Prinzip. Aber 
Microchip über nimmt mit den Bits die du am Anfang setzt, die gesamten 
Einstellungen (daher auch das mit dem Input und Output

von alterhase (Gast)


Lesenswert?

Guten Morgen,

ich habe folgendes gesetzt:
    FOSCSELbits.FNOSC=0b010 ; //primary oscillator (xt, hs, ec)

    FOSCbits.POSCMD=0b01;//XT Crystal

Nur komisch dass ich hier laut Datenblatt XT setzen muss für meine 8MHz, 
und bei den config bits wie ganz oben musste ich HS setzen.

Ist das alles? Bzw erkennt der Compiler die 2 Register überhaupt nicht. 
Obwohl ich die entsprechende Datei vom PIC includet habe und auch die 
Standard IO

von Teo D. (teoderix)


Lesenswert?

Habs mir nur kurz angesehen, aber vielleicht hilft es Klarheit zu 
schaffen.
https://www.mikroe.com/ebooks/pic-microcontrollers-programming-in-c/clock-oscillator

von alterhase (Gast)


Lesenswert?

Hm..Da fehlt noch was..denn mein Compiler erkennt die FOSC Register ja 
nicht mal.

von alterhase (Gast)


Lesenswert?

Das ist doch was ganz normales, ich verstehe echt nicht warum ich nichts 
konkretes dazu finde bzw warum es nicht mal funktioniert.

von Teo D. (teoderix)


Lesenswert?

alterhase schrieb:
> FOSC

OK.
So dürfte nur der interne Systakt benannt sein, das Register eher 
FOSCSEL.
Such dir doch das Headerfile für den Pic und schau nach. Im Dabla suchen 
hilft meist auch.

von alterhase (Gast)


Lesenswert?

Das ist was ich in der entsprechenden Header Datei gefunden habe:

/* Register FOSC (0x557f6)                               */

extern __attribute__((space(prog))) _prog_ uint16_t _FOSC;
#define _FOSC(x) 
__attribute__((address(0x557f6),deprecated_definition("consider 
migrating to #pragma config"),section("__FOSC.sec"),space(prog))) 
_prog_ uint16_t _FOSC = (x);

/*
** Only one invocation of FOSC should appear in a project,
** at the top of a C source file (outside of any function).
**
** The following constants can be used to set FOSC.
** Multiple options may be combined, as shown:
**
** _FOSC( OPT1_ON & OPT2_OFF & OPT3_PLL )
**
**   Primary Oscillator Mode Select bits:
**     POSCMD_EC            EC (External Clock) Mode
**     POSCMD_XT            XT Crystal Oscillator Mode
**     POSCMD_HS            HS Crystal Oscillator Mode
**     POSCMD_NONE          Primary Oscillator disabled
**
**   OSC2 Pin Function bit:
**     OSCIOFNC_ON          OSC2 is general purpose digital I/O pin
**     OSCIOFNC_OFF         OSC2 is clock output
**
**   Peripheral pin select configuration:
**     IOL1WAY_OFF          Allow multiple reconfigurations
**     IOL1WAY_ON           Allow only one reconfiguration
**
**   Clock Switching Mode bits:
**     FCKSM_CSECME         Both Clock switching and Fail-safe Clock 
Monitor are enabled
**     FCKSM_CSECMD         Clock switching is enabled,Fail-safe Clock 
Monitor is disabled
**     FCKSM_CSDCMD         Both Clock switching and Fail-safe Clock 
Monitor are disabled
**
*/

#define POSCMD_EC            0xFFFC
#define POSCMD_XT            0xFFFD
#define POSCMD_HS            0xFFFE
#define POSCMD_NONE          0xFFFF

#define OSCIOFNC_ON          0xFFFB
#define OSCIOFNC_OFF         0xFFFF

#define IOL1WAY_OFF          0xFFDF
#define IOL1WAY_ON           0xFFFF

#define FCKSM_CSECME         0xFF3F
#define FCKSM_CSECMD         0xFF7F
#define FCKSM_CSDCMD         0xFFBF

/* Register FOSCSEL (0x557f8)                               */

extern __attribute__((space(prog))) _prog_ uint16_t _FOSCSEL;
#define _FOSCSEL(x) 
__attribute__((address(0x557f8),deprecated_definition("consider 
migrating to #pragma config"),section("__FOSCSEL.sec"),space(prog))) 
_prog_ uint16_t _FOSCSEL = (x);

/*
** Only one invocation of FOSCSEL should appear in a project,
** at the top of a C source file (outside of any function).
**
** The following constants can be used to set FOSCSEL.
** Multiple options may be combined, as shown:
**
** _FOSCSEL( OPT1_ON & OPT2_OFF & OPT3_PLL )
**
**   Oscillator Source Selection:
**     FNOSC_FRC            Internal Fast RC (FRC)
**     FNOSC_FRCPLL         Fast RC Oscillator with divide-by-N with PLL 
module (FRCPLL)
**     FNOSC_PRI            Primary Oscillator (XT, HS, EC)
**     FNOSC_PRIPLL         Primary Oscillator with PLL module (XT + 
PLL, HS + PLL, EC + PLL)
**     FNOSC_SOSC           Secondary Oscillator (SOSC)
**     FNOSC_LPRC           Low-Power RC Oscillator (LPRC)
**     FNOSC_FRCDIVN        Internal Fast RC (FRC) Oscillator with 
postscaler
**
**   PWM Lock Enable bit:
**     PWMLOCK_OFF          PWM registers may be written without key 
sequence
**     PWMLOCK_ON           Certain PWM registers may only be written 
after key sequence
**
**   Two-speed Oscillator Start-up Enable bit:
**     IESO_OFF             Start up with user-selected oscillator 
source
**     IESO_ON              Start up device with FRC, then switch to 
user-selected oscillator source
**
*/

#define FNOSC_FRC            0xFFF8
#define FNOSC_FRCPLL         0xFFF9
#define FNOSC_PRI            0xFFFA
#define FNOSC_PRIPLL         0xFFFB
#define FNOSC_SOSC           0xFFFC
#define FNOSC_LPRC           0xFFFD
#define FNOSC_FRCDIVN        0xFFFF

#define PWMLOCK_OFF          0xFFBF
#define PWMLOCK_ON           0xFFFF

#define IESO_OFF             0xFF7F
#define IESO_ON              0xFFFF

von alterhase (Gast)


Lesenswert?

Ich denke ich hatte die ganze Zeit über den externen Takt schon 
eingestellt..
In meiner config Datei habe ich folgendes eingestellt:

/ FOSC
#pragma config POSCMD = XT   // Primary Oscillator Mode Select bits (XT 
Crystal Oscillator Mode)
#pragma config OSCIOFNC = OFF  // OSC2 Pin Function bit (OSC2 is clock 
output)
#pragma config IOL1WAY = ON   // Peripheral pin select configuration 
(Allow only one reconfiguration)
#pragma config FCKSM = CSDCMD // Clock Switching Mode bits (Both Clock 
switching and Fail-safe Clock Monitor are disabled)

// FOSCSEL
#pragma config FNOSC = PRI  // Oscillator Source Selection (Primary 
Oscillator (XT, HS, EC))
#pragma config PWMLOCK = ON   // PWM Lock Enable bit (Certain PWM 
registers may only be written after key sequence)
#pragma config IESO = OFF    // Two-speed Oscillator Start-up Enable bit 
(Start up with user-selected oscillator source)


Also habe ich schon quasi durch
#pragma config POSCMD = XT   // Primary Oscillator Mode Select bits (XT 
Crystal Oscillator Mode)
und
#pragma config FNOSC = PRI  // Oscillator Source Selection (Primary 
Oscillator (XT, HS, EC))

meinen externen Quarz eingestellt ?
Scheint mir etwas wenig.

lG

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.