Gast
#2051445
Hallo Gemeine,
ich bin neu. Martin mein Name. Versuche gerade mittels Uart meinen
ATmega8151 16Mhz zu steuern. Verwende GCC und Avr Studio. Mein Prgramm
soll wenn es ein Steuerzeichen "#" bekommt abhängig von den nächsten
drei Zeichen etwas unternehmen. Das Klappt auch, jedoch nur, wenn ich
den _delay drin lasse. Wenn ich es raus nehme, erkennt er zwar noch das
steuerzeichen, jedoch nicht mehr die weiteren. Verwende die uart.h von
Peter Fleury.
Vielen Dank bei der Hilfe.
#include <stdlib.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <util/delay.h>
#include <string.h>
#include "uart.h"
#define UART_BAUD_RATE 9600
int main(void)
{
char c, tmp[3];
uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) );
sei();
DDRD = (1<<PD5);
PORTD = (1<<PD5);
while(1)
{
c = uart_getc();
_delay_ms(1);
//uart_puts("warten\n");
if(c == '#'){
//tmp = "0";
uart_puts("erkannt\n");
for(int i=0; i<=2; i++){
tmp[i] = (char)uart_getc();
}
if(tmp[0] == '0'){
PORTD = (0<<PD5);
uart_puts("LED an\n");
} else if(tmp[0] == '1'){
PORTD = (1<<PD5);
uart_puts("LED aus\n");
} else {
uart_puts("nichts\n");
}
}
}