PIC32 Oscillator Mode

Gast #2414192
Lesenswert?

Hallo Leute. Habe eine Frage zu den POSCMOD bits beim pic32. Da gibst ja 
die Möglickeit den auf external oder XT oder HS einstellen. Was hat das 
zu bedeuten (XT und HS). Bzw. wie sind sie nach dem Kauf 
(AUslieferzustand) eingestellt. Wenn sie auf external stehen bedeutet 
das dann, dass ich den Chip nicht Programmieren kann solange kein 
Oszillator dranhängt??


Danke M.H.
Gast #2414212
Lesenswert?

Besser gefragt:

Das folgende stellt ihn auf (externen osziallator / 2)*20 /1 ein also 
bei 8 Mhz ==> SYSCLK = 80MHz
Pereferie Clock: SYSCLK / 8 => 10MHz


RICHTIG??????

Was ist FNOSC. Habs im Datenblatt nicht gefunden....

#pragma config FNOSC    = PRIPLL
#pragma config FPLLIDIV = DIV_2
#pragma config FPLLMUL  = MUL_20
#pragma config FPLLODIV = DIV_1
#pragma config FPBDIV   = DIV_8
#pragma config FWDTEN   = OFF
#pragma config WDTPS    = PS1
#pragma config FCKSM    = CSDCMD
#pragma config OSCIOFNC = OFF
#pragma config POSCMOD  = XT
#pragma config IESO     = OFF
#pragma config FSOSCEN  = OFF
#pragma config CP       = OFF
#pragma config BWP      = OFF
#pragma config PWP      = OFF
#pragma config ICESEL   = ICS_PGx2
#pragma config DEBUG    = OFF
#2414225
Lesenswert?

mit der zaubertastenkombination [stgr]+[F] und "FNOSC" wurde mir das 
hier angezeigt:

bit 2-0 FNOSC<2:0>: Oscillator Selection bits
000 = Fast RC Oscillator (FRC)
001 = Fast RC Oscillator with divide-by-N with PLL module (FRCDIV+PLL)
010 = Primary Oscillator (XT, HS, EC) (1)
011 = Primary Oscillator with PLL module (XT+PLL, HS+PLL, EC+PLL)
100 = Secondary Oscillator (SOSC)
101 = Low-Power RC Oscillator (LPRC)
110 = FRCDIV16 Fast RC Oscillator with fixed divide-by-16 postscaler
111 = Fast RC Oscillator with divide-by-N (FRCDIV)
Note 1: Do not disable POSC (POSCMD = 00) when using this oscillator 
source


ich nehme an, dass das schlüsselwort "PRIPLL" "011" entspricht
Gast #2414248
Lesenswert?

> Wenn sie auf external stehen bedeutet das dann, dass ich den Chip
> nicht Programmieren kann solange kein Oszillator dranhängt??

Das ist bei PICs kein Problem, die brauchen den Oszillator nicht zum 
programmieren. Einfach nur den Programmer dranhängen, "verfusen" gibt es 
nicht.
#2414259
Lesenswert?

meinen leichten wink mit dem pfahl hast du wohl nicht verstanden, dann 
werde ich halt mit demselben zuschlagen: wie stellst du dir vor, dass 
wir dir helfen können, wenn du nicht einmal sagst, welchen PIC du 
verwendest, geschweige denn auf welches DB deine aussagen sich 
beziehen?!
ps: in meinem DB steht's unter "Primary Oscillator (POSC)"
pps: es steht wahrscheinlich gleich ein wenig weiter unten an der 
stelle, wo du "FNOSC<2:0>" gefunden hast -> also ein bischen scrollen 
;-)
Gast #2414264
Lesenswert?

Master Snowman schrieb:
> in meinem DB steht's unter "Primary Oscillator (POSC)

Eben nicht.

Welches DB ist egal, da es in jedem vom pic32 gleich ist. Es steht nur 
drin external clock high frequency und low frequency. Den OSCO Pin kann 
man nur im External Clockmode aktivieren. Deshalb denke ich, das das die 
einstellung für quarz ist und XT für high freq, oder?
Gast #2414283
Lesenswert?

>Ok. Hab das vekackt. Bei mir ist es auch drin... Was ist der Unterschied
>zwischen den Promary Clock Modes EC XT und HS??

EC  External Clock
XT  Quarz < 4MHz
HS  Quarz > 4MHz

>Ist dringend, sthet nämlich nicht im DB

Naja.
Gast #2414289
Lesenswert?

Bei den Modi:

XT  Quarz < 4MHz
HS  Quarz > 4MHz

kann man den OSCO Pin nicht anschalten, was aber für ein quarz 
unabdingbar ist!

