Har aldrig labbat med en µC på en kopplingsbräda tidigare och tänkte nu slå två flugor i en smäll; delvis göra det jag precis nämnde och delvis konfigurera PWM-modulen i en PIC jag tidigare inte kikat på.
Jag använder MicroC, PICkit2 och µC är en PIC12F1840 (datablad).
Efter att ha uppdaterat device_lib till min PICkit2 så kände den igen µC:n vilket jag tog som ett gott tecken.
Jag tänkte använda P1A som PWM-utgång vilket är pinne RA2 (5 på IC:n) och provade först så jag ens fått till uppkopplingen rätt. Ett litet program laddades ner för att toggla RA2 av/på vilket verifierades med skopet.
Sen försökte jag med PWM:en och ett märkligt fenomen uppstod; När jag spänningssatte µC:n så gav RA2 ifrån sig ett knepigt brus som jag inte hann tolka med mitt gamla skop. Efter ca 2 sekunder försvann signalen helt.
För att verifiera att jag inte eldat µC:n så laddade jag toggle-programmet igen och det fungerade utmärkt.
I och med detta så är jag alldeles säker på att det är min konfigurering av PWM-modulen som är fel, och här behöver jag hjälp.
Givetvis kommer jag grotta vidare men lägger upp koden och bild på uppkopplingen ifall det är någon PIC-erfaren som direkt ser ett fel.
Koden kompilerar utan errors eller varningar och den externa kristallen kommer in i nästa steg när jag ska börja leka med PWM:en. Så nu ska µC:n vara konfigurerad till intern oscillator och kan inte vara helt tokigt då den kan toggla en output med ca 1/2 sek-intervall.
Kod: Markera allt
void main() {
OSCCON = 0b00000010; // 0....... PLL Inactivated
// .0000... Internal osc 31 kHz
// .....0.. Unused
// ......10 Internal osc block (Vad är detta?)
TRISA.B2 = 0; // Define PORT RA2 as output
ANSELA = 0; // Turn off Analog SELect register for port A
PIR1 = 0b00000000; // No interrupt flags are pending
T2CON = 0b00000111; // 0....... Unused
// .0000... Postscaler 1:1
// .....1.. Enable Timer2
// ......11 Prescaler 64
CCP1CON = 0b00111100 ; // ..11.... Use 10 bit res
// ....1100 P1A Active High, P1B Active High
PR2 = 241; // PWM period
while(1){
}
}