//#include "atmega_IO.h"
#include <mega162.h>
#include <mega162_bits.h>
#include "initialization.h"

void atmegaSetUp(void)  //nastavuje procesor do pocatecniho nastaveni                   
{
    //vypnuti WatchDogu
    /* Write logical on? to WDCE and WDE */
    WDTCR |= (1<<WDCE) | (1<<WDE);
    /* Turn off WDT */
    WDTCR = 0x00;
       
    //inicializace PORTU
    DDRA = 0x00;  //port A bude vstupni 
    DDRB.4 = 1;  //Slave select musi byt vystupni kvuli tomu aby byl mikrokontroler stale v master rezimu   
    DDRB.5 = 1;  //SCK (SPI) musi byt output
    DDRB.7 = 1;  //MOSI (SPI) musi byt output   
    DDRC = 0xFF;  //port C bude vystupni
    
    PORTB.4 = 1;  //Slave select musi byt v logicke 1 kvuli tomu aby byl mikrokontroler stale v master rezimu           
    PORTC = 0x00;  //vsechny vystupy budou v logicke 0    
      
    //inicializace USART JEDNOTEK    
    UBRR0H = 0x00;  //USART0 bude nastaven na 9600 Bd  
    UBRR0L = 0x47;  //USART0 bude nastaven na 9600 Bd  
    UCSR0B = (1<<RXEN0)|(1<<TXEN0);  //povoleni vysilace a prijimace   
    
    UBRR1H = 0x00;  //USART1 bude nastaven na 9600 Bd   
    UBRR1L = 0x47;  //USART1 bude nastaven na 9600 Bd
    UCSR1B = (1<<RXCIE1)|(1<<RXEN1)|(1<<TXEN1);  //povoleni preruseni od prijimace, povoleni vysilace a prijimace 
      
    //inicializace ANALOGOVEHO KOMPARATORU
    ACSR = (1<<ACBG);  //pripojeni referencniho napeti (1,23 V) na neinvertujici vstup Analogoveho komparatoru                            
    
    //konec inicializaci
    delay_ms(Wait_3sec);  //cekani 3 sekundy, diody budou svitit pro overeni funkcnosti zarizeni
    PORTC = 0xFF;  //vsechny vystupy budou v logicke 1  
    delay_ms(Wait_1sec);
}

void loadTestData(unsigned char *p_testData)  //nahrava do pole hodnoty cisel 0 az 9
{
    char count = 0;
    for(count = 0; count < 10; count++)
    {
        *(p_testData + count) = count + 48;    
    }
}