mikrocontroller.net

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


Autor: Mathias Mühlmann (mc12)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Mathias Mühlmann (mc12)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry meine Frage dazu ist

Wie schreibt man das in AVR C ?

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Mathias Mühlmann (mc12)
Datum:

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

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Mathias Mühlmann (mc12)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
War nicht bös gemeint Werd das mal durcharbeiten

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

Autor: Dussel (Gast)
Datum:

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

Autor: Mathias Mühlmann (mc12)
Datum:

Bewertung
0 lesenswert
nicht 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???

Autor: War_auch_mal_Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)
//LED einschalten:
PORTB |= 0x01; //setze Pin 1 von PORTB auf 1
LED_time = 100; //Leuchtdauer festlegen

//In der Interrupt-Routine des Timers müssen folgende Zeilen stehen:
if(LED_time) //Wenn die Variable größer Null ist 
  {
  LED_time--; //Variablen-Wert um eins vermindern
  if(!LED_time) //Wenn Variable Null ist
    {
    PORTB &= 0xFE; //Bit 1 von PORTB auf 0 setzen
    };
  };

Zum näheren Verständnis würde ich mir folgende Artikel ansehen:
http://www.mikrocontroller.net/articles/AVR-GCC-Tu...
http://www.mikrocontroller.net/articles/Bitmanipulation

Autor: Mathias Mühlmann (mc12)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: War_auch_mal_Anfänger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.