Siehe hier:

OSCIOFNC: CLKO Enable Configuration bit
1 = CLKO output disabled
0 = CLKO output signal active on the OSCO pin; Primary Oscillator must 
be disabled or configured for the
External Clock mode (EC) for the CLKO to be active (POSCMOD<1:0> = 11 or 
00)

Mann kann ihn nur einschalten wenn er aus ist (sinnlos)  oder wenn er 
auf external clock eingestellt ist!
Gast #2414297
Lesenswert?

Das kann ich einstellen:



POSCMOD<1:0>: Primary Oscillator Configuration bits
11 = Primary Oscillator disabled
10 = HS Oscillator mode selected
01 = XT Oscillator mode selected
00 = External Clock mode selected
Gast #2414313
Lesenswert?

Ich glaub ich habs geschnallt: OSCI und OSCO sind für Quarz (Ist klar 
dass dann der PIN nicht CLKO sein kann, da er ja für den schwingkreis 
benötigt wird. Und somit nur benutzt werden kann wenn man CLKI verwendet 
und dadurch das Taktsiganl einspeisst.


Also muss ich ihn für ein 8MHz quarz auf XT setzen?


vielen Dank für die Antworten!
Gast #2415002
Lesenswert?

Nein. Ich schnall das nur nicht. Wenn ich das Kompiliere und  brenne, 
schreibt der die Bits in den Controller. Bein nächsten Start müssen 
diese ja da sein um den Betrieb zu gewährleisten. Ist das nun so, dass 
sie erhalten bleiben?
#2415029
Lesenswert?

M. H. schrieb:
> Nein. Ich schnall das nur nicht. Wenn ich das Kompiliere und  brenne,
> schreibt der die Bits in den Controller. Bein nächsten Start müssen
> diese ja da sein um den Betrieb zu gewährleisten. Ist das nun so, dass
> sie erhalten bleiben?

Lies "PIC32MX Family Reference Manual" Section 32 "Configuration"!

"A PIC32MX family device includes several nonvolatile (programmable) 
Configuration Words that define the device’s behavior.
Device Configuration features may vary according to PIC32MX family 
variants; however, the following configuration features are common:
• System Clock Oscillator mode and Phase-Locked Loop (PLL)
• Secondary oscillator (SOSC) enable/disable
• Watchdog Timer (WDT) enable/disable and postscaler
• Boot Flash and Program Flash write-protect regions
• User ID
• Debug mode
The PIC32MX Configuration Words are located in Boot Flash memory and are 
programmed when the PIC32MX Boot Flash region is programmed."

"In PIC32MX family devices, the Configuration Words select various 
device Configurations. These Configuration Words are implemented as 
volatile memory registers and are automatically loaded from the 
nonvolatile programmed Configuration data mapped in the last four Words 
(32-bit x 4 Words) of Boot Flash memory, DEVCFG0-DEVCFG3. These are the 
four locations an external programming device programs with the 
appropriate Configuration data (see Table 32-2).
On Power-on Reset (POR) or any Reset, the Configuration Words are copied 
from Boot Flash memory to their corresponding Configuration registers. A 
Configuration bit can only be programmed = 0, (an erased state = 1)."

Steht doch alles da.

fchk
Gast #2415040
Lesenswert?

Also mal ganz erlich,
du weist nicht was XT, RC, oder sonnstwas bedeuten, und hast einen PIC32 
welcher für dich als Anfänger (was du sein musst, sonnst würdest du das 
nicht fragen) um einiges zu groß ist.

Mach ein einfaches Tutorial durch, um einfach mal etwas zu verstehen, 
wie so ein PIC aufgebaut ist, welche Daten in welchen Speichern abgelegt 
werden, was für Register da sind und welche Funktion diese haben.
Und, was "Register überhaupt sind" !

Ich denke das wäre super wichtig. Aber bitte nicht mit einem PIC32 !!!

Nehme einen PIC 18F... oder was vergleichbaren....

Du lernst auch erst das laufen und dann das rennen!

Zu deiner Frage, ja, diese Einstellungen bleiben dann gespeicher... Wäre 
ja sonnst irgendwie ein bisschen doof, oder nicht ?

LG Tim
#2415057
Lesenswert?

Tim schrieb:
> Zu deiner Frage, ja, diese Einstellungen bleiben dann gespeicher... Wäre
> ja sonnst irgendwie ein bisschen doof, oder nicht ?

Manche aber nicht. Z.b. Die genaue Einstellung des PLLs, das steht ja 
normalerweise am Anfang des Programms, genauso wie die Einstellung, 
welche Ports Input und Output sind. Zumindest bei den PIC18.

Auch wenn das die Frage vielleicht beantwortet, lege ich dir auch ans 
Herz, erstmal mit was kleinem, wie PIC18 anzufangen. Denn auch da gibt 
es sowas wie Portdefinitionen, Module (z.B. USB, CAN, SPI), Ethernet, 
ADCs usw. Dort wäre dir auch das XL, HS, PLL "über den Weg gelaufen".
Gast #2415062
Lesenswert?

Michael Skropski--> "Manche aber nicht."

Achso, wenn es um Dinge wie TRIS und LAT Register geht, ja das ist mir 
bewusst ;)

