PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mini-Control Projekt, mit 3 PWM und Rs232 Input



placasoft
04.01.2009, 21:24
Hey,

ich habe schon öfters mal hier und da nach gefragt, aber nie konnte mir jemand direkt helfen. Deshalb poste ich mal was ich machen möchte und wenn sich jemand so gütig erweißt kann er mir ja vllt. helfen :)

Ich Möchte 3 LED's getrennt ansteuern, und das ganze via PWM. 2 Led's hatte ich schon hinbekommen, dann kam ich nicht dazu den 2ten Timer einzustellstellen. Hat jemand von euch irgendein Code Schnippsel, in demihr 3 Ports mit Pwm ansteuert?

Als nächstes möchte ich von meinem Pc aus mit den Control Unit in Verbindung gehen. Am liebsten wäre es mir Via Rs232, doch leider konnte ich noch nirgens etwas hilfreiches finden. Vllt könnt ihr mir ja helfen :)

Würde mich Rießig freuen.

Wünsche euch allen noch einen schönen Sonntag Abend!

Lg
Placa

pyr0skull
04.01.2009, 21:57
Hier ein Beispiel für 3 PWM-Kanäle an einem Atmega8:




#define LED_DDR DDRB
#define LED_PORT PORTB
#define LED_BLUE 3
#define LED_GREEN 2
#define LED_RED 1
#define BLUE_DUTY OCR2
#define GREEN_DUTY OCR1A
#define RED_DUTY OCR1B

int main() {
LED_DDR |= _BV(LED_BLUE) | _BV(LED_GREEN) | _BV(LED_RED);

TCCR1A |= _BV(COM1A1) | _BV(COM1B1) | _BV(WGM10);
TCCR1B |= _BV(WGM12) | _BV(CS11);
TCCR2 |= _BV(WGM20) | _BV(WGM21) | _BV(COM21) | _BV(CS21);

BLUE_DUTY = 0;
GREEN_DUTY = 0;
RED_DUTY = 0;

usw.

placasoft
04.01.2009, 22:12
Entschuldigung ich hatte vergessen zu erwähnen das ich mit Basvom Programmiere :)

Roboman93
06.01.2009, 23:29
ich hab ein bascomprogramm, mit dem ich auch leds dimme, bin aber im moment am falschen pc. aber geht ungefähr so:


Grundeinstellungen, also controller quartz usw.

Timer auf hohe frequenz einstellen, also das der interrupt sehr schnell ausgeführt wird

ausgänge definieren

für jede led eine variable definieren, zb von 1 bis 10. jetzt hat die led 10 helligkeitsstufen.

der interrupt: hier zählst du eine variable von 0 bis zur höhe der led-variablen hoch. bei jedem interrupt prüfst du, ob die led-variable mit der zählervariable übereinstimmt. wenn ja, schaltest du sie an. ist die zählervariable hochgezählt, werden alle leds ausgeschaltet und es geht von vorne los.

hoffe, du kannst es verstehen, kann aber auch nochmal den code posten

mfg roboman