PIC Fabrikskalibrering av den Interna Oscillatorn...

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Jeppsson
EF Sponsor
Inlägg: 810
Blev medlem: 3 oktober 2005, 18:00:43
Ort: Karlskrona

PIC Fabrikskalibrering av den Interna Oscillatorn...

Inlägg av Jeppsson »

Jag har en liten fråga angående farbiks kalibreringen av den interna oscillatorn på en PIC...

PICen det gäller i detta fallet är PIC18F2320 som har en intern oscillator på 8Mhz.

I databladet står det följande:

"2.6.2 INTRC OUTPUT FREQUENCY
The internal oscillator block is calibrated at the factory
to produce an INTOSC output frequency of 8.0 MHz.
This changes the frequency of the INTRC source from
its nominal 31.25 kHz. Peripherals and features that
depend on the INTRC source will be affected by this
shift in frequency.
Once set during factory calibration, the INTRC
frequency will remain within ±1% as temperature and
VDD change across their full specified operating
ranges.

2.6.3 OSCTUNE REGISTER
The internal oscillators output has been calibrated at
the factory but can be adjusted in the user's application.
This is done by writing to the OSCTUNE register
(Register 2-1). The tuning sensitivity is constant
throughout the tuning range."


Nu är min fråga följande:

Om jag laddar in ett program i PICen kommer då värdet i OSCTUNE att ändras/skivas över eller måste jag "aktivt" försöka ändra värdet i registert OSCTUNE???

Hur kan jag få reda på värdet i OSCTUNE?

Jag använder mig av en Wisp628 (som de flesta här som programmerar PIC :D ).
Jag har läst av innehållet i PICen med hjälp av kommandot:

Kod: Markera allt

xwisp2w read filnamn.txt
Och då får man innehållet från PICen i en fil som heter filnamn.txt men hur vet jag vilket av koden i filen som är OSCTUNE registert?

Mvh

Jeppsson
Användarvisningsbild
Icecap
Inlägg: 26650
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Inlägg av Icecap »

OSCTUNE är ett register som man skrivar värdet i, alltså:
movlw New_Osctune
movwf OSCTUNE

Skrivar du 0 kommer du till fabriksinställningen och utifrån den kan du trimma lite + eller -.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Vill bara tillägga att normalt skrivar man inget alls till OSCTUNE.

Den sätts till h'00' vid RESET, vilket alltså (enligt "REGISTER 2-1" på
sidan 23 i databladet), betyder det fabrikskallibrerade värdet.

> måste jag "aktivt" försöka ändra värdet i registert OSCTUNE???

Tala först om *varför* du vill eller behöver göra det !
Vill du "fintrimma" frekvensen ?

> Hur kan jag få reda på värdet i OSCTUNE?

Genom att läsa din egen programkod. Det är där värdet ändras (om alls).

> Och då får man innehållet från PICen i en fil som heter filnamn.txt...

Jo, men inga SFR (eller GPR). Du får Flash, eeprom och config.
Användarvisningsbild
Jeppsson
EF Sponsor
Inlägg: 810
Blev medlem: 3 oktober 2005, 18:00:43
Ort: Karlskrona

Inlägg av Jeppsson »

Okej.

Har jag förståt det rätt så efter fabriksinställningen så är det 8Mhz när det står h'00' i OSCTUNE?

Och om jag själv av någon anledning skulle vilja ändra den interna FQ så lägger jag in mitt egna värde i OSCTUNE!
DragonOrb
Inlägg: 381
Blev medlem: 16 oktober 2003, 21:57:19
Ort: Flen

Inlägg av DragonOrb »

Nja..

OSCTUNE är för kalibreringen av den interna oscillatorn.
För att välja vilken hastighet den ska arbeta i använder du en "Postscaler" för att skala ned klockfrekvensen.

Kolla sidan 28 i databladet, där finns registret för att ändra klockfrekvensen.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Har jag förståt det rätt så efter fabriksinställningen så är det 8Mhz när det står h'00' i OSCTUNE?

Inom dokumenterade toleranser, men i princip, ja.
Och h'00' är reset-värdet, så detta är normalt ingen man bryr sig om...

> Och om jag själv av någon anledning skulle vilja ändra den interna FQ
> så lägger jag in mitt egna värde i OSCTUNE!

Beror på vad du menar med "ändra".
OSCTUNE justerar INTOSC med ca +/- 12.5 % *maximalt*. Så det
är mer likt en "trimmning" eller "finjustering". Det förutsätter också att
man har en bre referens att jämföra med. T.ex en USART trafik med
känd hastighet och känt innehåll.

Om du med "ändra" menar att köra 4Mhz, 2Mhz eller någon annan
hastighet, så har du fel. Databladet har det rätta svaret...
Användarvisningsbild
Jeppsson
EF Sponsor
Inlägg: 810
Blev medlem: 3 oktober 2005, 18:00:43
Ort: Karlskrona

Inlägg av Jeppsson »

