Hallo, ich hab über die Suchfunktion leider kein einfaches Beispiel gefunden. Deshalb meine Bitte: Wer hat Links oder sogar einen fertigen code in C für eine ganz Simple PWM Ausgabe. Ich will den beiden Pins PD4 und PD5 vom Atmega16 einen PwmWert von 155 zuweisen. Der max Wert sollte bei 255 liegen, also 8 Bit. Die Werte werden nicht verändert, die sollen konstant bleiben für eine Motorsteuerung. Danke
Gast
#863699
Schlau mal ins GCC Tutorial
Da werde ich leider nicht so ganz schlau draus, deswegen die Suche nach einem fertigen Code. Ich verstehe die Sachen irgendwie besser an Beispielen.
Gast
#863706
Funktioniert in C nicht anders als in Assembler, da es quasi nur drum geht, ein paar Register zu beschreiben. Les halt das Datenblatt...steht alles ausführlich drin.
Mir ging es beim PWM genauso wie dir. Bei mir führte aber der Rat von Sven Pauli "les halt das Datenblatt" zum gewünschten Aha-Erlebnis. Aber ein einfaches Beispiel haette auch mir die Sache erleichtert. Hoffe, dass ich nicht zuviel gekürzt habe ....
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
DDRB = 0xff;
DDRD = 0xff;
PORTB = 0x01;
TCCR1A = (1 << WGM10) | (1 << COM1A1);
TCCR1B = (1<<CS11) | (1<<CS10);
OCR1A = 15;
OCR1B = 245;
habs mal so versucht, bin noch am tüffteln.
Was fehlt noch? In diesem beispiel wollte ich erreichen, das PWM an
OCR1B fast 5V beträgt.
Juhu, ich habs geschafft, naja fast.
Ich kann meine PWM setzen und auf einen festen Wert einstellen
im Beispel 128 also ca. 2,5V
Aber wieso nur am Ausgang OCR1A, ich möchte PWM an OCR1B ebenfalls
realisieren.
Hat jemand eine Lösung?
Hier mein Code:
#include <avr/io.h>
#define F_CPU 8000000
int main (void)
{
DDRD=0b1111111;
// PWM Konfig.
TCCR1B |= (1<<CS10); //
TCCR1A |= (1<<WGM10)|(1<<COM1A1); //PWM 8 Bit
OCR1A=128;
OCR1B=128;
return 0;
}
Danke bin fertig:
#include <avr/io.h>
#define F_CPU 8000000
int main ()
{
DDRD=0xFF;
while(1)
{
// PWM Konfig.
TCCR1B |= (1<<CS10); // Frequenz Vorgabe
TCCR1A |= (1<<WGM10)|(1<<COM1A1)|(1<<COM1B1); //PWM 8 Bit und nicht
invertierend für OCR1A und OCR1B
OCR1B=128;
OCR1A=128;
}
return 0;
}
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.