Attiny45 Timer1 PWM funktioniert nicht

Gast #2128627
Lesenswert?

Ich habe hier einen Attiny45 und wollte eine RGB Led damit ansteuern.
Zurzeit hab ich es noch in meinem STK500 Dadurch sind die Signale 
Invertiert.

Den Timer eins hab ich eigentlich so Eingestellt das er funktioniern 
müsste aber es kommt nichts an.

Kennt jemand das Problem oder sogar eine Lösung ?
1
#define F_CPU 3686400UL
2

3
#include <avr/io.h>
4
#include <util/delay.h>
5

6
char zaehler = 0;
7
char up = 1;
8

9
int main()
10
{
11
  DDRB = 0xFF;
12
  PORTB = 0xFF;
13
  TCCR0A = ((1<<WGM00) | (1<<COM0A1) | (1<<COM0B1) | (1<<COM0A0) | (1<<COM0B0));
14
  TCCR0B = (1<<CS00);
15
  TCCR1 = ((1<<PWM1A) | (1<<COM1A1) | (1<<COM1A0) | (1<<CS10));
16
  while(1)
17
  {
18
    if(up)
19
    {
20
      zaehler++;
21
    }
22
    else
23
    {
24
      zaehler--;
25
    }
26
    if(zaehler == 255)
27
    up = 0;
28
    if(zaehler == 0)
29
    up = 1;
30
    OCR0B = zaehler;
31
    OCR0A = 255 - zaehler;
32
    OCR1A = 255;
33
    _delay_ms(100);
34
  }
35
}
#2128977
Lesenswert?

Hallo,

ia das geht nur dein code stimmt nicht, OCR1C ist das 
Vergleichsregister.
1
#define PWM_PRESCALER  1UL
2
#define PWM_CLOCK  64000000UL
3
#define PWM_FREQ  500000UL      // 500.000kHz
4

5
void Setup_Timer1(void)
6
{
7
  // PLL Starten
8
  PLLCSR |=  _BV(PLLE) ;        // PLL Starten
9
  delay_us(100);          // warte >=100µS
10
  while ( ! ( PLLCSR & _BV(PLOCK)) ) ;      // warte auf PLL Lock
11

12
  PLLCSR |= _BV(PCKE);          // Timer1 PLL Clock Source
13

14
  SET_BIT_PSR1();          // Prescaler Timer1 auf 0 setzen
15

16
  SET_TCNT1(0);
17
  SET_OCR(1A, SIN_SHIFT);        // OC1A pin (PB1)
18
  SET_OCR(1B, SIN_SHIFT);        // OC1B pin (PB4)
19

20
  // PWM Frequency
21
  SET_OCR(1C, (uint8_t)((PWM_CLOCK / PWM_PRESCALER / PWM_FREQ + 0.5) -1) );
22

23
  SET_PWM_T1_A();
24
  SET_PWM_T1_B();
25
  SET_PRESCALE_T1(_T1_PRESCALE_1);
26

27
}

Im Bild siehst Du wie alles Zusammenspielt.

Ich verwende die PLL mit 64MHz als Takt für die PWM und die Macros im 
obigen Vode sollen ihr lesbarer machen und sorgen auch dafür dass ich 
ihn einfach auf einen anderen µP, z.B. dem atTiny861, portieren kann.
Angehängte Dateien:

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