PWM an PIN OC1B mit 8 Bit Timer

Gast #4512001
Lesenswert?

Die Timer und die Pins:

---------------

Timer0 = 8Bit

OC0A = PD3
OC0B = PE1

---------------

Timer1 = 16Bit

OC1A = PD2
OC1B = PC1

---------------


Du kannst dir aber ne Interrupt Routine machen und die Pins ummappen.
Gast #4512074
Lesenswert?

Danke.

Nehme ich nun OC0A am PD3 Pin müsste ich doch mit folgendem Code:
1
DDRD |= (1 << DDD3);  // PD3 als Ausgang    
2
TCCR0A = (1 << COM0A0 | 1 << WGM00); // Mode 5
3
TCCR0B = (1 << WGM02 | 1 << CS02 | 1 << CS00); // CLK/1024
4
OCR0A = 127;


Phase correct, 8 Bit Timer, clk/1024

Tuts aber nicht. Kann mir jemand sagen, woran das liegt? Erhalte nur ein 
ca. 1.5V spitze zu spitze dreieckssignal
Gast #4512085
Lesenswert?

Versuchs mal so:
1
DDRD |= (1 << 3);  // PD3 als Ausgang    
2
TCCR0A = (1 << COM0A0) | (1 << WGM00); // Mode 5
3
TCCR0B = (1 << WGM02) | (1 << CS02) | 1 (<< CS00); // CLK/1024
4
OCR0A = 127;

und schalte mal die Interrupts ein, falls du es nicht schon gemacht 
hast:
1
sei();
2

3
//bzw folgendes:
4

5
GlobalInterruptEnable();
Gast #4512112
Lesenswert?

hmm die Klammern sollten doch egal sein.
Habs aber mal gemacht:
1
DDRD |= (1 << 3);  // PWM Pin als Ausgang    
2
TCCR0A = (1 << COM0A0) | (1 << WGM00); // Mode 5
3
TCCR0B = (1 << WGM02) | (1 << CS02) | (1 << CS00); // CLK/1024
4
OCR0A = 127;

Am Signal ändern sich aber nichts

Interrupts sind doch solange ich sie nicht nutzen will auch nicht von 
nöten?!
Gast #4512210
Lesenswert?

PD3 ist neben OC0A auch MOSI_A was man fürs Programmieren nutzt. Muss 
man da was umstellen? Habe gerade auch mal versucht einfach den Pin nur 
zu tgl. was auch nicht klappt. Bei jedem andern Pin klapps aber...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren