Hallo Forum-User,
ich habe ein kleines Verständnisproblem und denke, dass es eigentlich
nur eine Kleinigkeit ist.
Ich habe vor kurzen angefangen einen Attiny45 mit Atmel Studio zu
programmieren in C.
Nun habe ich mit kleinen Schritten angefangen und erfolgreich ein PWM
Ausgang angesteuert.
Nun wollte ich der übersichtshalber eine Funktion schreiben die das
Register des jeweiligen PWM-Pin beschreibt, aber leider scheiterte ich
an der Aufgabe.
Kann mir jemand anhand meines Codes helfen die Wissenslücke zu füllen?
Ich habe nicht ganz verstanden, wie ich der Funktion etwas übergebe,
damit sie auf das richtige Register des Output Compare Register
schreibt.
Vielen dank im voraus.
Mein Code:
1 | # define F_CPU 1000000UL
|
2 | # define pwm1 OCR0A
|
3 | # define pwm2 OCR0B
|
4 |
|
5 | #include <avr/io.h>
|
6 | #include <util/delay.h>
|
7 |
|
8 |
|
9 |
|
10 | int main(void)
|
11 | {
|
12 | DDRB |= (1<<PB1) | (1<<PB0);
|
13 |
|
14 | TCCR0A |= (1<<COM0A1) | (1<<COM0B1) | (1<<WGM00) | (1<<WGM02);
|
15 | TCCR0B |= (1<<CS01);
|
16 |
|
17 | void SetPWM(pinout, int value)
|
18 | {
|
19 | pinout= value;
|
20 | }
|
21 |
|
22 |
|
23 |
|
24 |
|
25 | while (1)
|
26 | {
|
27 | for(int i=0; i<255; i++)
|
28 | {
|
29 | SetPWM(pwm1, i);
|
30 | _delay_ms(4);
|
31 | }
|
32 |
|
33 | _delay_ms(500);
|
34 |
|
35 | for(int i=255; i>0;i--)
|
36 | {
|
37 | SetPWM(pwm1, i);
|
38 | _delay_ms(4);
|
39 | }
|
40 |
|
41 | }
|
42 |
|
43 |
|
44 | }
|