/*
 * main.c
 *
 *  Created on: 08-04-2013
 *      Author: Mirosław Kardaś
 */
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/pgmspace.h>
#include <util/delay.h>

#include "LCD/lcd44780.h"
#include "MK_ENCODER/mk_encoder.h"
//#include "terminal.h"


// własne funkcje do zarejestrowania
void my_encoder( int8_t dir, int8_t w );
void enc_switch( void );

uint8_t speed;		// prędkość zliczania enkodera

uint32_t wynik;		// wartość zliczana przez enkoder


int main(void) {

	DDRA |= (1<<PA7);
	PORTA |= (1<<PA7);

	lcd_init();
	lcd_str("start...");

//	init_terminal();

	encoder_init(1);
	register_enc_callback( my_encoder );
	register_sw_callback( enc_switch );

	lcd_locate(1,0);
	lcd_str("spd: ");
	lcd_int( speed );

	sei();
	while(1) {

		ENCODER_EVENT( speed );

	}

}



void my_encoder( int8_t dir, int8_t w ) {

	wynik += w;

//	show_on_terminal(dir, wynik);

	lcd_locate(0,0);
	if(dir==-1)	lcd_str("right   ");
	else lcd_str("left    ");

	lcd_locate(0,10);
	lcd_int( w );
	lcd_str("      ");

	lcd_locate(1,10);
	lcd_int( wynik );
	lcd_str("      ");
}

void enc_switch( void ) {

	wynik = 0;

	speed++;
	if(speed>9) speed=0;

	lcd_locate(1,0);
	lcd_str("spd: ");
	lcd_int( speed );
	lcd_str("  ");

	lcd_locate(1,10);
	lcd_int( wynik );
	lcd_str("      ");

//	show_on_terminal(0, 0);
}


