www.mikrocontroller.net

Forum: Compiler & IDEs pwm mit timer interrupt


Autor: braineater (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
hallo alle zusammen,

ich würde gerne mit meinem Atmega32 (8 Mhz Takt) einige PWM-Signale 
ausgeben. Dafür hab ich mir überlegt, dass ich einen Timer-Interrupt 
verwende, der mir das PWM-Signal an jedem IO-Port erzeugen kann. 
Daraufhin hab ich voliegenden Code geschrieben der erstmal nur ein 
PWM-Signal an PC0 erzeugt.

#include <avr/io.h>
#include <avr/interrupt.h>

uint8_t counter,speed;

ISR(TIMER2_OVF_vect)
{
  if(counter == 0)
  {
    counter=255;
    PORTC &= ~( 1 << PC0 );
  }
  if(counter == 3)
    PORTC |= ( 1 << PC0);
  counter--;
}

int main()
{
  counter=255;
  TCCR2 |= (1<<CS20);
  TIMSK|=(1<<TOIE2);
  sei();
  speed = 100;
  while(1);
}

Nun fuktioniert der Code eigentlich recht gut, bis auf die Kleinigkeit, 
dass das PWM-Signal nach einer Kreuzung zwischen Rechteck und Sägezahn 
Signal aussieht (was man auf dem Bild von meinem "Oszi" sehen kann).
Weiß jemand wie man das beheben könnte und weiß jemand ob ein L293D mit 
diesem Signal überhaupt funktionieren kann oder ob ich das Testen der 
Drähte erstmal sein lassen kann?

MFG braineater

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast den Port-Pin nicht zum Ausgang gemacht, also schaltest du nur 
den Pullup ein und aus. Klar, dass du dann kein sauberes Signal 
bekommst.

Autor: braineater (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oh stimmt :-/ jetzt siehts auch schon viel schöner aus.
danke für die schnelle hilfe =)

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.