18F4550 Oscillator problem.

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
hobbyel
Inlägg: 6
Blev medlem: 6 december 2009, 14:45:50

18F4550 Oscillator problem.

Inlägg av hobbyel »

Hej hej!

Har läst en massa på forumet innan men aldrig tagit mig tid att registrera mig.
Nu har jag stött på ett problem som jag inte lyckas läsa trots ihärdigt googlande och scrollande i datablad. Förmodligen står det i klartext i databladet, men jag lyckas inte hitta/tyda det.

Har labbat runt en hel del med 16F877A tidigare och det har aldrig varit några problem med dom små saker jag gjort. Blinka diverse lysdioder, LCD m.m.

Nu har jag införskaffat ett par 18F4550 och försöker göra det absolut enklaste, dvs blinka en lysdiod. Koppar ihop en enkel koppling på labbdäcket med en 4mhz kristall. Skriver ett snabbt program i mikrobasic som tänder och släcker lysdioden med en sekunds mellanrum.
Programmerar piccen med programmet och startar den. Nu blinkar det, men inte med 1 sekunds mellanrum. Snarare 200ms.
Jag fattar inte varför den gör så och hur man ska rätta till det.
I mikrobasic är den inställd på 4mhz och det har räckt när det gäller 16f877. Men tydligen inte här.

Jag har försökt med OSCCON=%01100010. Det funkade jättebra, men då kör den tydligen på den interna oscillatorn så jag kunde rycka kristallen och den fortsatte exekvera programmet.

Nu har jag suttit med det här ett par dygn utan framgång så nu får jag krypa till korset och be om hjälp. :(
Nån som har lite tips?

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

Re: 18F4550 Oscillator problem.

Inlägg av sodjan »

> med en 4mhz kristall.

MHz antagligen, annars går det väldigt långsamt.

> Skriver ett snabbt program i mikrobasic...

OK, det är ju ett litet problem i sig, speciellt om du inte är helt säker
på både vad *du* gör och vad Mikrobasic gör.

Det fungerar alltså men med fel hastighet ? Tja, du har antagligen inte
satt upp saker och ting rätt. Det är bara att kolla mot databladet.
Eftersom du inte säger ett smack om hur t.ex oscillatordelen är uppsatt
så är det bara att önska lycka till... :-)

> I mikrobasic är den inställd på 4mhz...

Men det är väl bara för att tala om för kompilatorn vilken hastighet du *tänker*
köra med, det har i sig ingenting med vilken hastighet du sedan faktiskt kör med.
Det har ju MikroBasic inte en susning om...
hobbyel
Inlägg: 6
Blev medlem: 6 december 2009, 14:45:50

Re: 18F4550 Oscillator problem.

Inlägg av hobbyel »

Schema:
Bild

Inställningar i MikroBasic:
Bild

Kod:

Kod: Markera allt

program LED_Blinking

main:
  TRISD = 0x00
  
  While TRUE
    PORTD = 0x00
    Delay_ms(1000)

    PORTD = 0xFF
    Delay_ms(1000)
  wend
end.
Ja, den slår på/av hela port D.

Det här borde väl inte vara några problem?
Tips, någon?


Edit: La till en skärmdump till.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: 18F4550 Oscillator problem.

Inlägg av sodjan »

Vilken hastighet kör du med ?
Har du verifierat vad MikroBasic gör med de där inställningarna ?
D.v.s blir de korrekta även i processorn ? Det är ju svårt att veta om
de är rätt eller inte när man inte ser alternativen...
Vilken hastighet *verkar* processorn köra med med ledning av blinkningarna ?
MikroBasic gör ju programvaruloopar som blir rätt *om* du kör i 4 MHz.
hobbyel
Inlägg: 6
Blev medlem: 6 december 2009, 14:45:50

Re: 18F4550 Oscillator problem.

Inlägg av hobbyel »

Hastighet? 4MHz?
Kollar jag config bitarna i mplab när jag laddat hex filen så är dom olika värdena samma som mikrobasic.
Jag skulle gissa på att processorn tror den jobbar i 1MHz. Är ungeför 4 blink när det ska vara 1.
Trex
Inlägg: 14
Blev medlem: 6 mars 2009, 16:27:01
Ort: Göteborg

Re: 18F4550 Oscillator problem.

Inlägg av Trex »

MCLR hänger fritt, bör inte denna ha ett pullup (eller vad nu heter) motstånd?
Användarvisningsbild
Icecap
Inlägg: 26659
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: 18F4550 Oscillator problem.

