UART empfangen geht nicht
Hallo Zusammen!
Meine Funktion getch() soll ein Zeichen über die UART-Schnittstellte einlesen. Jedoch passiert nichts.
Die Funktion putch() zum senden eines Zeichen geht einwandfrei.
Kann den Fehler einfach nicht finden. Vielleicht hat ja einer von euch eine Idee?
Vielen Dank!
Code:
#define TAKT 16000000UL
#define BAUD 9600UL
#define US1 0xE0
#define IRM 0
#define IRR 1
#define IRL 2
#include <avr/io.h>
#include <util/delay.h>
#include <stdlib.h>
#include "Motor/motor.h"
#include "IR/irmessung.c"
#include "US/usmessung.c"
//----------------------------Fuktionen-----------------------------------------------------------------//
//------------UART-Konfig---------------------//
void initusart (void){
unsigned char x;
UBRRL = (TAKT / (16UL * BAUD)) -1;
UCSRB |= (1 << TXEN) | (1 << RXEN);
UCSRC |= (1 << URSEL) | (1 << UCSZ1) | (1 << UCSZ0);
x = UDR;
}
//------------Char senden---------------------//
void putch (unsigned char x){
while ( ! (UCSRA & (1 << UDRE)));
UDR = x;
}
//------------Char emfangen---------------------//
unsigned char getch(void){
while (!(UCSRA & (1 << RXC)));
return UDR;
}
//------------Befehl einlesen---------------------//
void befehleinlesen (unsigned char *pbefehl, unsigned int anz){
unsigned char zwbef=0;
unsigned char zwerg=0;
zwbef=0xFF;
*pbefehl = zwbef >> 7;
//Motorbefehl
if(*pbefehl == 0x01){
zwerg=zwbef;
zwerg= zwerg & 0x60;
*(pbefehl+1)= zwerg >> 5;
zwerg=zwbef;
zwerg=zwerg & 0x10;
*(pbefehl+2)= zwerg >> 4;
zwerg=zwbef;
zwerg=zwerg & 0x0F;
*(pbefehl+3)= zwerg;
zwbef=0xFF;
*(pbefehl+4)= zwbef;
}
//Sensorbefehl
if(*pbefehl == 0x00){
zwerg=zwbef;
zwerg= zwerg & 0x70;
*(pbefehl+1)= zwerg >> 4;
}
}
//----------------------------Hauptprogramm-------------------------------------------------------------//
int main (void){
// Variablen
unsigned char i=0;
unsigned char vor=1; //Motorrichtung
unsigned char rck=0; //Motorrichtung
unsigned char wert=0; //IR Messwert
unsigned char befehl[5]; //Befehlsspeicher
unsigned char empfang
// Programmstart
initusart();
while(1){
empfang=getch();
getch();
befehleinlesen(befehl,5);
_delay_loop_2 (6000);
_delay_loop_2 (6000);
for(i=0;i<=4;i++) putch(befehl[i]);
/* //IR-Messen
wert=irmessung(1);
putch(wert);
_delay_loop_2 (6000);
*/
}
return 0;
}
Re: UART empfangen geht nicht
Hallo i-wizard,
Zitat:
Zitat von i-wizard
... Funktion getch() ... passiert nichts ... putch() zum senden ... geht einwandfrei ...
Ach wie klingt mir das vertraut. Vor ´nem halben Monat hatte ich ganz genau den gleichen Stand . Trotz meiner Einschätzung, dass mein damaliger Thread nicht lesenswert ist (der Fehler war einfach zuuuuu doof) hilft er Dir vielleicht weiter. Damit will ich nicht sagen, dass Dein Problem doof ist ! ! !