PWM Signal mit einem Atmega644

OP #2296237
Lesenswert?

Hallo, ich möchte ein PWM Signal mit einem Atmega644 erzeugen.
Mit Hilfe ISR1 und OCR1A möchte ich die Periodendauer und die 
ON(OFF)Zeit ändern.

Wenn ich Programm laufen lasse, wird  Fast PWM, 10-bit erzeugt,
Die ISR1 und OCR1A Einstellungen haben keine Wirkung.
Was mache ich falsch?
Kann mir da jemand helfen?
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3

4
int main(void)
5
{
6
// OC1A auf Ausgang  
7
  DDRD =(1<<PD5);
8
// Ausgang definiert auf null setzen   
9
  PORTD = 0x00;  
10
/* Fast PWM, Top von ICR1
11
 Mode 14:   WGM13   WGM12   WGM11   WGM10
12
             1       1        1        0
13
Timer1 Vorteiler clk/1024
14
            CS12    CS11    CS10
15
             1       0     1  
16
Steuerung des Ausgangsport:set OC1A at BOOTTOM,
17
clear OC1A on Compare Match (non-inverting mode)
18
            COM1A1  COM1A0
19
              1    0
20
*/
21
  TCCR1A = (1<<COM1A1)|(1<<WGM11);
22
  TCCR1B = (1<<CS12)|(1<<CS10)|(1<<WGM13)|(1<<WGM12);
23

24
/*den Endwert (TOP) für den Zähler setzen und
25
  der Zähler zählt bis zu diesem Wert
26
*/
27

28
  ICR1H = 0x03;
29
  ICR1L = 0xE8;  //1000
30
/*der Compare Wert. Wenn der Zähler diesen Wert erreicht wird mit 
31
  obiger Konfiguration der OC1A Ausgang abgeschaltet. Sobald der Zähler
32
  wieder auf 1 gesetzt. Durch Verändern dieses Wertes, werden die 
33
  unterschiedlichen PWM Werte eingestellt.
34
*/
35

36
  OCR1AH = 0x00;
37
  OCR1AL = 0xC8;  //200
38
  TIMSK1 = (1<<OCIE1A);
39
  sei();
40

41
  while(1){}
42
  return 1;
43

44
}

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