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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.