Ich dachte die Frage von M.H. bezog sich auf die _CONFIG - Dinge, wie 
WDT LVP oder eben auch den OSCI.


M.H. --> "Ich programmiere seit weit über 5 Jahren µCs!!!!!"

Meinst du 5 Tage oder 5 Stunden?

LG Tim
#2415077
Lesenswert?

Tim schrieb:
> Ich dachte die Frage von M.H. bezog sich auf die _CONFIG - Dinge, wie
> WDT LVP oder eben auch den OSCI.

Ich weiß nich ob es das tut. Aber die Config-Bits sind eine Sache, die 
Konfiguration oder Initialisierung eine Andere. Also z.B. das 
OSCCON-Register wird nicht gespeichert. Da steht ja auch noch etwas 
drin.

M. H. schrieb:
> Ich programmiere seit weit über 5 Jahren µCs!!!!!

Ich will nicht unterstellen, das du lügst, aber ganz glauben kann ich 
das nicht. Denn wenn es so ist, musst du a) schonmal Datenblätter 
durchforstet haben und b) läuft kein µC ohne Takt, ob intern oder 
extern. Und Bezeichnungen wie "OSCI"/"OSCO" oder "CLKIN" sind nicht 
selten bzw. selbsterklärend.
Gast #2415094
Lesenswert?

Michael, da gebe ich dir völlig Recht ;)
Es gibt immer irgendwo einen Schlawiner ;)

Was nun unseren M.H. angeht, und seine 5 Jahre Erfahrung, da bin ich 
auch etwas am zweifeln. Ich will es dir ja echt nicht schlecht machen, 
aber es ist halt schwer zu glauben, wenn du so etwas nach 5 Jahren 
frägst.
Das hat nichts expliziet mit PIC zu tun. Das Register evt. schon, aber 
das Datenblätter lesen, und das Google benutzen nicht !

LG Tim
#2415099
Lesenswert?

Ich hab jetzt noch nichts wirklich mit AVRs gemacht, aber ich denke da 
ist es auch so, dass man eine Config hat, die logischerweise genauso 
dauerhaft gespeichert wird, wie das Programm, aber der Rest, EEPROM 
ausgenommen, flüchtig ist.

Abgesehen davon weiß ich nicht, wofür man den dicksten PIC32 braucht, 
den man aber nur mit 8MHz takten will. Ich hoffe, das war nur ein 
Beispiel mit den 8MHz^^ Ansonsten kannst du ja mal erzählen, was dir so 
als Projekt für den PIC32 vorschwebt.


Und selbst wenn du schon viel mit AVRs gemacht hast, nützt dir das 
offensichtlich nicht so viel für PIC32er. Also nimm am besten nen PIC18, 
tob dich ein bisschen daran aus, um den PICs und Microchip ein bisschen 
näher zu kommen und dann versuchs iwann nochmal mit den PIC32. Wenns dir 
um mehr Power oder die 32bit geht, is vlt ein AVR32 besser geeignet, da 
du ja schon mit Atmegas gemacht hast.
Gast #2415149
Lesenswert?

hab jetzt nicht alles gelesen ;) aber glaub wurde noch nicht beantwortet

rc ist internes rc glied...
ec ist externe clock
xt und hs sind fast identisch... unterscheiden sich nur siehe hier:
The XT, XTPLL, HS, and HSPLL modes are external crystal or resonator 
controller oscillator modes. The XT and HS modes are functionally very 
similar. The primary difference is the gain of the internal inverter of 
the oscillator circuit (see Figure 6.3.1.1.1). The XT mode is a medium
power, medium frequency mode and has medium inverter gain. HS mode is 
higher power and provides the highest oscillator frequencies and has the 
highest inverter gain. OSC2 provides crystal/resonator feedback in both 
XT and HS Oscillator modes and hence is not available for
use as a input or output in these modes. The XTPLL and HSPLL modes have 
a Phase-Locked Loop (PLL) with a user-selectable input divider and 
multiplier, and an output divider, to provide a wide range of output 
frequencies. The oscillator circuit will consume more current when the 
PLL is enabled.

