Problem med att få igång en PIC

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
kaazaa
Inlägg: 7
Blev medlem: 21 september 2010, 22:50:42

Problem med att få igång en PIC

Inlägg av kaazaa »

Hej!

Nu är det förstå gången jag skriver här, så ni får vara lite snälla mot mig:D

Har letat i forumet men ej hittat svar på min fråga.

Nu är det så att jag för knappt två veckor sen köpte en PIC18F458. För att prova den körde jag med enkel uppställning med en lysdiod för att prova mig fram lite i taget med att programmera uC i C,(Använder CCS C som kompilator och MPLAB som ide).

koden enligt nedan

Kod: Markera allt

#include <18F458.h>


void main()
{
	SET_TRIS_d(0x00);
	while(1)
	{
		output_high(PIN_D2);
	};	
}
Nu till mitt problem, som är att Lysdioden vägrar lysa har provat sätta den mot andra pinnar men samma fick samma resultat. Har provat lägga till +5v och 10K resistor mot MCLR pinnen också men hjälpte inte. Använder PICKit2 som programmerare och den känner igen PICen och skriver till den. Har även provat med samma sak med en PIC16F690 och där funkade det att få lysdioden att lysa.

Så jag undrar om det är något jag gjort fel eller är det fel på PICen.

Tacksam för svar!
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Användarvisningsbild
MicaelKarlsson
Inlägg: 4669
Blev medlem: 18 juni 2004, 09:16:07
Ort: Aneby
Kontakt:

Re: Problem med att få igång en PIC

Inlägg av MicaelKarlsson »

Avkopplingskondensator? Kopplat in ev. andra pinnar som "måste" kopplas in på PIC, antar att den har intern oscillator.

Skall du inte ha strömbegränsningsmotstånd till lysdioden?

Edit: Hur har du kopplat MCLR (eller vad det heter på PIC?)
kaazaa
Inlägg: 7
Blev medlem: 21 september 2010, 22:50:42

Re: Problem med att få igång en PIC

Inlägg av kaazaa »

Var ska en avkopplingskondensator sitta på PICen?

Vilka andra pinnar menar du? om det är för interna oscillatorn, så funkar det ju utan med en PIC16F690 eller måste man ha det på denna PIC?

Jo du har rätt angående motståndet sitter en 330 ohm där, glömt att rita till det.
Användarvisningsbild
Icecap
Inlägg: 26650
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Problem med att få igång en PIC

Inlägg av Icecap »

Först: DATABLADET

Sedan:
* Det ska ett motstånd mellan LED'n och portpinnen. Ta 1k, det är ganska lagom.
* Avkopplingskondensator på kanske 100nF (mycket gärna keramisk) mellan VSS och VDD.
* Koppla in alla VSS!
* Mellan -MCLR och VDD monterar du ett 10k motstånd.

Det var kretsloppet.

Då är det programmet kvar.
Varför skriva SET_TRIS_d? När det är mer korrekt ur C-synpunkt att skriva:
TRISD = 0x00;

Nåväl, småskit. Problemet ligger nog i att du bör läsa databladet ordentligt, speciellt Exampel 9-4 där det tydligt framgår att du måste skriva:
CMCON = 0x07;
för att använda porten för digitala ändamål. När du sedan har gjort det kollar du vad CMCON gör så att du förstår det till senare användning.
Användarvisningsbild
MicaelKarlsson
Inlägg: 4669
Blev medlem: 18 juni 2004, 09:16:07
Ort: Aneby
Kontakt:

Re: Problem med att få igång en PIC

Inlägg av MicaelKarlsson »

Avkopplingskondensator bör sitta mellan VCC och VDD nära kretsen.

Du bör hitta informationen om oscillator i databladet, likaså information om vad du måste koppla in och hur.

Detta gäller som sagt AVR:
Själv kör jag AVR och där måste man koppla reset till matningsspänning med ett motstånd och en kondensator till jord. Samt spänningsmatning till ADC med mera.


Lycka till!! :tumupp:
kaazaa
Inlägg: 7
Blev medlem: 21 september 2010, 22:50:42

