3st PWM-styrningar med PIC18LF1330 med ICSP, går det?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
wolfheat
Inlägg: 202
Blev medlem: 14 oktober 2007, 20:42:51
Ort: Gävle

3st PWM-styrningar med PIC18LF1330 med ICSP, går det?

Inlägg av wolfheat »

Började på ett av mina projekt igår. Ursäktar om detta inlägg är lite förvirrat. Jag skall försöka förklara mig kortfattat men konsist.

Tänkte använda mig utav PWM-funktionen på en PIC18LF1330 (18pin PDIP) (är egentligen avsedd för motorstyrning) till att styra tre LEDs. RGB.

Har suttit och klurat på hur jag skall kunna styra dessa tre LEDs med 3 individuella moduleringar. Problemet som jag ser det är som följer. Jag använder PicKit2 och ICSP och därmed är portarna (12,13) upptagan för PGD och PGC. Men det är dessutom där som PWM4 och PWM5 ligger.

Och jag vet inte ifall det går att köra de olika PWMerna på ngt annat sätt än parvis. Hittils är det iaf det enda jag lyckats med. Dvs nu går PWM0 och PWM1 tillsammans, likaså PWM2-PWM3 och PWM4-PWM5.

Det gör att jag antingen måste komma på ett sätt att styra dem individuellt, som jag inte fattat ännu (vilket jag trodde PMOD2:PMOD0 inställningen skulle göra [se sid 117 i databladet] "independent mode" skulle fixa). Det verkar inte spela någon roll hur jag ställer in dessa, kanske har jag missat något register...?

För närvarande kör jag med "011 = PWM0, PWM1, PWM2 and PWM3 I/O pins enabled for PWM output" i PWMCON0 registret bit 6-4. (annars finns ju bara alternativ för alla, udda eller jämna PWMregister som kan vara av intresse, och då används ju 4e och 5e registret :( )

Det finns tre register (Low,High-register för de tre) för att styra pulsernas varaktighet [PDC0,PDC1,PDC2]. Jag antar att de tre registerna automatiskt hamnar på de olika PWM utgångarna (parvis?), utifrån hur man ställer in PWMCON0 bit 6-4 s.117. (hittills hamnar de automatiskt på de första två paren av PWM-utgångar, det tredje har jag som sagt ICSP-kopplingar till och har inte kunnat kolla)

Antagligen är det så enkelt att det inte går att dela upp de tre PWM styrregistrena PDC0,PDC1,PDC2 på tex PWM0,PWM1,PWM2 utgångarna utan jag måste använda PWM4,PWM5 om jag vill kunna styra tre olika utgångar.

Eller så är jag bara dum och fattar mig inte på databladet, så kan det ju också va.

Tackar för all hjälp ni kan bistå med.
Tack på förhand!
Användarvisningsbild
Marta
EF Sponsor
Inlägg: 7487
Blev medlem: 30 mars 2005, 01:19:59
Ort: Landskrona
Kontakt:

Inlägg av Marta »

Vad är det för projekt? Har Du behov av att använda just denna PIC annat än för att den råkar ha tre PWM i hårdvara?

Det är inte alls svårt att göra PWM i mjukvara, Du gör bara en räknare som går runt, runt, runt och sedan för varje inkrement gör Du såhär:


Hämta värdet på önskad pulskvot.
Dra ifrån räknarens värde.
Skifta en scratchadress så CY kommer in i denna.

Repetera för varje PWM-kanal.

Läs scratchadressen, bearbeta på lämpligt sätt så den kan överföras till porten och gör sedan detta.



Timer0 kan vara ett lämpligt val för att ge interrupts för denna proccedur. Det är då inte timerns värde, utan en mjukvarutimer som stegas för varje interrupt som skall läsas. Räknaren behöver inte gå 256 steg, vänd den med en AND vid t.ex. 128, 64 eller 32 beroende på behov av pulsfrekvens och upplösning kontra tillgänglig CPU-kraft.

Alternativt kan PIC exekvera en loop så går det att göra med även de enklare typerna utan iterruptmöjlighet, men PWM kan få ett viss jitter om inte programmet skall bli stökigt = alltid samma antal klockor.
Användarvisningsbild
wolfheat
Inlägg: 202
Blev medlem: 14 oktober 2007, 20:42:51
Ort: Gävle

Inlägg av wolfheat »

Jag lyckades få till det.

Det visade sig att det visst gick att använda det tredje paret PWM. Trots att detta även används av ICSP;n. Bra för mig, nu kan jag fortsätta.

(Visst går det att göra i mjukvara, men nu hade jag en PWM-pic så jag tänkte att jag kunde lära mig använda den. Jobbar dessutom med att förstå mig på 18-kommandona, har tidigare arbetat med diverse 16-varianter, tänkte lära mig 18 och sen 16bits och 24bits, tack för hjälpen dock.)
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

Det finns ingen 24bits.
Användarvisningsbild
wolfheat
Inlägg: 202
Blev medlem: 14 oktober 2007, 20:42:51
Ort: Gävle

Inlägg av wolfheat »

Nä, då blir det ju svårt att lära sig dem :P

Syftade på 24PIC;arna med de är ju 16-bit såklart.

Varför inte lära sig mer om 32-bit också, de börjar ju bli riktigt populära numera.
Skriv svar