Gast
#1015137
Hallo ich habe eine Frage, wie kann ich 14 Byte die ich nach einander gesendet bekomme in 14 Variable laden. Alles was ich versucht habe geht nicht.
1 | |
//************************ Empfangen von Daten *******
#include <stdlib.h>
#include <avr/io.h>
#include <util/delay.h>
#include <inttypes.h>
#define F_CPU 16000000L
#define BAUD 2400L
#define ubrr_value ( ( F_CPU / (16*BAUD) ) - 1 )
// Prototypen
uint8_t uart_getc(void);
void initusart ();
void uart_gets( char* Buffer, uint8_t MaxLen );
unsigned char adresse[15];
unsigned char adresse1[15];
unsigned char freigabe[15];
unsigned char messwerte[15];
int iffreigabe;
//******************** main *********************
int daten(void)
{
char strBuffer[14];
DDRB = 0xff;
initusart ();
// void uart_gets( char* Buffer, uint8_t MaxLen )
uart_gets( &strBuffer[0], 14 );
}
/************************ Zeichen empfangen *******************/
uint8_t uart_getc(void)
{
lcd_string("Lesen");
while (!(UCSRA & (1<<RXC))); // warten bis Zeichen verfuegbar
//14 Byte in die Variabele abresse 1-14 einlesem
adresse[1] = UDR;
adresse[2] = UDR;
adresse[3] = UDR;
adresse[4] = UDR;
adresse[5] = UDR;
adresse[6] = UDR;
adresse[7] = UDR;
adresse[8] = UDR;
adresse[9] = UDR;
adresse[10] = UDR;
adresse[11] = UDR;
adresse[12] = UDR;
adresse[13] = UDR;
adresse[14] = UDR;
return UDR; // Zeichen aus UDR an Aufrufer
zurueckgeben
}
//********Zeichen sammeln und zum String zusammen setzen*********
void uart_gets( char* Buffer, uint8_t MaxLen )
{
uint8_t NextChar;
uint8_t StringLen = 0;
NextChar = uart_getc();
while( NextChar != '\n' && StringLen < MaxLen - 1 )
{
*Buffer++ = NextChar;
StringLen++;
NextChar = uart_getc();
}
}
//***************UART Initialisieren********************
void initusart ()
{
UBRRH = (unsigned char)(ubrr_value>>8);
UBRRL = (unsigned char)ubrr_value;
//UBRRH = ubrr_value >> 8;
//UBRRL = ubrr_value & 0xFF;
UCSRB = (1<<RXEN)|(1<<TXEN);// UART RX einschalten
UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
}
[/c]