Start problem med PIC18F4550

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
JohanRuben
Inlägg: 438
Blev medlem: 27 mars 2008, 12:53:06
Ort: Göteborg

Start problem med PIC18F4550

Inlägg av JohanRuben »

Hej
Jag sitter med en PIC18F4550 krets inkopplad med ICSP kontakt och en extern kristall på 8 mhz.(kondensatorer på 22p runt kristallen) (första gången jag kopplar upp utan "demoboard"). Problemet är att jag inte får kretsen att börja köra, har läst att "device flags" är lite krångliga på just denna krets. Jag kör mikroc och skulle uppskatta om någon kunde hjälpa mig med flaggorna. Vss och Vdd är kopplade på båda sidor och programmeringen går utan problem. Jag ska inte använda kretsens USB funktionalitet. Just nu ska jag bara ha igång nedanstående blink kod:

void main() {
PORTA = 0; // Initialize PORTA
TRISA = 0; // Configure PORTA as output
ADCON1 = 6; // Changes PORTA to digital
CMCON = 7; // Disable analog comparators

while(1) {
PORTA = ~PORTA; // toggle PORTA
Delay_ms(1000); // one second delay
}
}

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

Inlägg av sodjan »

MCLR ?
LVP ?
JohanRuben
Inlägg: 438
Blev medlem: 27 mars 2008, 12:53:06
Ort: Göteborg

Inlägg av JohanRuben »

Vad innebär det?`

MCLR är matad med 5v via ett 10k motstånd.

Ska de vara off eller on?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Vad innebär *vad* ?

> MCLR är matad med 5v via ett 10k motstånd.

Bra!
(Och kunde ha nämnts i första inlägget...)

> Ska de vara off eller on?

Ingen aning, det beror på.
Huvudsaken är att *du* har koll på hur de ska vara.
D.v.s att du har satt CONFIG bitarna som du vill ha dom.

> (kondensatorer på 22p runt kristallen)

OK om du vill beskriva det på det sättet. Det säger dock inget
om hurvida du har kopplat rätt eller fel... "Runt kristallen" ??

> har läst att "device flags" är lite krångliga på just denna krets.

Vad har du läst och var har du läst det ?
JohanRuben
Inlägg: 438
Blev medlem: 27 mars 2008, 12:53:06
Ort: Göteborg

Inlägg av JohanRuben »

PIC:en är kopplad enligt: Bild

Yttöver det på kopplingschemat finns ICSP kopplat sammt 8 lysdiodrar på port A.

När jag googlade och försökte hitta hur man skulle ställa flaggorna hittade jag ganska många som hade liknande problem med denna pic:en, dock hittade jag ingen lösning på problemet.

Frågan är alltså vad som behövs ställas in för att det ska fungera. Som jag förstår kan man ställa in om man vill köra med den interna eller den externa ocsilliatorn. Men vilken flagga är detta? Är det några andra flaggor som också måste ändras om man ändrar den?
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Det här är en USB-PIC och alltså har den en lite mer komplex oscillatordel
än andra liknande PICs. Men det är bara att kolla oscillatorkapitlet
och ställa in det som man vill ha det.

Är koden som du har visat verkligen *allt* ?
Du gör ju i princip inga initieringar eller inställningar alls !?

Eftersom PGM pinnen "hänger i luften" så är det *viktigt* att LVP är *OFF*.
Ennu bättre är att lägga LVP til GND med ett motstånd.
JohanRuben
Inlägg: 438
Blev medlem: 27 mars 2008, 12:53:06
Ort: Göteborg

Inlägg av JohanRuben »

Jag testade att byta ut 18F4550:n mot en 18F452 (alltså ej USB), då fungerar allt klockrent. Så koden och hårdvaran fungerar om inte koden behöver någon speciell anpassning för 4550:an.

Jag ställde LVP = off, men behövs antagligen fler för det blev ingen skillnad. Ska kolla datablandet lite.

Hur gör man inställningarna i mikroC direkt i koden? har bara hittat hur man kan ställa in flaggorna via optionrutor.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> om inte koden behöver någon speciell anpassning för 4550:an.

Och varför tror du att den inte skulle behöva det !!??
Den gamla 452'an och en USB-modell har väldigt olika oscillator-delar !
Var inte det uppenbart när du läste igenom databladet ?

Det jag menade var vanlig initiering av processorn (inkl oscillator), inte CONFIG flaggorna.
JohanRuben
Inlägg: 438
Blev medlem: 27 mars 2008, 12:53:06
Ort: Göteborg

Inlägg av JohanRuben »

Löste det, Tack

Följande flaggor använde ja (alla kanske inte behövs)

PLLDIV_2_1L = $00F9
CPUDIV_OSC1_PLL2_1L = $00E7
USBDIV_2_1L = $00FF
FOSC_HSPLL_HS_1H = $00FE
FCMEM_OFF_1H = $00BF
IESO_OFF_1H = $007F
PWRT_ON_2L = $00FE
BOR_ON_2L = $00FF
BORV_43_2L = $00EF
VREGEN_ON_2L = $00FF
WDT_OFF_2H = $00FE
WDTPS_256_2H = $00F1
MCLRE_ON_3H = $00FF
LPT1OSC_OFF_3H = $00FB
PBADEN_OFF_3H = $00FD
CCP2MX_ON_3H = $00FF
STVREN_ON_4L = $00FF
LVP_OFF_4L = $00FB
ICPRT_OFF_4L = $00DF
XINST_OFF_4L = $00BF
DEBUG_OFF_4L = $00FF
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Löste det, Tack

Hur ? Vad var det ?
Var det enbart CONFIG inställningar ?

> (alla kanske inte behövs)

Behövs och behövs...
Sätt alltid *alla* CONFIG flaggor så som *du* vill ha dom.
JohanRuben
Inlägg: 438
Blev medlem: 27 mars 2008, 12:53:06
Ort: Göteborg

Inlägg av JohanRuben »

Ja det fungera klockrent när alla config inställningarna var där.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Och vilken var det som gjorde "gjorde det" ?
Var det någon av CONFIG flaggorna för oscillatorn ?
JohanRuben
Inlägg: 438
Blev medlem: 27 mars 2008, 12:53:06
Ort: Göteborg

Inlägg av JohanRuben »

LVP_OFF_4L = $00FB

Behövdes för att få någon funktion i huvudtaget, För att få någon vettig körning krävdes CPUDIV_OSC1_PLL2_1L = $00E7 också.
JohanRuben
Inlägg: 438
Blev medlem: 27 mars 2008, 12:53:06
Ort: Göteborg

Inlägg av JohanRuben »

nu kommer nästa steg istället, få igång lcd:n :P
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> LVP_OFF

OK, det är ju rimligt eftersom du inte ritade någon pulldown på PGM/LVP pinnen.
Med LVP_ON kommer du att få alla möjliga skumma fel.
LVP/PGM pinnen plockar upp 50 Hz brum och kommer att sätta
processorn i programmerings-läge 50 ggr/sekund...

PLL konfigureringen hade väl med hastigheten att göra, antar jag.
Skriv svar