Aloha,
arbeite gerade mit meinem AT90PWM3B rum und bin im Datenblatt im "Power
Stage Controller"-Kapitel auf "fast PWM" gestoßen.
Hört sich spannend an und wollte es daher gleich mal ausprobieren...
1 | int main(void)
|
2 | {
|
3 | DDRD = (1<<PD0); // Ausgang setzen
|
4 |
|
5 |
|
6 | // Sync? Sync? PSCOUT01 PSCOUT00
|
7 | PSOC0 = (0<<PSYNC01)|(0<<PSYNC01)|(0<<POEN0B)|(1<<POEN0A);
|
8 | OCR0SAH = 0x00; // setze PSCOUT0A bei 0x00;
|
9 | OCR0SAL = 0x00;
|
10 | OCR0RAH = 0x01; // loesche PSCOUT0A bei 0x01FF
|
11 | OCR0RAL = 0xFF;
|
12 | PCNF0 = (0<<PMODE01)|(1<<PMODE00); // Two Ramp Mode
|
13 | PCNF0 |= (1<<PCLKSEL0); // select fast clock
|
14 |
|
15 |
|
16 | PLLCSR = (1<<PLLF); // =1: PLL output 64MHz; =0: PLL output 32MHz
|
17 | PLLCSR |= (1<<PLLE); // activating PLL
|
18 | _delay_us(100); // after enabling PLL, it takes about 100ms the PLL to lock
|
19 | while( (PLLCSR & (1<<PLOCK)) == 0x00 );
|
20 |
|
21 |
|
22 | // while( ((~PLLCSR & (1<<PLOCK))>>PLOCK) ); // while bit is clear
|
23 | // PLLCSR |= (1<<PCKE);
|
24 |
|
25 | PCTL0 = (1<<PRUN0); //starts running PSC 0
|
26 |
|
27 | while(1);
|
28 | }
|
leider kann ich an PSCOUT00 kein PWM Signal messen. Habe ich irgendwas
vergessen?