Jag vet att OSCTUNE ær før att kalibrera den interna OSC...

Men innebær det att nær det står h'00' i OSCTUNE sæ jobbar den interna OSC i 8 Mhz enligt fabriks kalibreringen?

Eller efter fabris kalibreringen så lægger de in ett værde i OSCTUNE så att den interna OSC jobbar i 8Mhz?

Jag ær tacksam før alla era svar!
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Jag vet inte om jag missförstår din fråga, men...

Exakt *vad* är oklart med :
011111 = Maximum frequency (+12.5%, approximately)


000000 = Center frequency. Oscillator module is running at the calibrated frequency.


100000 = Minimum frequency (-12.5%, approximately)
danei
EF Sponsor
Inlägg: 27428
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

Inlägg av danei »

Jag tror jag fattar frågan. Vad det handlar om är väl om det finns ett för inställ värde som man ska spara för att ligga så nära 8MHz som möjligt. Men som jag tolkar det så ligger man enligte fabriks inställningar med nollor. Och om det inte duger så ändrar man. På tidigare modeller tror jag att det var ett värde man inte fick skriva över. Skrev man nollor där så blev det problem med seie komunikationen.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Vad det handlar om är väl om det finns ett för inställ värde som
> man ska spara för att ligga så nära 8MHz som möjligt.

Nej !! Inte på den modell som frågan gäller !
*INGEN* PIC med *8* Mhz INTOSC har något "inställt värde" !!
*EN DEL* PIC med *4* Mhz INTRC/INTOSC har det !

> På tidigare modeller tror jag att det var ett värde man inte fick skriva över.

"Tidigare modeller" (luddigt uttryck, men säg ej "NanoWatt") har inget
OSCTUNE register.

> Skrev man nollor där så blev det problem med serie komunikationen.

*Vissa* tidigare modeller har ett OSCCAL register som är h'00' från reset,
och om man inte kopierar rätt kal-värde från Flash, så blir det lite "snett".

På äldre PIC (ej "nanoWatt" med den nya 8 Mhz INTOSC, utan den gamla
4 MHz INTRC, namnen är inte helt konskventa över alla PICs, bl.a bytte
INTRC namnt till INTOSC mellan 628 -> 628A, men i princip), fanns det två
INTRC/INTOSC varianter, båda 4Mhz. I t.ex 16F628A finns det en fab-kal
4 Mhz INTOSC *utan* OSCCAL register, medan t.ex 12F675/629 har en
4 Mhz INTOSC *med* ett OSCCAL register (och ett kal-värde i Flash).

På de som har 4 Mhz INTRC/INTOSC *och* ett kal-värde i Flash, skall
detta värde läsas och återskrivas vid alla erase all/program operationer,
och det gör alla programmerare värda namnet. Samt läsas och skrivas
till OSCCAL vid programstart (om det behövs, det är inte alls ett krav !)

Summan av ovanstående är : *** LÄS DATABLADET ***. :-)

Vad som gäller för varje inviduell PIC framgår med all önskvärd
tydlighet från respektive datablad.

Med tanke på alla olika konfigurationer och modeller av INTRC/INTOSC,
så är det ganska svårt att försöka skriva något som i kort ord stämmer
för alla PIC's...

Slutligen, jo jag förstår antagligen också frågan, men man blir lite
osäker när svaret finns i en enda ganska tydlig mening i databladet.
danei
EF Sponsor
Inlägg: 27428
Blev medlem: 2 juni 2003, 14:21:34
Ort: Östergötland
Kontakt:

Inlägg av danei »

Så bra då är det utrett. Bara sodjan. Vad jag mende med tidigare ver minnen från en 16C555jw. Men jag gissar att det var något sonnt frågeställaren fiskade efter. Bra att vi har dig sodjan.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Kanske det, men å andra sidan skrev Jeppsson :
"PICen det gäller i detta fallet är PIC18F2320...". :-)
Användarvisningsbild
Jeppsson
EF Sponsor
Inlägg: 810
Blev medlem: 3 oktober 2005, 18:00:43
Ort: Karlskrona

Inlägg av Jeppsson »

Tacka så mycket för svaret Sodjan...

Det är jag som är lite trög! :shock:

När man har hållt på med lite olika PICar så är det lätt att balanda i hoppa deras olika egenskaper.

Det är en tidagare PIC som jag har läst databaldet lite grunligare och förstod då att fabriken la in ett kalibreringsvärde i PICen så som danei sa och att man kunde få problem om man radera/ändra värdet.

Men nu vet jag att den interna OSC kör på 8Mhz +/- 1% när det står h'00' i OSCTUNE, allt enligt fabrikskalibreringen.

Det blir lätt förvirringar när man försöker vara effektiv/lat :) och kör på det som man har läst tidigare...

Tack
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Halva nöjet med att köra med en en ny PIC är ju att
få läsa ett nytt datablad med alla nya "godsaker"... :-)
Skriv svar