Hallo,
ich möchte gerne mit meinem ATmega88PA an LabView…….. ASCII Zeichen mit
der Seriellen –Schnittstelle senden.
Dazu möchte ich ein Programm das folgendes macht.:
Permanentes Aussenden der ASCII-Zeichen von 00h-ffh im Abstand von 200ms
Ist das mit meiner Anfänger Libary überhaupt möglich ?
Anton kann ich ja senden, das funktioniert.
Wenn Ja könnte mir das Bitte jemand Zeigen wie man das richtig
formuliert/schreibt zu meinem Code passend?
1 | /*
|
2 | * serial1.h
|
3 | */
|
4 |
|
5 | #ifdef UCSR0A
|
6 |
|
7 | //Initialisiert UART gegebener Oszillatorfrequenz und Baudrate
|
8 | void uart_init(long Oszi, long Baud)
|
9 | {
|
10 | UBRR0L = (unsigned char)(Oszi / 16L / Baud - 1);
|
11 | UBRR0H = (unsigned char)((Oszi / 16L / Baud - 1) >> 8);
|
12 | UCSR0A = 0x00;
|
13 | UCSR0B = UCSR0B | (1 << TXEN0) | (1 << RXEN0);
|
14 | UCSR0C = UCSR0C | (1 << UMSEL01) | (1 << UCSZ01) |
|
15 | (1 << UCSZ00);
|
16 | }
|
17 |
|
18 | //Empfaengt 1 Byte vom UART
|
19 | unsigned char getchar2(void)
|
20 | {
|
21 | while (!(UCSR0A & (1 << RXC0)));
|
22 | return UDR0;
|
23 | }
|
24 |
|
25 | //Sendet 1 Byte an UART
|
26 | void putchar2(unsigned char data)
|
27 | {
|
28 | while (!(UCSR0A & (1 << UDRE0)));
|
29 | UDR0 = (char)data;
|
30 | }
|
31 |
|
32 | //Sendet String an UART
|
33 | void puts2(char *str)
|
34 | {
|
35 | unsigned char c;
|
36 | while ((c = *str++) != '\0')
|
37 | putchar2(c);
|
38 | }
|
39 |
|
40 | #else
|
41 |
|
42 | //Initialisiert UART gegebner Oszillatorfrequenz und Baudrate
|
43 | void uart_init(long Oszi, long Baud)
|
44 | {
|
45 | UBRRL = (unsigned char)(Oszi / 16L / Baud - 1);
|
46 | UBRRH = (unsigned char)((Oszi / 16L / Baud - 1) >> 8);
|
47 | UCSRA = 0x00;
|
48 | UCSRB = UCSRB | (1 << TXEN) | (1 << RXEN); //RX TX Enable
|
49 | //Bit Mode
|
50 | UCSRC = UCSRC | (1 << URSEL) | (1 << UCSZ1) | (1 << UCSZ0);
|
51 | }
|
52 |
|
53 | //Empfaengt 8 Daten Bits vom UART
|
54 | unsigned char getchar2(void)
|
55 | {
|
56 | while (!(UCSRA & (1 < <RXC)));
|
57 | return UDR;
|
58 | }
|
59 |
|
60 | //Sendet 8 Daten Bits an UART
|
61 | void putchar2(unsigned char data)
|
62 | {
|
63 | while (!(UCSRA & (1 << UDRE)));
|
64 | UDR = (char)data;
|
65 | }
|
66 |
|
67 | //Sendet String an UART
|
68 | void puts2(char *str)
|
69 | {
|
70 | unsigned char c;
|
71 | while ((c = *str++) != '\0')
|
72 | putchar2(c);
|
73 | }
|
74 |
|
75 | #endif
|
1 | /*
|
2 | * Serial1-Test.c
|
3 | * senden an Labview
|
4 | */
|
5 |
|
6 | #define F_CPU 16000000UL
|
7 | #define BAUD 9600UL
|
8 |
|
9 | #include <avr/io.h>
|
10 | #include "serial1.h"
|
11 |
|
12 | int main(void)
|
13 | {
|
14 | char z;
|
15 |
|
16 | //UART mit Clockfrequenz und Baudrate initialisieren
|
17 | uart_init(F_CPU, BAUD);
|
18 |
|
19 | while (1)
|
20 | {
|
21 | //z = getchar2(); //ein Zeichen einlesen
|
22 | //if (z == 'a')
|
23 | puts2(" Anton\r\n"); //Zeichenkette ausgeben
|
24 | //else if (z == 'b')
|
25 | //puts2(" Berta\r\n");
|
26 | }
|
27 | }
|
Grüsse Huber