Re: Problem med att få igång en PIC

Inlägg av kaazaa »

Ska göra som ni sagt och och återkomma.

Tack för svaren!
kaazaa
Inlägg: 7
Blev medlem: 21 september 2010, 22:50:42

Re: Problem med att få igång en PIC

Inlägg av kaazaa »

Tackar och bockar för hjälpen.

Efter en del kopplande så funkade det att lysa lysdioden.

Dock när jag hade 10k resistor mellan VDD och MCLR/VPP så sa PICKkit 2 "VPP voltage error".

Kollade upp det där med CMCON och vad jag förstod så används den för att jämföra, och finns på PORTD och är analog. Men jag ändrade inget och lysdioden fungerande ändå?

CCS C kompilatorn vill att man ska skriva "set_tris_x();"
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46978
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Problem med att få igång en PIC

Inlägg av TomasL »

Sätt 100k mellan MCLR och VDD, hur är det med oscillator och fuses(configen).
kaazaa
Inlägg: 7
Blev medlem: 21 september 2010, 22:50:42

Re: Problem med att få igång en PIC

Inlägg av kaazaa »

Tack 100k provade jag med det fungerar.

Jag har en kristall på 20Mhz och programmet ser ut så här nu

Kod: Markera allt

#use delay(clock = 20000000)

#fuses HS

void main()
{
	SET_TRIS_d(0x00);
	while(1)
	{
		output_high(PIN_D2);
		delay_ms(100);
		output_low(PIN_D2);
		delay_ms(100);
	};	
}
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Problem med att få igång en PIC

Inlägg av sodjan »

> om det är för interna oscillatorn,

Vilken interna oscillator?
V.v. ange var i databladet det står om den.

> Kollade upp det där med CMCON och vad jag förstod så används den för att jämföra,

Nej, CMCON anger hur man vill använda de pinnar som både har digital och analog funktion.

> ...Men jag ändrade inget och lysdioden fungerande ändå?

Ta för vana att alltid sätta pinnarna så som du tänker använda dom.
Det kan undvika en del underliga problem i framtiden.

Jag hoppas att du köpte 18F458 som surplus eller liknande. De går att köpa
nya (för de som *måste* ha dom t.ex t.ex gamla projekt) men de är kraftigt
överprissatta jämfört med liknande moderna modeller (som dessutom är
betydligt bättre på många sätt).
kaazaa
Inlägg: 7
Blev medlem: 21 september 2010, 22:50:42

Re: Problem med att få igång en PIC

Inlägg av kaazaa »

Vilken interna oscillator?
V.v. ange var i databladet det står om den.
Jag är väl dålig på förklara, menade att jag har kört utan att ha någon kristall med en PIC16F690, men sen om det funkat bra eller dåligt rent tidsmässigt vet jag faktiskt inte, har inte jobbat med uC så länge, utan är en nybörjare. Har bara jobbat lite med lysdioder i assembler.
Nej, CMCON anger hur man vill använda de pinnar som både har digital och analog funktion.

Ta för vana att alltid sätta pinnarna så som du tänker använda dom.
Det kan undvika en del underliga problem i framtiden.
Tack för informationen och tipset. Förstod också att CMCON har med portar som är både analoga och digitala men inte helt säker på varför.
Jag hoppas att du köpte 18F458 som surplus eller liknande. De går att köpa
nya (för de som *måste* ha dom t.ex t.ex gamla projekt) men de är kraftigt
överprissatta jämfört med liknande moderna modeller (som dessutom är
betydligt bättre på många sätt).
Nu blev jag ledsen, för jag köpte den ny, har boken "Mikrocontrollers: från assembler till RTOS", och där har han använt denna PIC så jag körde med den. Vet inte hur jag ska välja eftersom jag är ny inom området och lär mig nu så jag vet inte vad jag behöver och inte behöver i en PIC just nu för att lära mig. Nu är det så att jag inte följer boken utan har den som "hjälp".

