Forum: Mikrocontroller und Digitale Elektronik PIC32 Oscillator Mode


von M. Н. (Gast)


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.

von M. Н. (Gast)


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

von Master S. (snowman)


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

von M. Н. (Gast)


Lesenswert?

In welchem Datenblatt? Bei mir kommt: Die Suche ergab keine Treffer

von Master S. (snowman)


Lesenswert?

müsstest das nicht du uns angeben?!? ...da du keinen spezifischen PIC32 
genannt hast, habe ich einfach irgendein datenblatt eines PIC32 
geöffnet.

von usuru (Gast)


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.

von M. Н. (Gast)


Lesenswert?

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

Ist dringend, sthet nämlich nicht im DB

von Master S. (snowman)


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 
;-)

von M. Н. (Gast)


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?

von Master S. (snowman)


Angehängte Dateien:

Lesenswert?

OK, dann machen wir's halt ganz kindisch: wenn du mir sagst, welchen PIC 
du verwendest, sag ich dir aus welchem DB ich das obige bild habe. 
einverstanden?

von M. Н. (Gast)


Lesenswert?


von holger (Gast)


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.

von M. Н. (Gast)


Lesenswert?

Also: benutze den PIC32MX795F512H!!!!!!!!!!!!!!!!!!!!

von M. Н. (Gast)


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!

von Master S. (snowman)


Angehängte Dateien:

Lesenswert?

typ siehe oben rechts

von M. Н. (Gast)


Lesenswert?

Aber in meinem DB steht das nicht ( kannste selbst schauen). will nur 
wissen wofür die Drei Arten bei meinem PIC sind.

von M. Н. (Gast)


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

von Master S. (snowman)


Lesenswert?

@H.M.: in deinem DB steht aber gleich zu beginn, dass man "PIC32 Family 
Reference Manual" nachschlagen soll und unter kapitel 6 weitere infos 
findet... dort findest du es auch ;-)
http://ww1.microchip.com/downloads/en/DeviceDoc/61132B.pdf

von M. Н. (Gast)


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!

von M. Н. (Gast)


Lesenswert?

Vielen Dank für das Manual. Jetzt ist alles klar!

von Bernd R. (Firma: Promaxx.net) (bigwumpus)


Lesenswert?

M. H. schrieb:


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

Nö

In einer der vielen Antworten hier stand, daß bei >4MHz der HS-Modus 
verwendet werden muß.

Lesen!!!

von M. Н. (Gast)


Lesenswert?

Sorry!

Hab ich verwechselt. Bleiben die Einstellungen der Register nach dem 
ausschalten erhalten?

von Master S. (snowman)


Lesenswert?

bitte(!) mach doch mal ein tutorial durch, auch wenn's eines für die 
PIC18 ist.. danke!

von M. Н. (Gast)


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?

von Frank K. (fchk)


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

von Tim (Gast)


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

von M. Н. (Gast)


Lesenswert?

Ich programmiere seit weit über 5 Jahren µCs!!!!!

von Michael S. (rbs_phoenix)


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".

von Tim (Gast)


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

von M. Н. (Gast)


Lesenswert?

Ich meinte Jahre. Habe aber bis jetzt nur erfahrung mit:


Attiny
Atmega
Atxmega
T91c51cc01
MSP430

von Michael S. (rbs_phoenix)


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.

von Tim (Gast)


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

von Michael S. (rbs_phoenix)


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.

von Tim (Gast)


Lesenswert?

Gute Anfängert Tutorials für PIC´s auch die 18er Serie findest du hier:

www.pic-projekte.de

LG Tim

von egon (Gast)


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

von egon (Gast)


Lesenswert?

>Abgesehen davon weiß ich nicht, wofür man den dicksten PIC32 braucht,
den man aber nur mit 8MHz takten will.

das ist normal ... der pic32 hat ja ein ppl welcher dann auf 80 im 
endeffekt laeuft.

von egon (Gast)


Lesenswert?

pll sorry ;)

von egon (Gast)


Lesenswert?

*flood" sorry die menüangaben bezogen sich auf mplab8.x ... ich hoffe 
das benutzt du auch... ;) mplabx habe ich wieder geknickt und arbeite 
weiter auf mplab 8.63.

von Michael S. (rbs_phoenix)


Lesenswert?

egon schrieb:
> das ist normal ... der pic32 hat ja ein ppl welcher dann auf 80 im
> endeffekt laeuft.

Oh gott, hast recht. Ich hab grad iwie an was anderes gedacht ;) Dennoch 
würde mich die geplante Anwendung interessieren.

von Michael H. (morph1)


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

von M. Н. (Gast)


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

von Sprachwissenschaftler (Gast)


Lesenswert?

Wenn man die Perepherie nicht verstanden hatt, kan mann
auch die Klock nicht versteen.

von M. Н. (Gast)


Lesenswert?

Was soll das bedeuten?

von Master S. (snowman)


Lesenswert?

mach in tutorial für die PIC18 durch, dann hast du 95% vom notwendigen 
für die PIC32 verstanden!

von egon (Gast)


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

von Frank K. (fchk)


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

von Master S. (snowman)


Lesenswert?

> Wenn Du das Reference Manual gelesen hättest...
oder eben wenigstens(!) ein tutorial gelesen hätte ...dann wären 
ähnliche, zukünftige fragen auch schon geklärt.

von egon (Gast)


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 ;)

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.