kramann.info
© Guido Kramann

Login: Passwort:










Mikrocontroller
1 Einfuehrung
..1.1 Entwicklungsgeschichtliches
..1.2 Maschinensprache
..1.3 Assemblerbeispiel
..1.4 Sprachwahl
..1.5 Praxis
....1.5.1 Digital_IO
....1.5.2 Byteoperationen
....1.5.3 AVR_Studio
....1.5.4 Testboard
....1.5.5 Aufgaben
....1.5.6 Do_it_yourself
......1.5.6.1 Ampel
......1.5.6.2 Programmierer
..1.6 Literatur
..1.7 Programmierer
....1.7.1 Bauverlauf
....1.7.2 KurzreferenzLow
....1.7.2 Kurzreferenz_16PU
..1.8 Uebung1
..1.9 BoardAtHome
....1.9.1 Software
....1.9.2 Hardware
....1.9.3 Knoppix
....1.9.4 Aufbau
....1.9.5 LED
2 Oszillator
..2.1 Assembler
..2.2 Interner_RC
..2.3 Quarz
..2.4 Taktgenerator
3 DigitalIO
..3.1 Elektrische_Eigenschaften
..3.2 Pullup_Widerstaende
..3.3 Bitmasken_Eingang
..3.4 Bitmasken_Ausgang
..3.5 Tic_Tac_Toe
....3.5.1 DuoLEDs
....3.5.2 Schaltplan
....3.5.3 Spielfeld
....3.5.4 Anwahl
....3.5.5 Kontrolle
..3.6 Laboruebung2
..3.7 Laboruebung2_alt
4 PWM
..4.1 Prinzip
..4.2 Nutzen
..4.3 Generierung
..4.4 Programmierung
..4.5 Servos
..4.7 Laboruebung3
..4.8 LoesungUE3
..4.9 Uebung6
5 LichtKlangKugeln
..5.1 LED
..5.2 RGB
..5.3 Sensoren
..5.4 lautsprecher
..5.5 tonerzeugung
6 UART
..6.1 Bussysteme
..6.2 UART
..6.3 RS232
..6.4 Hardware
..6.5 Senden
..6.6 Hyperterminal
..6.7 Empfangen
..6.8 Broadcast
..6.9 Uebung4
7 Infrarot
..7.1 schalten
..7.2 seriell
..7.3 Uebung
8 OOP
..8.1 Probleme
..8.2 Konzept
..8.3 Statisch
..8.4 Datentypen
..8.5 RS232
....8.5.1 Prozedural
....8.5.2 Analyse
....8.5.3 Umsetzung
....8.5.4 Vererbung
....8.5.5 Statisch
....8.5.6 Performance
..8.6 Fahrzeug
9 ADW
..9.1 ADW
..9.2 Zaehler
10 Peripherie
..10.1 RS232Menue
..10.2 ASCIIDisplay
..10.3 Tastenmatrix
..10.4 Schrittmotor
..10.5 Zaehler
..10.6 Uebung7
11 SPI
..11.1 Testanordnung
..11.2 Register
..11.3 Test1
..11.4 Test2_Interrupt
..11.5 Test3_2Slaves
..11.6 Laboruebung
12 EEPROM
13 I2C
..13.1 MasterSendByte
..13.2 MasterSend2Bytes
..13.3 MasterReceiveByte
..13.4 MasterReceive2Bytes
14 Anwendungen
..14.1 Mechatroniklabor
....14.1.1 Biegelinie
....14.1.2 Ausbruchsicherung
....14.1.3 Einachser
....14.1.4 AV
....14.1.5 Vierradlenkung
....14.1.6 Kommunikation
..14.2 Sinuserzeugung
....14.2.1 Variante1
....14.2.2 Variante2
....14.2.3 Variante3
....14.2.4 Variante4
..14.3 Laboruebung8
..14.4 Loesung_Ue8
..14.5 SPI_Nachtrag
20 Xubuntu

9.2 Verwendung eines Timers als Zähler

Nutzen des Beispiels

  • Erstellen eines Echtzeitfähigen Systems.

Verwendete Befehle und ihre Bedeutung

Befehl Bedeutung
TCCR2 Resgister zur Konfigurierung des Timers 2
DDRD |= (1<<PD7); Bit 7 von PortD in jedem Fall auf 1 setzen, ohne die anderen Bits zu beeinflussen.

Tabelle 9.2-1: Befehlsübersicht

Beispielprogramm

#include<avr/io.h>

using namespace std;

int main(void)
{
    bool toggel = false;

    //Timer 2 als Zähler mit Vorteilung von 256 definieren:

            //WGM20 = 0 WGM21 =0 => Zählbetrieb, zählt ständig von 0 bis 255
            //COM20 = 0 COM21 = 0 => Pin OC2 nicht verbunden
            //COM20 = 1 COM21 = 1 => Pin OC2 löschen on Top, setzen bei Compare
            //CS 22 21 20 : 000 gestoppt
            //CS 22 21 20 : 001 Vorteilung durch 1
            //CS 22 21 20 : 010 Vorteilung durch 8
            //...
    TCCR2 = (1<<FOC2) | (0<<WGM20) | (0<<COM21) | (0<<COM20) | (0<<WGM21) | (1<<CS22) | (1<<CS21) | (0<<CS20);

    //OCR2 auf bestimmten Comparewert setzen, um Ton zu erzeugen: ???
    //OCR2 = 127; 

    DDRD |= (1<<PD7); //Pin mit Lautsprecher auf Ausgang setzen.

    toggel = false;

    TCNT2=0;
    while(true)
    {
        //Pin PD7 toggeln:
        if(toggel==true)
            PORTD |=0b10000000;
        else
            PORTD &=0b01111111;
        toggel=!toggel;

        while(TCNT2<36); //90->400Hz, 36->1kHz Durch das Toggeln hört man immer f/2
        TCNT2=0;
    }
    return 0;
}
 

Code 9.2-1: Beispiel

Projekt herunterladen
Übung 4b)
  • Schreiben Sie ein Programm, das auf Tastendruck einen Countdown von 5 Sekunden startet, der auch auf der 7-Segment-Anzeige angezeigt wird, und danach zwei Motoren für drei Sekunden startet.