PIC10F200 OSCCAL Problem

Gast #2284585
Lesenswert?
• ▲
▼
Zitat aus Datenblatt:

In addition, a calibration instruction is programmed into
the last address of memory, which contains the calibration
value for the internal oscillator. This value is programmed as a MOVLW 
xx
instruction where xx is the calibration value and is
placed at the Reset vector. This will load the W register
with the calibration value upon Reset and the PC will
then roll over to the users program at address 0x000.
The user then has the option of writing the value to the
OSCCAL Register (05h) or ignoring it.

Also:  Speicherplatz 0xFF ist ein Befehl und kein Wert.  Beim Reset 
steht der Kalibrierwert in der W register.  Mann muss ihm nur in der 
OSCCON rüberschieben (oder auch nicht).
#2284611
Lesenswert?
• ▲
▼
PICfan schrieb:
> Also:  Speicherplatz 0xFF ist ein Befehl und kein Wert.  Beim Reset
> steht der Kalibrierwert in der W register.  Mann muss ihm nur in der
> OSCCON rüberschieben (oder auch nicht).

Und wenn man den PIC löscht, dann ist auch der Kalibrierwert gelöscht. 
Mann muss in vorher auslesen und notieren, um ihn später wieder 
programmieren zu können.

Note:
Erasing the device will also erase the preprogrammed internal 
calibration value for the internal oscillator. The calibration value 
must be read prior to erasing the part so it can be reprogrammed 
correctly later.

Gruß
John
#2286786
Lesenswert?
• ▲
▼
Hi,

Matthias Laubnitz schrieb:
> _asm
> movfw ffh
> movwf 5h
> _endasm
so funst das nicht!

PICfan schrieb:
> Also:  Speicherplatz 0xFF ist ein Befehl und kein Wert.  Beim Reset
> steht der Kalibrierwert in der W register.  Mann muss ihm nur in der
> OSCCON rüberschieben (oder auch nicht).
fast richtig.
In 0xFF steht ein "RETLW" Befehl, also ein Befehl UND Daten
(ob's Pic's gibt, wo nach nem Reset der wert in W steht kann ich nicht 
sagen, bezweifle es aber sehr.)

ergo:
_asm
CALL FFh
movwf 5h
_endasm


mfg
Manfred
#2287525
Lesenswert?
• ▲
▼
Manfred John schrieb:
> In 0xFF steht ein "RETLW" Befehl, also ein Befehl UND Daten
> (ob's Pic's gibt, wo nach nem Reset der wert in W steht kann ich nicht
> sagen, bezweifle es aber sehr.)

Bei dem PIC10F200 ist es kein 'RETLW XX" wie z.B. beim PIC12F629 sondern 
ein 'MOVLW XX".
Der Reset-Vektor zeigt beim PIC10F200 auf 0xFF. Hier wird der Akku mit 
dem OSCCAL-Wert geladen. Dann gibt es einen Rollover des Progammzählers 
auf 0x00, wo dann nur noch ein 'MOVWF OSSCAL' stehen muss. Was der 
Compiler ja automatisch einfügt:

Matthias Laubnitz schrieb:
> In meinem Program Memory steht an Adresse 00 MOVWF OSCCAL ohne das ich
> in meinem selbstgeschriebenen Code davon etwas schreibe. Allerdings
> ändert sich die Oszi Frequenz nicht wenn ich den Wert in FF  ändere (Mit
> MPLAB).

Um den OSCCAL-Wert zu ändern, kannst Du diese Funktion nutzen, indem Du 
im Programmspeicher an Adresse 0xFF den Befehl 'MOVLW XX' mit dem 
gewünschten Wert für OSCCAL einfügst. Oder Du kannst an einer beliebigen 
Stellen im Programm die Befehle:
  MOVLW XX
  MOVWF OSSCAL
einfügen.

Gruß
John

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.