mikrocontroller.net

Forum: Compiler & IDEs ATMega16 PWM - externe clock


Autor: der_hier (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :
/* includes sind alle da hab nur leider das programm grad nicht hier, deswegen gibts nur die wichtigsten auszüge*/

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

uint8_t k=0;

ISR (TIMER1_OVF_vect){
  
  if(nachricht[k]) {TCCR1A |= (1<<COM1B0); } 
  else{ TCCR1A &= ~(1<<COM1B0); } 
  /* wenn das aktuelle bit 1 ist dann invertierend ansonsten nicht invertierend */
  k++;
  if (k==64){ k = 0; } 
}

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

int main(){
  DDRD = 0xFF;
  OCR1A = 64-1; // PWM Zähler bis 63
  OCR1B = 32; // 50% PWM durch umschalten bei 32
 
  pwminit();
  
  sei();
  while (1){}

return 0;
}


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

Autor: der_hier (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab den Fehler gefunden, war nichts Programmtechnisches sondern die 
beschaltung am PWM-Ausgang

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.