ATMega16 PWM - externe clock

Gast #1860558
Lesenswert?
• ▲
▼
Hallo zusammen,

ich versuche momentan eine Manchester-codierte Nachricht über PWM 
abzugeben. ich nutze einen ATMega16 mit externen 8MHz Oszillator. Das 
Signal auf das ich die Nachricht aufbringen möchte läuft mit 125 KHz. 
Ich nutze Timer/Counter1 (16 Bit)da er mir sowohl Fast PWM mit Top OCR1A 
bietet wie auch ansteuerung über externe clock (T1). Ein Halbbit des 
Manchestercodes soll 32 125KHz Zyklen (logischerweise ein Bit 64 Zyklen) 
lang sein.

Probleme: 1. Wenn ich OCR1B nach der Initialisierung von Timer1 setzen 
will funktioniert es nicht (bleibt 0)
2. Wenn ich es vorher setze wird der Ausgang fürs PWM Signal nicht 
gesetzt (PD4)

hier Programmauszug :
1
/* includes sind alle da hab nur leider das programm grad nicht hier, deswegen gibts nur die wichtigsten auszüge*/
2

3
uint8_t nachricht[63]; 
4
/* an jeder stelle wird ein bit gespeichert hab mir den programmteil grad gespart*/
5

6
uint8_t k=0;
7

8
ISR (TIMER1_OVF_vect){
9
  
10
  if(nachricht[k]) {TCCR1A |= (1<<COM1B0); } 
11
  else{ TCCR1A &= ~(1<<COM1B0); } 
12
  /* wenn das aktuelle bit 1 ist dann invertierend ansonsten nicht invertierend */
13
  k++;
14
  if (k==64){ k = 0; } 
15
}
16

17
void pwminit(){
18
  TCCR1A |= (1<<COM1B1) | (1<<WGM11) | (1<<WGM10) ;
19
  TCCR1B |=  (1<<WGM12) | (1<<WGM13) | (1<<CS10) | (1<<CS11) | (1<<CS12) ;
20
  // PWM mode 15, externe clock an T1, vorbereitung für compareausgabe
21
  TIMSK |= (1<<TOIE1); //Timer1 overflow ein
22
}
23

24
int main(){
25
  DDRD = 0xFF;
26
  OCR1A = 64-1; // PWM Zähler bis 63
27
  OCR1B = 32; // 50% PWM durch umschalten bei 32
28
 
29
  pwminit();
30
  
31
  sei();
32
  while (1){}
33

34
return 0;
35
}

Achso, falls interessant genutzt wird AVRstudio 4 und programmiert und 
gedebuggt via JTAG ICE.

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.