INTOSC på nyare/halvgamla PIC ?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 7427
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

INTOSC på nyare/halvgamla PIC ?

Inlägg av Marta »

Har kämpat med en 16F1939 och försökt få INTOSC att funka på ett vettigt sätt. Givetvis läst noga i databladet, men det är något jag missar.

Programmet körs och fungerar antagligen, men exekveras i krypfart med något av 31kHz-alternativen. Möjligen T1OSC (eller vad de kallar den numera).

Config är satt till INTOSC och jag har testat flera alternativ med OSCCON. Tydligen finns det en liten obskyr bit någonstans som hamnat på tvären. Två chip är testade, båda samma resultat.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46872
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: INTOSC på nyare/halvgamla PIC ?

Inlägg av TomasL »

Du får publicera din konfiguration.
Vilket IDE använder du?
Kontrollera att konfigurationen stämmer överens i den färdigkompilerade koden.

Hur ser koden ut som hanterar dina oscillatorer i runtime
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 7427
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Re: INTOSC på nyare/halvgamla PIC ?

Inlägg av Marta »

Inget IDE, manuell config. Koden är i assembler.

Config words 1 och 2.
%_0_1_1_00_1_1_1_1_00_100
%_1_1_1_1_1_0_11_11_11_11
OSCCON
%0_0111_0_00

Många fler alternativ än dessa är testade.

Det finns massor av finesser kring oscillatorerna. Utöver config words är alla SFR's lämnade som de är efter reset.

Har även testat ett program som endast sätter OSCCON samt en port som utgång och därefter en loop som pulsar denna port.

Det är "two speed startup", "clock failsafe" och liknande som jag aldrig använt och kan noll om som jag antar är felet. En obskyr bit i ett nytillkommet SFR vars namn inte antyder något om vad det är.

Den här kretsen har också en massa LCD-krafs som inte används. Det var den end som EK hade, annars hade något annat valts.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46872
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: INTOSC på nyare/halvgamla PIC ?

Inlägg av TomasL »

Vilken klockfrekvens är det du vill ha?
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 7427
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Re: INTOSC på nyare/halvgamla PIC ?

Inlägg av Marta »

4, 8, 16 eller 32MHz PLL skulle alla fungera för att komma vidare.
Antar Du har hela härket från Microchip och kan åstadkomma en automatgenererad init-kod. Innehåller den allt som behövs, inklusive config words, så löser det sig nog att hitta var felet är. Så en sådan för t.ex 8MHz vore fint.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46872
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: INTOSC på nyare/halvgamla PIC ?

Inlägg av TomasL »

Du konfigurerar enbart för 500kHz inget annat.
Du måste i din startupkod sätta OSCCON FOSC<2:0> till den frekvens du vill ha, som det är nu sätter du den till 500 kHz
om du slår på PLLen, så blir 8MHz-valet 32 MHz i stället.
VId varje reset eller boot, så ställs INTOSC till 500 kHz

Du har satt

Kod: Markera allt

Config #1
FOSC     = INTOSC
WDTE     = Av
PWRT     = Av
MCLR     = Av
CProt    = Av
Dprot    = Av
BOREN    = Av
CLKOUT   = Av
IESO     = Av
FailSafe = Av

Kod: Markera allt

Config #2
LVP      = På
Debug   = Av
BOR     = Låg Nivå
OFL     = Reset
4xPLL   = Av
WP      = Av

Kod: Markera allt

OSCCON
SPLLEN 4xPLL = Av
ICRF        = 500kHz
SCS FOSC    = Config#1
För att få 32MHz, Testa med

Kod: Markera allt

Config #2
LVP      = På
Debug   = Av
BOR     = Låg Nivå
OFL     = Reset
4xPLL   = På
WP      = Av
I din Startup-kod

Kod: Markera allt

OSCCON
SPLLEN 4xPLL = På
ICRF        = 8MHz
SCS FOSC    = Config#1
För att få 8MHz, Testa med

Kod: Markera allt

Config #2
LVP      = På
Debug   = Av
BOR     = Låg Nivå
OFL     = Reset
4xPLL   = Av
WP      = Av
I din Startup-kod

Kod: Markera allt

OSCCON
SPLLEN 4xPLL = Av
ICRF        = 8MHz
SCS FOSC    = Config#1
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 7427
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Re: INTOSC på nyare/halvgamla PIC ?

Inlägg av Marta »

Tackar för hjälpen. Sk*t bakom tangenterna... Nu funkar det OK.

Hade missat att PLL inte kan väljas annat än via config, alltså 00 som avslutning på OSCCON. Dessutom hade det kommit in ett skräptecken i källkoden som ställde BS fel, OSCCON ändrades inte. Ovanpå detta har Microchip ändrat på prescalern till TIMER2, ny kod för /16, så det blev /64.

PLL-valet i cfg2 är inte nödvändigt. Det och bit7 i OSCCON fungerar som en OR-funktion. Däremot måste cfg1 sättas till INTOSC och bit 1:0 i OSCCON vara 00 för att kunna välja PLL.


Ser nu också att Microship gjort en total omstuvning av SFR's i de nyaste 16+. :( Mer logiskt grupperat, men tappar att det mest använda fanns i bank0. Så det är inget drop-in utbyte mot den här strömslukaren jag har nu och den nya som drar mindre än 1/10 i sleep mode och T1OSC (eller vad de nu hittat på att kalla den). Det är den interna sp.reg. för kärnan som inte stängs av i det äldre chipet.
Skriv svar