Inlägg av Icecap »

Processorn tror inte en skit!

Kompilern däremot har du sannolikt inte förklarat hur snabb CPU-klocka du använder varför den nog tar till ett standardvärde.

DU ska alltså skriva in vilken frekvens delay-rutinen har att jobba emot och har DU inte gjort detta är det DITT fel.

Och MCLR ska verkligen har ett pull-up motstånd!
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: 18F4550 Oscillator problem.

Inlägg av sodjan »

> Hastighet? 4MHz?

Nej, det tror jag inte alls. I så fall hade ju allt varit OK, eller hur ?
Det är ju ganska uppenbart att du *INTE* kör med 4 MHz.
Eller (som Icecap också sa) så har du inte angett på ett korrekt sätt
för kompilatorn vilket hastighet du tänker köra på.

Notera också att en USB-PIC har en lite mer komplex oscillatormodul
än de vanliga PIC modellerna. Har du läst på ordentligt så att du är
helt med på hur den fungerar ?

> Jag skulle gissa på att processorn tror den jobbar i 1MHz...

Två fel...

1. Processorn "tror" aldrig någonting alls. Den gör bara som den blir tillsagd.

2. Om det är 4 blink när det ska vara 1, så är det troligare att
du faktiskt kör i 16 MHz. Alltså snabbare, inte långsammare.
Förrutsatt alltså att delay rutineran faktiskt är genererade för 4 MHz.
Användarvisningsbild
E85
Inlägg: 1274
Blev medlem: 29 maj 2007, 16:24:19
Ort: Övik

Re: 18F4550 Oscillator problem.

Inlägg av E85 »

Om jag tolkar bilderna rätt är CONFIG1H satt till 0x0E vilket gör att HSPLL är valt. Du vill ha HS för att få 4MHz.
Samma bild finns i databladet men förstår du inte den så har nån försökt förklara ytterligare här:
http://www.mikroe.com/forum/viewtopic.php?t=10646
hobbyel
Inlägg: 6
Blev medlem: 6 december 2009, 14:45:50

Re: 18F4550 Oscillator problem.

Inlägg av hobbyel »

Jag valde HS+HSUSB vilket var det enda alternativet utan HSPLL. Nu funkar det inte alls. :(
Blir en heldag med det här imorrn med tror jag. För blinka, det ska den fan. :)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: 18F4550 Oscillator problem.

Inlägg av sodjan »

Nu så är väl en 4 MHz kristall "LP" om jag inte minns fel.
I alla fall så går gränsen mellan "LP" och "HS" vid 4 MHz, så
jag skulle leta efter ett LP-alternativ också. Och det är klart
att du ska få igång det. Men som jag sa tidigare, USB-modellerna
har en betydligt mer komplex oscillatormodul och har du inte
tidigare vana från PIC's så kan det bli lite mycket på en gång.

Se alternativ "1. XT Crystal/Resonator" under kap 2.2.

Se även schemat/figur 2-1 hur du ska sätta upp allt för att
du ska komma fram med 4 MHz signalen uppe till vänster och
ner till "CPU" till höger på bilden. Det finns ju många val på
vägen. Se till att sätta allt så som *DU* vill ha det, lite inte
på eventuella defaults.
hobbyel
Inlägg: 6
Blev medlem: 6 december 2009, 14:45:50

Re: 18F4550 Oscillator problem.

Inlägg av hobbyel »

Nu fungerar det. :D
Dock inte helt utan uppoffringar. En 4550'a fick sätta livet till vid en felkoppling. :(
Tack för hjälpen allesammans.

1Hz blink har aldrig varit så fint som nu. hehe.

Nu när jag lyckats få tajmingen rätt så ska jag försöka mig på att koppla in en lcd.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: 18F4550 Oscillator problem.

Inlägg av sodjan »

Jaha !? Och *varför* fungerar det nu ?
Att bara säga "fungerar nu" utan att också beskriva
vad problemet var anses normalt som lite "ohyffsat"... :-)
hobbyel
Inlägg: 6
Blev medlem: 6 december 2009, 14:45:50

Re: 18F4550 Oscillator problem.

Inlägg av hobbyel »

Ber om ursäkt.

Jag provade först med HS, sen med XT och sen med HS igen. Då fungerade det.
Så exakt varför, kan jag inte svara på. Måste ha blivit något fel vid programmeringen kanske.

Såg att jag hade glömt rita in pullup motståndet på schemat. Det sitter där.
Skriv svar