Forum: Mikrocontroller und Digitale Elektronik ATmega8 Pin für eine Zeit x ansteuern


von Mathias M. (mc12)


Lesenswert?

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

von STK500-Besitzer (Gast)


Lesenswert?

>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.

von Mathias M. (mc12)


Lesenswert?

Sorry meine Frage dazu ist

Wie schreibt man das in AVR C ?

von STK500-Besitzer (Gast)


Lesenswert?


von Mathias M. (mc12)


Lesenswert?

Wow langes Tutorial
hättest du einen Tip unter welchem Kapitel ich da suchen soll.

von STK500-Besitzer (Gast)


Lesenswert?

>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...

von Mathias M. (mc12)


Lesenswert?

War nicht bös gemeint Werd das mal durcharbeiten

Würd mich aber trotzdem über ein Code Beispiel freuen.

von Dussel (Gast)


Lesenswert?

Such mal nach Timer. Ich denke allerdings, dass du das ohne Grundlagen 
unter Umständen nicht verstehen wirst

von Mathias M. (mc12)


Lesenswert?

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???

von War_auch_mal_Anfänger (Gast)


Lesenswert?

> 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

von Mathias M. (mc12)


Lesenswert?

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.

von ich (Gast)


Lesenswert?

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.

von War_auch_mal_Anfänger (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.