ich benutze immer hs...

die einstellung ist defaultmaessig so wie du sie unter 
"configure->configure bits" ueberschreiben tust du sie dann via
#pragma config usw.. welche configs es gibt findest du unter help
#2415548
Lesenswert?

Michael Skropski schrieb:
> Dennoch
> würde mich die geplante Anwendung interessieren.

Vermutlich was sicherheitstechnisch Relevantes :)

Btw. ich wurde in letzter Zeit oftmals genötigt mich mit einem gewissen 
Arduino zu beschäftigen.

Ich kann nachvollziehen, dass jemand der Atmel Datenblätter versteht, 
nicht zwingend die von Microchip versteht.
Mir gings umgekehrt genau so! Ich arbeite seit mehr als 5 Jahren mit 
PICs aller Sorten und ich kann aus einem Atmel-Datenblatt genau nichts 
herauslesen... Allein wie da die PWM Erzeugung funktioniert, schräg...
Gast #2416452
Lesenswert?

Hallo Leute. Hab nochmal ne Frage:

Mit #pragma config kann ich ja auch unter anderem den Vorteiler der 
Perepherie Clock einstellen.

Habe ein Projekt gesehen, in dem das so gemacht wurde. Beim 
Initialisieren wurde dann jedoch die Funktion 
SYSTEMConfigPerformance(SYSCLK); aufgerufen.

Soweit ich weiss setzt diese die waitstates etc aber auch den Vorteiler 
der Perepherieclock. Könnte es dann nicht sein, dass die Funktion, den 
mit #pragma config gesetzten Wert, umkonfiguriert??
Gast #2416659
Lesenswert?

m.h.

das stimmt... das pragma config wird durch SYSTEMConfigPerformance 
ueberschrieben.
wenn du einen anderen wert fuer pb brauchst kannst du den nachtraeglich 
wieder mit:

    OSCSetPBDIV(pb_OSC_PB_DIV_1);

setzen. warum versteh ich auch nicht ganz. trotzdem sollte man 
SYSTEMConfigPerformance aufrufen um eben die waitstates zu setzen. wobei 
die funktion die waitstates sehr defensiv setzt da kann man noch 
bisschen mehr tunen. funktioniert zumindest bei raumtemperatur ;)

wenn man z.b. FPLLMUL = MUL_15, FPLLIDIV = DIV_1
und dem SYSTEMConfigPerformance 80mhz gibt funktioniert alles noch 
einwandfrei. in dem fall laeuft der pic mit 120 mhz mit waitstates fuer 
80mhz. pb ist auch 120mhz. hab hier eine platine die laeuft schon ewig 
in der config... gut aber natuerlich keine garantie ;)

mehr als 120 mhz ist irgendwie nicht drin auch mit anderen waistates 
nicht...
#2416821
Lesenswert?

M. H. schrieb:
> Hallo Leute. Hab nochmal ne Frage:
>
> Mit #pragma config kann ich ja auch unter anderem den Vorteiler der
> Perepherie Clock einstellen.
>
> Habe ein Projekt gesehen, in dem das so gemacht wurde. Beim
> Initialisieren wurde dann jedoch die Funktion
> SYSTEMConfigPerformance(SYSCLK); aufgerufen.
>
> Soweit ich weiss setzt diese die waitstates etc aber auch den Vorteiler
> der Perepherieclock. Könnte es dann nicht sein, dass die Funktion, den
> mit #pragma config gesetzten Wert, umkonfiguriert??

Die Pragmas sind für die Config-Words im Flash. Wenn Du das Reference 
Manual gelesen hättest, wüsstest Du, dass diese nach einem Reset vor dem 
Start des Prozessors in die entsprechenden Register kopiert werden. Die 
Register können später wieder geändert werden.

Manchmal lässt man z.B. den Prozessor mit dem internen Takt starten und 
schaltet erst später auf den externen Quarz um. So ein Quarzoszillator 
braucht nämlich eine ganze Zeit, bis er stabil läuft, während der 
interne RC-Oszillator praktisch sofort da ist. So kann man also die 
Startzeit verkürzen.

fchk
Gast #2416993
Lesenswert?

>Wenn Du das Reference Manual gelesen hättest...

na ich denke das er einfach in das falsche datenblatt gesehen hat... 
z.b.
PIC32MX 5XX 6XX 7XX Family Data Sheet.pdf ist doch recht uebersichtlich 
und geht nicht so ins detail. schau dort mal nach "OSCILLATOR
CONFIGURATION" der informationsgehalt ist nicht berauschend...
man muss halt wissen das es noch ein grosses gibt wo alles drin steht...

wenn man das am anfang nicht merkt wundert man sich ;)

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