Hallo an alle bin absoluter Neuling und bitte dringend um Hilfe! Hab mir von Myavr das Komplettpacket gekauft und schon mal mit den Vorlagen etwas herumprobiert. Jetzt möchte ich versuchen eine Led angeschlossen an enen Pin für eine Zeit x leuchten also den besagten Pin anzusteuern. Danke schon mal im voraus
>Jetzt möchte ich versuchen eine Led angeschlossen an enen Pin für eine >Zeit x leuchten also den besagten Pin anzusteuern. Du hast unser aller Erlaubnis dazu. Brauchst aber auch nicht fragen.
Wow langes Tutorial hättest du einen Tip unter welchem Kapitel ich da suchen soll.
>Wow langes Tutorial >hättest du einen Tip unter welchem Kapitel ich da suchen soll. Wie wäre es, wenn du es von Anfang an durcharbeiten würdest? Tutorien sind in der Regel so aufgebaut, dass ein Kaptiel auf dem anderen aufbaut. Mit deiner Vorgehensweise wirst du hier viele Freunde finden...
War nicht bös gemeint Werd das mal durcharbeiten Würd mich aber trotzdem über ein Code Beispiel freuen.
Such mal nach Timer. Ich denke allerdings, dass du das ohne Grundlagen unter Umständen nicht verstehen wirst
Also wenn ich das richtig verstehe wartet der Timer eine gewisse Zeit sprich zählt hoch bis er den nächsten Pin oder Port ansteuert. Wenn ich das in einer Schleife mach blinkt es bei einer Led und ein Lauflicht entsteht bei zwei oder mehr Led. Möchte aber das das Led bei Tastendruck für 3 sec leuchtet Kann ich da einfach PORTB = 0x04 +3sec; schreiben???
> Kann ich da einfach > PORTB = 0x04 +3sec; > schreiben??? Ich würde mir zuerst mal ein Buch über C-Programmierung besorgen. Bei dir fehlt es an elementarsten Grundlagen. Mit Timer, als C-Code, funktioniert das so: Du stellst den Timer so ein, dass er z.B. alle 0,01 Sekunden einen Interrupt auslöst. Weiters legst du eine globale Variable vom Typ volatile unsigned integer an, z.B "LED_time" genannt. Wenn du die LED einschaltest, setzt du die Variable "LED_time" auf die gewünschte Leuchtdauer, in diesem Fall also auf 100, wenn die LED eine Sekunde lang leuchten soll. In der Timer-Interrupt-Routine überprüfst du, ob die Variable "LED_time" größer Null ist. Wenn ja, verminderst du "LED_time" um 1 und prüfst anschliessend, ob "LED_time" bereits Null ist. Wenn ja, schaltest du die LED wieder aus. Als C-Code sieht das so aus: (LED z.B. an PORTB.1 gegen Masse angeschlossen)
1 | //LED einschalten:
|
2 | PORTB |= 0x01; //setze Pin 1 von PORTB auf 1 |
3 | LED_time = 100; //Leuchtdauer festlegen |
4 | |
5 | //In der Interrupt-Routine des Timers müssen folgende Zeilen stehen:
|
6 | if(LED_time) //Wenn die Variable größer Null ist |
7 | {
|
8 | LED_time--; //Variablen-Wert um eins vermindern |
9 | if(!LED_time) //Wenn Variable Null ist |
10 | {
|
11 | PORTB &= 0xFE; //Bit 1 von PORTB auf 0 setzen |
12 | };
|
13 | };
|
Zum näheren Verständnis würde ich mir folgende Artikel ansehen: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#Die_Timer.2FCounter_des_AVR http://www.mikrocontroller.net/articles/Bitmanipulation
Welches Buch würdest du empfehlen? Hab mir das C Programmieung von Anfang an von Erlenkötter gekauft aber da steht nix von einem Timer drinnen.
Ist ja auch klar. C ist eine Programmiersprache und eine Timer ist ein Bestandteil eines uC. Um Mikrocontroller richtig programmieren zu könne muss man 2 Dinge könne: 1. eine Programmiersprache z.B C 2. Kenntnisse über den grundlegenden Aufbau und Funktionsweise von Mikrocontroller haben -> Man kann C nicht an Mikrocontroller lernen, wenn man von denen keine Ahnung hat Und in einem C Buch steht nix über Timer, da man den Timer nicht programmiert sondern nur über seine Register konfiguriert. Das steht wiederum in Büchern über Mikrocontroller.
Am sinnvollsten wäre es natürlich, wenn du dir Bücher ansiehst, die sowohl (AVR-)Mikrocontroller als auch C-Programmierung zum Thema haben. Bei www.amazon.de findest du ein paar Bücher, wenn du "AVR Programmierung" als Suchbegriff eingibst. Die Auswahl wird noch größer, wenn du einigermaßen Englisch kannst, manche Bücher gibt's leider nicht in Deutsch.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.