När det ändå finns snälla själar som svara på mina frågor, undrar jag vilken compiler är passande till nybörjare, då det känns som CCS inte är helt rätt då den verkar skjilja sig från det vanliga C språket för PIC. Med tanke på det Icecap sa plus att boken skriver på samma sätt som Icecap sa.
Varför skriva SET_TRIS_d? När det är mer korrekt ur C-synpunkt att skriva:
TRISD = 0x00;
Tacksam för alla svar och hjälp hittills.
Användarvisningsbild
Walle
Moderator
Inlägg: 7701
Blev medlem: 14 december 2004, 10:32:18
Ort: Stockholm

Re: Problem med att få igång en PIC

Inlägg av Walle »

Angående att välja lämplig PIC så har jag två tips:

Microchip har ett verktyg (googla "microchip PIC selection tool" så borde du hitta den) där man kan filtrera på olika egenskaper såsom (men inte uteslutande) antal ben, matningsspänning, familj (10, 12, 16, 18, dsPIC, rfPIC, glömde jag nån?), "features" (tex hårdvaru-SPI, bra om man vill använda olika externa kretsar som kommunicerar via SPI, som t.ex. reaktidsklockor och minnen), osv. Man får helt enkelt fundera på vad man vill göra, och därifrån jobba fram en kravspec. Det behöver inte vara så krångligt, hur många digitala in- och utgångar behövs? Behövs analog in, om så hur många och hur hög upplösning? Kollar du i Microchips verktyg så kan du snabbt bilda dig en uppfattning om vilka hårdvarufunktioner som erbjuds.

Angående programmeringen så är mitt tips att börja med databladet för den aktuella PICen (samt datablad för eventuella perifera enheter) samt papper och penna. Börja med att gå igenom databladet och gör en lista på samtliga bitar i konfigureringsregistren behöver sättas. Det är dels de bitar som är odefinierade från start (det framgår i databladet), och dels de bitar som sätts men som måste modifieras för önskad funktion. I databladet framgår det rätt klart hur registren ska sättas, man måste bara vara systematisk och gå igenom allt. Men för de funktioner man inte använder måste man bara kolla på tabellen för registret.

Därefter är det bra att göra ett flödesschema av funktionen i programmet, det underlättar mycket tycker jag, oavsett om man kodar assembler eller C. Flödesschemat gör det ofta tydligt hur man ska lägga upp programmet.

Men som sagt, databladet är din vän! Där har du namn på alla register och bitar, och är programmeringsmiljön någorlunda vettig så används namnen i databladet rakt av i programmet.

Jag är för övrigt också färsk på PIC-programmering, jag höll på lite för 10 år sen, men det mesta har fallit i glömska.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Problem med att få igång en PIC

Inlägg av sodjan »

> menade att jag har kört utan att ha någon kristall med en PIC16F690,

OK, det fungerar helt OK, en 16F690 har ju en intern oscillator.
Jag lästa antagligen lite fel. :-)

> Nu blev jag ledsen, för jag köpte den ny, har boken "Mikrocontrollers: från assembler till RTOS",
> och där har han använt denna PIC så jag körde med den.

Ja men i *så* fall är det helt OK! Har man redan ett utbildningsmaterial som
använder en viss modell, så ska man så klart köra med den. De grundläggande
principerna är ganska lika i alla fall (förutom skillnaderna mellan PIC16 och PIC18)
och du kan alltid senare kompletera med lite modernare modeller när boken har
"tagit slut", så att säga...
kaazaa
Inlägg: 7
Blev medlem: 21 september 2010, 22:50:42

Re: Problem med att få igång en PIC

Inlägg av kaazaa »

Tacksam för alla svar och all hjälp jag fått!

Ett extra tack till dig sodjan som gjorde att jag slipper ha mardrömmar på grund av mitt PIC-uC val :D
Användarvisningsbild
Glenn
Inlägg: 36736
Blev medlem: 24 februari 2006, 12:01:56
Ort: Norr om Sthlm
Kontakt:

Re: Problem med att få igång en PIC

Inlägg av Glenn »

För att göra dej ännu lite gladare så kan jag skriva att det här med att man måste initiera pinnar till att vara digitala är ett EXTREMT vanligt fel :)
Skriv svar