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

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