/*
 * Drucksensor.c
 *
 * Created: 30.06.2016 20:31:52
 *  Author: Datzi
 */ 
#define  F_CPU 16000000UL
#define  baudrate 9600UL
#define UART_MAX_LENGTH 10


#include <avr/interrupt.h>
#include <stdio.h>
#include <stdlib.h>
#include <avr/io.h>
#include <string.h>


volatile char input_string[UART_MAX_LENGTH +1] ="";
volatile uint8_t temperatur_wert = 0;
volatile uint8_t string_counter = 0;
volatile uint8_t string_vorhanden = 0;
volatile uint8_t lenght_string = 0;
volatile uint8_t wert=0;
volatile uint16_t impuls_val = 0;



void uart_init (long oszi,long BAUD)
{
	UBRR0L = (unsigned char)(oszi/16L/BAUD-1);
	UBRR0H = (unsigned char)((oszi/16L/BAUD-1)>>8);
	UCSR0A = 0X00;
	UCSR0B |= (1<<RXEN0)|(1<<RXCIE0);
	UCSR0C |= (1<< UMSEL01)|(1<<UCSZ01)|(1<<UCSZ00);
}


void uart_empfangen(void)
{
	while(UCSR0A & (1<<RXEN0))
	{
		wert = UDR0;
	}
}

ISR(USART_RX_vect)	//String empfangen
{
	unsigned nextChar;
	
	nextChar = UDR0;
	
	if(nextChar != '\n' && nextChar != '\r' && nextChar !='\0' && string_counter < UART_MAX_LENGTH)
	{
		input_string[string_counter] = nextChar;		//jedes Empfangene Zeichen ins Array speichern
		string_counter++;
	}
	else
	{
		input_string[string_counter] = '\0';
		lenght_string = string_counter;
		string_counter = 0;
		string_vorhanden = 1;		//neuer String vorhanden
	}
};

int main(void)
{
	
	
	uart_init(F_CPU,baudrate);
	sei();
	
	DDRD|=1<<0;
	DDRD|=1<<7;	
	PORTD|=1<<7;
	char char_druck[] = "d";
	char char_test[]= "1";
    while(1)
    {
        if(input_string[0] == char_druck[0] )
		{
			PORTD&=~(1<<7);
		}
		if(input_string[0] == char_test[0] )
		{
			PORTD&=~(1<<7);
		}
		
	}
}