Subversion Repositories svnkaklik

Compare Revisions

Ignore whitespace Rev 5 → Rev 6

/schemata/prenos/letadlo/SW/vysilac/main.c
0,0 → 1,182
// Vysilac
 
#include "main.h"
#include "..\common.h"
//Displej
#DEFINE LCD_RS PIN_B1 // rizeni registru LCD displeje
#DEFINE LCD_E PIN_B2 // enable LCD displeje
#DEFINE LCD_DATA_LSB PIN_B4 // pripojeni LSB bitu datoveho portu LCD displeje (celkem 4 bity vzestupne za sebou)
#INCLUDE "MYLCD.C"
#INCLUDE "lcd2.c"
//Klavesnice
#DEFINE PL PIN_B3 // ovladani klavesnice
#DEFINE STROBE_LED PIN_C0
#DEFINE STROBE_KL PIN_C1
#DEFINE DATA_OUT PIN_C2
#DEFINE CP PIN_C3
#DEFINE DATA_IN PIN_C4
#INCLUDE "keybord.c"
//Vysilac
#DEFINE VYSILAC PIN_C5
#INCLUDE "vysilac.c"
//Joistick
#DEFINE EEleve_x 0
#DEFINE EEprave_x 1 //adresovani EEPROM
#DEFINE EEhorni_y 2
#DEFINE EEdolni_y 3
 
#DEFINE EEmin_x 4
#DEFINE EEmax_x 5
#DEFINE EEmin_y 6
#DEFINE EEmax_y 7
#DEFINE EEstred_x 8
#DEFINE EEstred_y 9
 
#DEFINE AD_OSA_X 1 // adresa A/D prevodniku pro osu X
#DEFINE AD_OSA_Y 0 // adresa A/D prevodniku pro osu Y
#DEFINE TL1 PIN_C6
#DEFINE TL2 PIN_C7
#INCLUDE "Joystick.c"
 
int x,y,tlac1,tlac2;
 
void trimovat()
{
odeslat_paket(Trim,0b0001);
odeslat_paket(OSA_X,x);
odeslat_paket(OSA_Y,y);
}
 
void vysilat()
{
 
leve_x = read_eeprom(EEleve_x);
prave_x = read_eeprom(EEprave_x);
stred_x = read_eeprom(EEstred_x);
stred_y = read_eeprom(EEstred_y);
horni_y = read_eeprom(EEhorni_y);
dolni_y = read_eeprom(EEdolni_y);
 
Delay_ms(200);
lcd_gotoxy(6,2);
printf(lcd_putc,"Vysilam");
 
while(0x80 == klavesa())
{
Joystick(&x,&y,&tlac1,&tlac2);
/*if (stred_x >= x)
{
x = stred_x - x;
x = x/leve_x;
}
else
{
x = x - stred_x;
x = x/prave_x;
}
 
if (stred_y >= y)
{
y = stred_y - y;
y = y/dolni_y;
}
else
{
y = y - stred_y;
y = y/horni_y;
}*/
 
x=x/8;
y=y/8;
 
odeslat_paket(OSA_X,x);
Delay_us(1600);
odeslat_paket(OSA_Y,y);
}
}
 
void menu()
{
int8 polozka = 3;
int8 old_polozka = 0;
int pom;
 
while(true)
{
pom = klavesa();
if (0x07 == pom) polozka++;
if (0x0f == pom) polozka--;
if (0x04 <= polozka) polozka = 1;
if (0x00 == polozka) polozka = 3;
if (0x16 == pom) // enter
{
LED((1 << (polozka + 1)) | 1);
switch(polozka)
{
case 1:
kalibrace();
break;
 
case 2:
trimovat();
break;
 
case 3:
vysilat();
break;
};
LED(1 << (polozka + 1));
old_polozka=0;
};
 
if (polozka != old_polozka)
{
old_polozka=polozka;
printf(lcd_putc,"\f");
switch(polozka)
{
case 1:
lcd_gotoxy(5,2);
printf(lcd_putc,"Kalibrace");
break;
 
case 2:
lcd_gotoxy(7,2);
printf(lcd_putc,"Trim");
break;
 
case 3:
lcd_gotoxy(6,2);
printf(lcd_putc,"Vysilat");
break;
};
LED(1 << (polozka + 1));
Delay_ms(250);
}
}
}
 
void main()
{
int8 tlacitka,tlacitka_old;
setup_adc_ports(RA0_RA1_RA3_ANALOG);
setup_adc(ADC_CLOCK_DIV_2);
setup_spi(FALSE);
setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
 
lcd_init();
KL_init();
 
menu();
 
while(true)
{
//char xx;
// if (true == read_kl(&xx))
// {
// printf(lcd_putc,"%C",xx );
// }
}
}