Hallo zusammen,
ich möchte mit einem ATTiny 2313 Soundausgabe machen. Um eine grössere
Laustärke zu erreichen, würde ich gerne die Ausgänge OC1A und OC1B um
180 Grad phasenverschoben togglen lassen. Das bisher funktionierende
Codefragment:
1 | #define SOUNDON TCCR1B = (1<<WGM12) | (1<<CS11);
|
2 |
|
3 | void buzzer_init(void)
|
4 | {
|
5 | DDRB |= (1 << DDB3) | (1 << DDB4);
|
6 | TCCR1A = (1<<COM1A0) | (1<<COM1B0); // CTC, Toggle OC0A/OC0B on Compare Match
|
7 | SOUNDON;
|
8 | SOUNDOFF;
|
9 | }
|
10 |
|
11 | void sound ( unsigned int high, unsigned int duration )
|
12 | {
|
13 | OCR1A = high;
|
14 | OCR1B = high;
|
15 | SOUNDON;
|
16 | _delay_ms (duration);
|
17 | SOUNDOFF;
|
18 | }
|
Dieser Code funktioniert, allerdings ist die Ausgabe an OC1A & OC1B
gleichphasig. Wie kann ich einem Ausgang jetzt "sagen", das er genau
entgegengesetzt arbeitet?
Gruß
Greenhorn