Hi, ich versuche derzeit eine kleine Funktion zu schreiben, die den primary oscillator mode des dsPIC33CK32MC103 während der Laufzeit ausliest. Im Datenblatt sind die betroffenen bits als "r/PO-1" markiert, das bedeutet sie sollten lesbar und einmal (mit den configuration bits) setzbar sein. Nun ist aber das Problem, dass ich das betroffene Register (FOSC) nicht ansprechen kann. Habe im Header (xc.h->p33CK32MC103.h) nachgeschaut, dort ist das register nicht einmal als Struktur angelegt... Kenn jmd. von euch eine Möglichkeit? Ziel der ganzen Geschichte ist es die Taktrate des µCs auslesen zu können. Dazu sollte ich den Modus des primary oscillators schon kennen. Danke an alle
Aabeku K. schrieb: > Hi, > ich versuche derzeit eine kleine Funktion zu schreiben, die den primary > oscillator mode des dsPIC33CK32MC103 während der Laufzeit ausliest. > Im Datenblatt sind die betroffenen bits als "r/PO-1" markiert, das > bedeutet sie sollten lesbar und einmal (mit den configuration bits) > setzbar sein. Nun ist aber das Problem, dass ich das betroffene Register > (FOSC) nicht ansprechen kann. Das Register heißt OSCCON. Seite 156 im Datenblatt. fchk
Frank K. schrieb: > > Das Register heißt OSCCON. Seite 156 im Datenblatt. Nope. Das Register heißt FOSC. Dort möchte ich Bits POSCMD [0:1] lesen. Das Problem ist aber, dass in den Headern des besagten µCs dieses Register nicht einemal in dem dazugehörigen Headerfile als Struktur angelegt sind, so als wenn man dieses Register gar nicht lesen könnte. Nun steht aber an den Bits "R/PO-1", was soviel heißt wie "READ/PROGRAMMABLE ONCE-1", sprich man kann diese Bits nur in den Configuration-Bits setzen (einmalig via Präprozessoranweisung), jedoch beliebig oft lesen. Also warum steht dort man könnte es lesen, kann es dann aber doch nicht??? Weiß keiner mehr? Besagtes Register wird auf S.416 beschrieben. https://ww1.microchip.com/downloads/aemDocuments/documents/MCU16/ProductDocuments/DataSheets/dsPIC33CK64MC105-Family-Data-Sheet-DS70005399D.pdf P.S.: Du hast Seite 156 geschrieben, meintest aber glaube ich S.159. Oder wir haben verschiedene Versionen des Datenblatts erwischt :)
Aabeku K. schrieb: > Frank K. schrieb: >> >> Das Register heißt OSCCON. Seite 156 im Datenblatt. > > Nope. Das Register heißt FOSC. > Also warum steht dort man könnte es lesen, kann es dann aber doch > nicht??? Weiß keiner mehr? Das ist kein Prozessorregister (SFR) im eigentlichen Sinne, sondern es ist ein Configuration Word. Configuration Words sind Flashzellen an einer speziellen Adresse, die vor dem Prozessorstart in die eigentlichen SFRs (Special Function Registers) geladen werden. Der Inhalt des FOSC Config Words landet dabei z.B. im OSCCON SFR. Die Config Words befinden sich nicht im Datenadressraum, sondern im Programmadressraum. Den erreichst Du nur über ICSP oder über tblrd() und tblwr() Befehle. Siehe Seite 35 im Datenblatt. (und ja, ich meinte vorhin Seite 158/159) 8 und 16 Bit PICs haben wie AVRs und 8051 Architekturen getrennte Adressräume für Programmcode und Daten. Darüber stolperst Du gerade. C kann das nicht wirklich gut abbilden. Und: Bei Deinem dsPIC kann man die CLock-Konfiguration zur Laufzeit ändern. Daher ist es sinnvoller, im passenden SFR nachzuschauen (OSCCON) und nicht im entsprechenden Config Word. fchk
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.