ATtiny861A / PWM funktioniert nicht richtig

Gast #3189417
Lesenswert?
• ▲
▼
Hallo zusammen,

ich verwende einen ATtiny861A und betreibe mit dem Timer1 eine PWM. Die 
PWM funktioniert soweit, dass die Frequenz stimmt. Jedoch beträgt die 
Flankenhöhe nur 1,6V.
Meiner Meinung nach sollte die Flankenhöhe z.B. 1/3 lang 5V betragen und 
2/3 lang 0V.
Versorgt wird der Controller mit 5V. Diese Spannung bleibt auch 
konstant.
An anderen Ausgängen sind 5V Ausgangsspannung vorhanden.

Ich denke, dass ich noch irgend etwas an den Registern falsch 
eingestellt habe.
1
#define F_CPU 8000000UL
2
#include <avr/io.h>
3
#include <stdlib.h>
4
#include <avr/interrupt.h>
5
#include <util/delay.h>
6

7
      
8
void timer1_init()
9
{
10
   TCCR1A |= (1<<PWM1B) | (1<<COM1B1);  //PWM-Mode for OCR1B
11
   TCCR1B |= (1<<CS10) | (1<<CS11) | (1<<CS12) | (0<<CS13); //Prescaler64 
12
   TCCR1C |= (1<<COM1D1) | (1<<PWM1D);  //PWM-Mode for OCR1D
13
   TCCR1D |= (1<<WGM10) | (0<<WGM11);  //Phase & Frequency Correct PWM  
14
}
15

16
int main(void)
17
{  
18
  //===== inputs =====
19
  DDRA  &= ~((1<<DDA0)  //Analog-Input, Current-Measure Coil 2
20
    | (1<<DDA1)  //Signal Coil 2
21
    | (1<<DDA2)  //Analog-Input, Current-Measure Coil 1
22
    | (1<<DDA3));    //A_ref, 5V
23
  DDRB  &= ~((1<<DDB0)    //USI (DI) / ISP (MOSI)
24
    | (1<<DDB4)    //Signal Coil 1
25
    | (1<<DDB7));    //Reset SPI
26
    
27
  //===== outputs =====
28
  DDRA  |= (1<<DDA4)    //activate actual-value coil 1
29
    | (1<<DDA5)    //activate given-value coil 1
30
    | (1<<DDA6)    //activate actual-value coil 2
31
    | (1<<DDA7);    //activate given-value coil 2
32
  DDRB  |= (1<<DDB1)    //USI (DO) / ISP (MISO)
33
    | (1<<DDB2)        //USI (USCK) / ISP (SCK)
34
    | (1<<DDB3)        //OC1B, coil 2
35
    | (1<<DDB5)        //OC1D, coil 1
36
    | (1<<DDB6);        //ChipSelect D/A-converter
37

38
      
39
  //==== Pull-Up ====
40
  PORTB |= (1<<PB7) | (1<<PB0);   
41
       
42
  //===== Timer, etc =====
43
  timer1_init();
44
  usi_init();
45
  sei();            
46
    
47
  while(1)
48
  {      
49
    //===== Program =====
50
    if (!(PINB &(1<<PINB4)) && !(PINA &(1<<PINA1)))
51
    {
52

53
      OCR1B  = 0;  
54
    }
55
        
56
    if (PINB &(1<<PINB4))    //Signal 1
57
    {
58
      OCR1B = 128;    
59
    }    
60
  }

Grüße
roland
#3189453
Lesenswert?
• ▲
▼
roland schrieb:

> Meiner Meinung nach sollte die Flankenhöhe z.B. 1/3 lang 5V betragen und
> 2/3 lang 0V.

Deine Verwendung des Begriffs 'Flankenhöhe' ist extrem missverständlich. 
Denn dein Symptom scheint nichts mit einer Flanke zu tun zu haben.

Wenn deine PWM 1/3 der Zeit auf 5V ist und 2/3 der Zeit auf 0V, dann 
hast du im zeitlichen Mittel eine Spannung von  (1*5 + 2*0) / 3 = 1.66V. 
Und das ist ja wohl das, was du misst.
Gast #3189549
Lesenswert?
• ▲
▼
ok ich sehe schon ich habe mich nicht gut ausgedrückt.

Die Messung habe ich mit einem Oszi gemacht und darauf kann man 
erkennen, das die einzelnen Flanken nur 1,6V haben.
In dem Zusammenhang dürfte der Begriff Flanke passen. Hab auch ein Bild 
angehängt, die Qualität ist leider nicht sehr gut. Aber man dürfte 
erkennen was ich meine.
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.