Subversion Repositories svnkaklik

Rev

Go to most recent revision | Details | Last modification | View Log

Rev Author Line No. Line
6 kaklik 1
#include "main.h"
2
#include "..\common.h"
3
 
4
#DEFINE LCD_RS          PIN_B1      // rizeni registru LCD displeje
5
#DEFINE LCD_E           PIN_B2      // enable LCD displeje
6
#DEFINE LCD_DATA_LSB    PIN_B4      // pripojeni LSB bitu datoveho portu LCD displeje (celkem 4 bity vzestupne za sebou)
7
#INCLUDE "MYLCD.C"
8
 
9
#DEFINE  VYSILAC        PIN_C3
10
#DEFINE  AD_OSA_X          0           // adresa A/D prevodniku pro osu X
11
#DEFINE  AD_OSA_Y          1           // adresa A/D prevodniku pro osu Y
12
#DEFINE  TTL1           PIN_b4
13
#DEFINE  TTL2           PIN_b3
14
 
15
int stredX, stredY, x, y;
16
 
17
 
18
void odeslat_nibble (int8 kodeslani)
19
{
20
   int i;
21
 
22
   for  (i=0;i<=3;i++)
23
   {
24
     if (1==bit_test(kodeslani,i))
25
     {
26
        output_high(VYSILAC);
27
        delay_us(2*IMPULS);          // X pri 1: |--|___
28
        output_low(VYSILAC);
29
        delay_us(3*IMPULS);
30
     }
31
     else
32
     {
33
         output_high(VYSILAC);
34
         delay_us(IMPULS);           // X pri 0: |-|__|-|_
35
         output_low(VYSILAC);
36
 
37
         delay_us(2*IMPULS);
38
 
39
         output_high(VYSILAC);
40
         delay_us(IMPULS);
41
         output_low(VYSILAC);
42
         delay_us(IMPULS);
43
     };
44
   }
45
}
46
 
47
 
48
void odesli (int8 neco,adresa)
49
{
50
  odeslat_nibble(0b1111);     // Synchronizace
51
  odeslat_nibble(adresa);     // Identifikace osy
52
  odeslat_nibble(neco);       // Hodnota osy
53
  odeslat_nibble(neco);       // Zopakovana hodnota osy pro kontrolu
54
 
55
}
56
 
57
 
58
void kalibrace()
59
{
60
int8 min_x;
61
int8 max_x;
62
int8 min_y;
63
int8 max_y;
64
int8 sred_x;
65
int8 sred_y;
66
int8 adc;
67
   min_x=max_x=min_y=max_y=sred_x=sred_y=128;
68
 
69
   printf(lcd_putc,"Paku dejte do prostred a stisknete tlacitko");
70
znovu:
71
   if (TTL1 || TTL2)
72
   {
73
   set_adc_channel(AD_OSA_X);
74
   delay_us(10);
75
   sred_x=read_adc();
76
   set_adc_channel(AD_OSA_Y);
77
   delay_us(10);
78
   sred_y=read_adc();
79
   };
80
 
81
   //else goto znovu;
82
 
83
   printf(lcd_putc,"\f");
84
   printf(lcd_putc,"Pak ");
85
 
86
   set_adc_channel(AD_OSA_X);
87
   delay_us(10);
88
 
89
   adc=read_adc();
90
 
91
   if (max_x < adc )max_x=adc;
92
   if (min_x > adc )min_x=adc;
93
 
94
   set_adc_channel(AD_OSA_Y);
95
   delay_us(10);
96
 
97
   adc=read_adc();
98
 
99
   if (max_y < adc )max_y=adc;
100
   if (min_y > adc )min_y=adc;
101
 
102
   if (TTL1 || TTL2) return;
103
}
104
 
105
 
106
void main()
107
{
108
int c=0;
109
 
110
   setup_adc_ports(RA0_RA1_RA3_ANALOG);
111
   setup_adc(ADC_CLOCK_DIV_2);
112
   setup_spi(FALSE);
113
   setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
114
   setup_timer_1(T1_DISABLED);
115
   setup_timer_2(T2_DISABLED,0,1);
116
 
117
   lcd_init();
118
 
119
 /*  while (c<=16)
120
   {
121
   lcd_gotoxy(c,1);
122
   printf(lcd_putc,"_");
123
   delay_ms(50);
124
   printf(lcd_putc,"\f");
125
   c++;
126
   }
127
 
128
   printf(lcd_putc,"\fAhoj!");
129
   delay_ms(1500);*/
130
 
131
   printf(lcd_putc,"\f");
132
 
133
 
134
   while(true)
135
   {
136
      set_adc_channel(AD_OSA_X);
137
      lcd_gotoxy(1,1);
138
      x=read_adc() >> 4;
139
      printf(lcd_putc,"X: %D      ", x);
140
      set_adc_channel(AD_OSA_Y);
141
      lcd_gotoxy(1,2);
142
      y=read_adc() >> 4;
143
      printf(lcd_putc,"Y: %D      ", y);
144
 
145
 /*     output_high(PIN_C1);
146
      output_low(PIN_C2);
147
      delay_ms(100);
148
      output_low(PIN_C1);
149
      output_high(PIN_C2);
150
      delay_ms(100);*/
151
 
152
      lcd_gotoxy(7,2);
153
      printf(lcd_putc,"vysilam");
154
 
155
      output_high(PIN_C4);
156
      output_high(PIN_C6);
157
      delay_ms(1);
158
      output_low(PIN_C4);
159
 
160
      odesli(x,OSA_X);
161
      delay_ms(100);
162
      odesli(y,OSA_Y);
163
 
164
      output_low(PIN_C6);
165
   }
166
 
167
}