sodjan skrev:...Räknar ut registervärden och ger kodexempel.
Den har jag sparat för jag tyckte det verkade vara ett otroligt användbart verktyg (om man förstår hur man använder det...)
KTH-länken hade jag missat och nu har jag spenderat en stund med den och se på fasen, nu är vi online med PWM igen!
Tyvärr hade jag editerat min första kod så hårt så jag har haft lite problem att jämföra för att klura ut vad jag gjorde för fel.
Dom direkta skillnaderna (som jag hade sparat) var:
Kod: Markera allt
Mitt första försök: KTH-koden:
CCP1CON = 0b00001110; CCP1CON = 0b00001100;
PR2 = 0x65; PR2 = 255;
Sen minns jag att jag försökte skriva något i stil med:
PORTC.RC5 = CCPR1L;
for(i=0; i < 255; i++)
{
Delay_us(1000);
CCPR1L = i;
}
Lite grusig i ögonen men jag antar det är "PORTC.RC5 = CCPR1L" som kan orsakat problem?
Också ganska ointressant information då jag inte riktigt kan jämföra. Det råkade bli någon översparning i all hets.
Nåja, mycket intressant det här. Kommande händelser får bli att lära mig räkna på frekvenserna (även verifiera detta med skopet) och förstå CCP modulen RIKTIGT. En god bit på vägen är i alla fall att få igång modulen. Tack för det sodjan!
Ja, om någon skulle vilja se koden så kommer den nedan. Dock så är den antagligen ofullständig men den "pulsar" i alla fall LED'en på RC5.
MikroC Pro for PIC, PIC16F690.
Kod: Markera allt
void main(void)
{
unsigned char i;
TRISC.B5 = 0; // Define PORT RC5 as output and enable CCP1 driver (P1D)
T2CON = 0b00000100; // 1:1 Postscaler, Timer2 On and Prescaler 1
CCP1CON = 0b00001100 ; // Enable Capture/Compare/PWM module
PR2 = 255; // PWM period
while(1)
{
for(i=0; i < 255; i++)
{
Delay_us(1000);
CCPR1L = i;
}
}
}