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

10.1 Aufbau eines Benutzer-Menüs über die RS232-Schnittstelle

  • Zur leichteren Durchführung von tests mit der im folgenden vorgestellten Peripherie, werden wir nun zu der Möglichkeit Daten am Hyperterminal vom Mikrocontroller aus zu schicken, auch diejenige implementieren, die es ermöglicht im Mikrocontroller vom PC Daten zu empfangen.
  • In der vorhandenen Klasse wird lediglich die folgende Methode ergänzt:
01_rs232menue.zip - Download des nachfolgenden Projektes.
    char* holeText()
    {
        i=0;
        while(true)
        {
            while( !(UCSRA & (1<<RXC)));
            puffer[i]=UDR;
            //Zeichen zurückschicken:
            while( !(UCSRA & (1<<UDRE)) ); 
            UDR = puffer[i];       
            //Ende Zeichen zurückschicken              
            i++;
            if(puffer[i-1]=='\r' || i>=MAXPUFFER) //Return-Taste
                break;
        }
        puffer[i]='\0';
        return puffer;
    }
 

Code 10.1-1: Methode, um am Hyperterminal eingegebenen Text an den Mikrocontroller zu schicken.

  • Zunächst wird gewartet, ob der Vorgang für die Übertragung eines Zeichens abgeschlossen ist.
  • Dann wird das empfangene Zeichen gleich wirder zurückgeschickt.
  • Dies ist notwendig, um die eigenen Eingaben am Hyperterminal auch sehen zu können.
  • Auch hier wied wieder gewartet, bis der Sendevorgang abgeschlossen ist.
  • Bei jedem empfangenen Zeichen wird dann noch geprüft, ob es sich um die Return-Taste handelte und ggf. der Einlesevorgang abgeschlossen.
  • Im folgenden Hauptprogramm wird die neue Methode getestet:
#include <avr/io.h>

#define TAKTFREQUENZ 9216000

#include "RS232.h"

RS232 rs232;

int main(void)
{
    char* puffer_zeiger;

    rs232.start(true,true);

    while(true)
    {
        rs232.sendeText("Geben Sie eine Zeichenfolge ein, die Sie mit ENTER beenden:\n\r");
        puffer_zeiger = rs232.holeText();
        rs232.sendeText("\n\rSie haben folgende Zeichenfolge eingegeben:\n\r");
        rs232.sendeText(puffer_zeiger);
        rs232.sendeText("\n\r");
    }
	return 0;
}
 

Code 10.1-1: Hauptprogramm zum Testen der neuen Methode.