Hallo,
ich bin grad dabei in die Welt der ATmegas und C einzusteigen und will
ein wenig probieren.
Allerdings häng ich jetzt fest:
Ich möchte Messdaten eines Eingangs über RS232 an einen PC schicken,
soweit kein Problem, das würde ja über etwas wie
1 | while(1)
|
2 | {
|
3 | for(i=0;i<6;i++)
|
4 | {
|
5 | uart_puti(adc(i));
|
6 | uart_putc(' ');
|
7 | }
|
8 | uart_putc('\n');
|
9 | _delay_ms(200);
|
10 | }
|
gehen.
Gut, gut...Nun möchte ich aber auch gleichzeitig das eine LED
blinkt...das würde ja nun so gehen
1 | DDRD |= (1 << PD0);
|
2 | while(1)
|
3 | {
|
4 | PORTD |= (1 << PD0);
|
5 | _delay_ms(50);
|
6 | PORTD &= ~(1 << PD0);
|
7 | _delay_ms(1000);
|
8 | }
|
Nun gut, aber wie bekomme ich beides gleichzeitig hin? Denn, wenn ich
das richtig verstanden habe, so werden doch die Schleifen nie verlassen,
oder?
Ich hätte da so eine Idee wie es gehen würde, weiß aber nicht genau ob
das sinnvoll ist und ob es denn überhaupt funktionieren würde. Meine
Idee ist, dass in der Schleife mit dem Senden der Daten ja ein _delay_ms
ist. Nun könnte ich ja folgendes machen, eine Funktion definieren die
mir den Pin der LED toggelt, in der Schleife des uarts eine Variable
hochzählen lasse, und wenn die Variable einen bestimmten Wert übersteigt
wird die toogle funktion ausgeführt. Das würde doch aber eigentlich nur
funktionieren wenn zwischen Ein- und Ausschalten der LED die gleiche
Zeit liegen sollte, oder?
Ich hoffe ihr könnt mir helfen!
Grüße
Peter