Sätta PIC / PICkit på kopplingsdäck? - Hjälp med MPLAB X

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
emil.s
Inlägg: 147
Blev medlem: 22 oktober 2011, 20:08:06

Re: Sätta PIC / PICkit på kopplingsdäck? - Hjälp med MPLAB X

Inlägg av emil.s »

Bra idéer med flatkabel. Får väl bygga något.

Har dock inte haft några större framsteg. Så här ser koden ut:

Kod: Markera allt

#include <p18cxxx.h>
#include <delays.h>

#pragma config OSC = INTIO2
#pragma config WDT = OFF
#pragma config MCLRE = OFF


void main (void)
{
TRISB = 0;

while (1)
{

PORTB = 0;
Delay1KTCYx(50);

PORTB = 0x5A;
Delay1KTCYx(50);

}

}
Och så här ser kopplingen ut:
Bild Bild

Den gröna dioden är för att visa att det är ström påkopplat.

När man kopplar på strömmen så blinkar den röda dioden till precis så man hinner se det, var 6e sekund. Annars händer inget.

Antar väl dock att man gjort något stort misstag nånstans...
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Sätta PIC / PICkit på kopplingsdäck? - Hjälp med MPLAB X

Inlägg av sodjan »

Är det där hela koden ? Har du ingen initiering alls ?

Och varför skriver du inte hur du har kopplat ? :-)
Är det korrekt att lysdioden sitter på RB3 ?
(OK, det var bra och tydliga bilder, men det gör ju inget att
även tala om vad det är vi ser på bilderna).

Fungerar det hela om du kör i MPSIM ?
Vilken frekvens kör du med ?
Varför kör du med MCLRE=OFF ?

Och det finns ju betydligt fler CONFIG att sätta så som du vill ha
dom än de där tre. Ta till vana att alltid sätta alla så som du vill ha dom.
*Vi* kan inte veta om du har utelämnat de andra avsiktligt eller av misstag.

Du beskriver vad som händer, men vad *förväntade* du dig skulle hända ?

Var är alla kommenterar i koden ??
Det är också lite underlig och svårläst indentering.

Vad ger "Delay1KTCYx(50);" för fördröjning ?
(Jo, *jag* kan läsa manualen, men vad tror *du* ? :-) )

> Annars händer inget.

Är det bra eller dåligt ?
Vad skulle kunna hända mer (det finns ju bara en LED ansluten) ?
Vad förväntade du dig ?
emil.s
Inlägg: 147
Blev medlem: 22 oktober 2011, 20:08:06

Re: Sätta PIC / PICkit på kopplingsdäck? - Hjälp med MPLAB X

Inlägg av emil.s »

Hej igen!

Ja, det är hela koden. Följer "MPLAB® C18 C Compiler Getting Started" (DS51295F), och där hittar jag inget om nån initiering!?
Har dock använt Delay1KTCYx(x) istället för att skriva en egen funktion.

Körde utan MCLRE då nån tidigare trodde att det kunde vara felkällan.
Kör med den interna oscillatorn, så 8MHz borde det väl bli.

Hur som hellst så kopplade jag in MLCREn (och slog på i koden), samt satte alla andra configuration-bits, och nu fungerar det. (dvs dioden på RB3 blinkar).

Blir dock inte klok på Delay funktionen. Hittade detta exempel i "MPLAB® C18 C Compiler Libraries" (DS51297F):

Kod: Markera allt

Delay of 15ms 
Cycles = (TimeDelay * Fosc) / 4 
Cycles = (15ms * 16MHz) / 4 
Cycles = 60,000
Då borde ju 50k cycles med 8MHz bli 25ms. I verkligheten så är det runt 5 sekunder!

Antar att jag tänker helt fel någonstans!?
H.O
Inlägg: 5919
Blev medlem: 19 mars 2007, 10:11:27
Ort: Ronneby

Re: Sätta PIC / PICkit på kopplingsdäck? - Hjälp med MPLAB X

Inlägg av H.O »

De tre nedre bitarna i OSCCON styr postscalern till den interna oscillatorn. (Edit: eller multiplexern efter postscalern rättare sagt). De bitarna är alla 0 vid uppstart och vad jag kan se skriver du inte till OSCCON någon stans så din klockfrekvensen måste vara 31kHz, inte 8MHz....om jag läser rätt.

8M/31k = 258, 5/0.025=250 så det verkar rimligt.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Sätta PIC / PICkit på kopplingsdäck? - Hjälp med MPLAB X

Inlägg av sodjan »

> och där hittar jag inget om nån initiering!?

Nja, nej det gör du kanske inte.
Det jag menar är att man går igenom processorn och ser till att
alla komponenter är "uppsatta" så som man vill ha dom.
Analoga funktioner av, rätt oscillator-konfig (verkar ju vara fel i
detta fall som H.O noterade), pinnar in/ut så som man vill ha dom o.s.v.
Man få kolla lite snabbt på de olika modulerna och se om det är något
som man behöver göra. I de allra flesta fall är modulerna avstängda
efter RESET och man kan lämna dom som dom är, men i andra fall
*måste* man skruva lite, speciellt kring de analoga funktionerna.

> Körde utan MCLRE då nån tidigare trodde att det kunde vara felkällan.

Mitt tips är att alltid köra med extern MCLR tills man fullt förstår de
eventuella sidoeffekter som internt MCLR kan ha. Nu har du en PICkit2/3
som i och för sig hanterar detta OK, men det förutsätter att processorn
spänningsmatas från PICkit2/3 så att PICkit kan sätta Vdd på/av som den vill.

> Antar att jag tänker helt fel någonstans!?

Nej, dete är bara helt vanligt slarv vid lösningen av databladet. Om processorn
verkar gå med "fel hastighet" så finns det anledning att läsa på om oscillatorn.
Och utan att kolla själv, så verkar H.O's analysd helt OK, det finn flera modeller
som går igång på enlåg hastighet efter RESET och man för ställa rätt hastighet via
något register. Tro det eller ej, men detta är väldigt tydligt beskrivet i databladet. :-)
Skriv svar