Forum: Mikrocontroller und Digitale Elektronik LED PWM funktionniert nicht!


von Guy N. (Firma: Student) (lechristiano)


Lesenswert?

Hallo,
ich versuche gerade eine LED durch die Timer zu steuern (PWM). ich 
verwende AVR Studio 5.1 und der uC Atmega2560. ich habe den folgenden 
Code geschrieben. Er funktionniert aber nicht. weiß Jemand warum?

MfG
Christian
1
#include <avr/io.h>
2
#include <avr/interrupt.h>
3
#include <util/delay.h>
4
5
#define F_CPU 8000000UL // 8 MHz
6
7
#define LED_PORT  PORTB
8
#define LED_DDR    DDRB
9
#define LED_PIN    PINB
10
11
#define PWM_LED    PB2
12
13
ISR(TIMER1_COMPA_vect){
14
  
15
  LED_PORT |= (1<<PWM_LED);
16
  
17
}
18
19
ISR(TIMER1_COMPB_vect){
20
  
21
  LED_PORT &= ~(1<<PWM_LED);
22
  
23
}
24
25
int main(void)
26
{
27
  //Timer1 Config
28
  //Clear OCnA/OCnB on compare match
29
  //Fast PWM: Top = OCR1A (siehe Table 17-2, uC Atmega2560, Seite 148)
30
  TCCR1A |= (1<<COM1A1)|(1<<COM1B1)|(1<<WGM11)|(WGM10);
31
  //No prescaling
32
  TCCR1B |= (1<<WGM13)|(1<<WGM12)|(1<<CS12);
33
  TCNT1 = 0;
34
  OCR1A = 0xFFFF;
35
  OCR1B = 0x7FFF;
36
  TIMSK1 |= (1<<OCIE1B)|(1<<OCIE1A);
37
  
38
  LED_DDR |= (1<<PWM_LED);  //Alle Ausgänge
39
  LED_PORT = 0xff;
40
  
41
  sei();
42
  
43
    while(1)
44
    {
45
    }
46
}

von Spess53 (Gast)


Lesenswert?

Hi

>TCCR1A |= (1<<COM1A1)|(1<<COM1B1)|(1<<WGM11)|(WGM10);
                                              ^^^^^^^^
MfG Spess

von Guy N. (Firma: Student) (lechristiano)


Lesenswert?

DANKE, DANKE, DANKE, DANKE!!!!!

Gott segnet Ihnen!

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.