Hallo, ich arbeite zurzeit an meinem ersten größeren C Projekt. Ich möchte das ein Taster immer Abgefragt wird und eine LED immer blinkt. Wie muss ich dass in meinem Angehängten Projekt einfügen damit beides gleichzeitig geht?
bit oldstate; // Old state flag
void main() { DDB3_bit = 0; // Set pin as input DDB0_bit = 1; // Set pin as output DDB1_bit = 1; // Set pin as output DDB2_bit = 1; // Set pin as output DDB4_bit = 1; // Set pin as output
Dass soll eingefügt werden: PORTB |= (1<<DDB1); // Blinker setzen Delay_ms(600); PORTB &= ~(1<<DDB1); Delay_ms(600);
Ich habe gehört dass man die LED mit einem Timer blinken lassen kann, nur leider verstehe ich dass nicht wirklich. Vielleicht kann mir dass einer erklären oder hat einen hilfreichen Link.
Viele Grüße Jonas Weßling
PS.: Ich werde wenn es fertig ist mal unter Projekte vorstellen.
erwarte von mir keine Hilfe, "C" ist für mich ne fremde Welt. Aber klar ist, daß Du mit dem Delay das komplette Programm unterbrichst. Kommt in dieser Zeit ein Tastebdruck rein, bleibt er unbemerkt. Also muß das Blinken in eine Timer-Routine ausgelagert werden. Der schlaue Google-Nutzer findet schnell zig Beispiele: http://www.mikrocontroller.net/articles/Absolute_Beginner-AVR_Steckbrettprojekte#LED_blinken_lassen
Gruß Gerhard
------------------------------------------------------------------------------------------- hier mein aktueller TinyKatalog
Danke schon mal. Ich hatte gegoogelt aber bin nicht auf diese Seite gestoßen. Das mit dem Delay habe ich auf meinem Entwicklungsboard gemerkt, ich habe immer wieder einen Tastendruck abgegeben und es hat sich nichts getan. Vielleicht hat einer noch eine Lösung, der sich mit C auskennt.
I kenn hab die grundlagen in der schule gelernt und kann dir nur mäßig weiterhelfen.
Also die Taster willst du ja immer abfragen deshalb würde ich es auch so machen wie du.
Delay ist ja sehr nützlich aber eben sehr oft versperrt es dir nötige rechenleistung des controllers da er einfach sein programm unterbricht und wartet.
Timer habe ich auch noch keinen geschrieben aber die seite von diezel ist da sehr gut damit habs sogar ich gecheckt! Ich frage mich nur warum du die ausgänge bitweise definierst. schreib doch einfach DDRB= 0b10000000; dann sparst du dir viel schreiberei.
Moin, mit C kenne ich mich auch nicht aus. Aber schau dir mal diese Seite an. http://www.rn-wissen.de/index.php/Timer/Counter_%28Avr%29 Was für dich auch noch interessant ist, sind die Interrupts. Damit sollte man auch aus einem Delay wieder heraus kommen. Einfach mal googlen oder besorge dir Bascom. Für kleine Projekte bis 4K ist es Kostenlos zu nutzen. Gerhard (Diezel) Hat da ja schon einige gute Beispiele hier im Forum vorgestellt. Gruß Ingo