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.
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
> 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.
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
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
;-)
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?
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?
>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.
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!
@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
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!
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!!!
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?
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
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
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".
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
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.
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
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.
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
>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.
*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.
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.
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...
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??
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...
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
> 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.
>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 ;)