Sida 1 av 1

18F4550 Oscillator problem.

Postat: 6 december 2009, 14:53:41
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

Re: 18F4550 Oscillator problem.

Postat: 6 december 2009, 15:07:02
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...

Re: 18F4550 Oscillator problem.

Postat: 6 december 2009, 16:31:32
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.

Re: 18F4550 Oscillator problem.

Postat: 6 december 2009, 17:00:14
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.

Re: 18F4550 Oscillator problem.

Postat: 6 december 2009, 17:14:34
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.

Re: 18F4550 Oscillator problem.

Postat: 6 december 2009, 17:16:32
av Trex
MCLR hänger fritt, bör inte denna ha ett pullup (eller vad nu heter) motstånd?

Re: 18F4550 Oscillator problem.

Postat: 6 december 2009, 17:19:09
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!

Re: 18F4550 Oscillator problem.

Postat: 6 december 2009, 17:22:23
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.

Re: 18F4550 Oscillator problem.

Postat: 6 december 2009, 19:05:47
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

Re: 18F4550 Oscillator problem.

Postat: 6 december 2009, 22:47:13
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. :)

Re: 18F4550 Oscillator problem.

Postat: 6 december 2009, 23:11:57
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.

Re: 18F4550 Oscillator problem.

Postat: 7 december 2009, 09:06:23
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.

Re: 18F4550 Oscillator problem.

Postat: 7 december 2009, 14:00:08
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"... :-)

Re: 18F4550 Oscillator problem.

Postat: 9 december 2009, 10:26:26
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.