Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Einrichtung weiterer PWMs
08.11.2007, 20:59
Beitrag #2
RE: Einrichtung weiterer PWMs
Hallo Frederik!

Ja, du kannst auch weitere Ports als PWM-Ausgänge nutzen.
Schnell genug sind dafür die Ports 1 bis 16.
17 bis 21 sind dafür zu langsam.

Zur Umsetzung:
Für eine PWM nutzt man einen Timer. Auf dem Atmel mit der von uns genutzten Bibliothek ist der der Timer 2 noch frei und kann dafür genutzt werden.

Man weist dem Timer2 eine Interruptroutine mit dem Befehl:

timerAttach(TIMER2OVERFLOW_INT, pwm_funktion ) zu.

dann muss die Routine dazu geschrieben werden. Diese könnte so aussehen.


int globales_i;
int gobaler_motorx;

void pwm_routine(void)
{
globales_i = globales_i + 1;
if (globales_i > 100) globales_i = 0;

if (globales_i < globaler_motorx) setDigitalOut(deinPWMPort);
else clearDigitalOut(deinPWMPort);
}


Die Variable globaler_motorx kannst du nun in jeder Funktion beliebig zwischen 0 und 100 setzen und bestimmst somit, mit wie viel Prozent der Leitung die PWM arbeiten soll. Weitere PWM-Ausgänge kannst du analog nutzen und in die gleiche Interruptroutine parallel einbauen. Dabei erhöhen sich nur die If-Abfragen. Für jede PWM eine. Und du brauchst natürlich für jede PWM eine weitere globale Variable zum vergleichen und über die du den Ausgang steuern kannst.

Ich hoffe, das hilft.

Grüße

Thomas
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Nachrichten in diesem Thema
RE: Einrichtung weiterer PWMs - thomas - 08.11.2007 20:59

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste

Kontakt | Krause Robotik | Nach oben | Zum Inhalt | Archiv-Modus | RSS-Synchronisation