/*
 * 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 <util/delay.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<<TXEN0)|(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
	}
};


void uart_send_c(unsigned char c_str)		//sende einzelnes Zeichen
{
	while(!(UCSR0A&(1<<UDRE0)));
	UDR0 = c_str;
};


void uart_sende_string(char* strin)		//zerpflüge string in einzelne zeichen
{
	unsigned char c;
	while((c = *strin++) != '\0')
	uart_send_c(c);
};



int main(void)
{
	uart_init(F_CPU,baudrate);
	
	sei();
	DDRD|=1<<0;
	DDRD|=1<<1;
	DDRD|=1<<7;	
	PORTD|=1<<7;
	char char_druck[] = "d";
    while(1)
    {
        if(input_string[0] == char_druck[0] )
		{
			PORTD&=~(1<<7);
			uart_send_c('d');
			
		}
		
		
	}
}