Hallo an Alle, Ich bin Student (Praktikant) und wir wollen einen Leistungsgenerator: 1KV_Ausgangspannung und dazu ein Kommunikationsboard aufbauen. Auf dem Kommunikationsboard sollte 3 Kommunikationsschnittstellen (RS 232, USB und Ethernet) zur Verfügung gestellt werden. Von diese Schnittstellen(RS 232, USB und Ethernet) sollte es möglich sein durch uC die Ausgangsspannung einzustellen. Zur testen der Schnittstellen RS 232 habe ich folgende Funktionnen getestet und alles hat wunderbar funktionniert: ich konnte Daten vom PC nach uC senden. Meine sorge ist folgendes: Ich werde später nicht nur Zahlen zur uC senden zw. empfangen sondern Zeichen wie ZB: 700V Wie kann man das in der uC einprogrammieren ? Gibt es ein Protokol dafür, die man seine Befehle einprogrammieren muss ?? Kann jemand mir bitte dabei weiterhelfen ?? vielen Danke
1 | /*
|
2 | * RS_232.c
|
3 | *
|
4 | * Created: 29.10.2012 10:11:53
|
5 | * Author: HP_Advanced
|
6 | */
|
7 | |
8 | |
9 | #include <avr/io.h> // Register Definition fuer Atmega 2560 |
10 | #include <delay.h> // Für Delay-Funktion |
11 | |
12 | |
13 | # define FOSC 8 000 000 // Clock Speed = Oscillator-Freq
|
14 | #define BAUD 9600 // Baudrate
|
15 | #define MYUBRR FOSC/16/BAUD-1 // Geschwindigkeit der Kommunikation
|
16 | |
17 | |
18 | /*------------------------------------------------------------------
|
19 | Funktionen zum USART - RS232
|
20 | ------------------------------------------------------------------*/
|
21 | void USART_Init( unsigned int ubrr ) |
22 | {
|
23 | |
24 | UBRR0H = (unsigned char)(ubrr>>8); |
25 | UBRR0L = (unsigned char)ubrr; |
26 | UCSR0B = (1<<RXEN0)|(1<<TXEN0); /* Enable receiver and transmitter */ |
27 | UCSR0C = (1<<USBS0)|(3<<UCSZ00); /* Set frame format: 8data, 2stop bit */ |
28 | |
29 | }
|
30 | |
31 | |
32 | /* 8 Bit Wort senden */
|
33 | void USART_Transmit( unsigned char data ) |
34 | {
|
35 | |
36 | while ( !( UCSR0A & (1<<UDRE0)) ); /* Wait for empty transmit buffer */ |
37 | UDR0 = data; /* Put data into buffer, sends the data */ |
38 | }
|
39 | |
40 | /* 8 Bit Wort Emfangen */
|
41 | unsigned char USART_Receive( void ) |
42 | {
|
43 | while ( !(UCSR0A & (1<<RXC0)) ); /* Wait for data to be received */ |
44 | return UDR0; /* Get and return received data from buffer */ |
45 | }
|
46 | |
47 | |
48 | |
49 | |
50 | int main(void) |
51 | {
|
52 | USART_Init(MYUBRR); |
53 | |
54 | while(1) |
55 | {
|
56 | USART_Transmit(65); |
57 | _delay_ms(1000); |
58 | // USART_Receive()
|
59 | |
60 | }
|
61 | }
|
62 | |
63 | }
|