Wie erzeuge ich ein Hardware PWM mit 8Bit Timer0 ?

OP #3569866
Lesenswert?

Hallo alle miteinander!!!

Ich hätte zum altbekannten Thema PWM noch eine Frage.

Für meine TA habe ich das Projekt eine Sortiermaschine anhand eines 
Roboterarms mit 6 Servo`s zu programmieren. Die 4 PWM-Signale mit Timer1 
und Timer3 funktionieren problemlos, da ich aber sechs PC-PWM Signale 
benötige brauche ich auch noch einen der 8Bit Timer 0 oder 2.

Die 8Bit Timer besitzen jedoch kein ICR- Register, wie erzeuge ich hier 
das Rücksetzten des Signals??

Also Code beispiel, hier der Timer1:
1
  TCCR1A |= (1<<COM1A0|1<<COM1A1|1<<COM1B0|1<<COM1B1|1<<WGM11);
2
  TCCR1B |= (1<<WGM13|1<<CS11);
3
  TIMSK1 |= (1<<OCIE1A | 1<<OCIE1B);
4
  
5
   ICR1 =    1000; //Reset  both Signals to Zero (A+B)
6
   OCR1A =   930; //Set Signal A to One
7
   OCR1B =   900; //Set Signal B to One

Vielleicht hat mir jemand einen Tipp, wie das am einfachsten mit einem 
8Bit Timer zu realisieren waäre!!


Schon mal im Voraus vielen Dank für eure Hilfe!!
OP #3579012
Lesenswert?

Danke für eure Antworten.

Lösung für das PC-PWM mit dem 8-Bit Timer:

1
/************************************************************************/
2
/*                Configuration of Timer0 PC-PWM:
3
*CS01=1 -> PS =8
4
*WGM00 =1 -> PC-PWM (Mode 1)     
5
*OCR1x = 62 -> 1ms  / ca.93 ->1,5 / 124 ->2ms                           */      /************************************************************************/
6

7
TCCR0A |= (1<<COM0A1)|(1<<COM0B1)|(1<<WGM00);
8
TCCR0B |= (1<<CS01);
9
TIMSK0 |= (1<<OCIE1A | 1<<OCIE1B);
10
      
11
OCR0A =   93; //Set Signal A to One
12
OCR0B =   93; //Set Signal B to One

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