Rev 812 Rev 816
Line 15... Line 15...
15 #define SDIN PIN_D4 // seriovy vstup 15 #define SDIN PIN_D4 // seriovy vstup
16 #define SDOUT input(PIN_B2) // seriovy vystup 16 #define SDOUT input(PIN_B2) // seriovy vystup
17 #define SCLK PIN_D5 // takt 17 #define SCLK PIN_D5 // takt
18   18  
19 // pro komunikaci s OLSA, prvni se posila LSB 19 // pro komunikaci s OLSA, prvni se posila LSB
20 int1 main_reset[8]={1,1,0,1,1,0,0,0}; // hlavni reset 0x1B 20 int main_reset[8]={1,1,0,1,1,0,0,0}; // hlavni reset 0x1B
21 int1 set_mode_rg[8]={1,1,1,1,1,0,1,0}; // zapis do MODE registru 0x5F 21 int set_mode_rg[8]={1,1,1,1,1,0,1,0}; // zapis do MODE registru 0x5F
22 int1 clear_mode_rg[8]={0,0,0,0,0,0,0,0}; // nulovani MODE registru 0x00 22 int clear_mode_rg[8]={0,0,0,0,0,0,0,0}; // nulovani MODE registru 0x00
-   23 int test[8]={1,0,1,0,1,0,1,0,};
23   24  
24 int1 left_offset[8]={0,0,0,0,0,0,1,0}; // offset leveho segmentu senzoru 0x40 25 int left_offset[8]={0,0,0,0,0,0,1,0}; // offset leveho segmentu senzoru 0x40
25 int1 mid_offset[8]={0,1,0,0,0,0,1,0}; // offset prostredniho segmentu senzoru 0x42 26 int mid_offset[8]={0,1,0,0,0,0,1,0}; // offset prostredniho segmentu senzoru 0x42
26 int1 right_offset[8]={0,0,1,0,0,0,1,0}; // offset praveho segmentu senzoru 0x44 27 int right_offset[8]={0,0,1,0,0,0,1,0}; // offset praveho segmentu senzoru 0x44
27 int1 offset[8]={1,0,0,0,0,0,0,1}; // minus jedna - pouzit pro vsechny segmenty 0x81 28 int offset[8]={1,0,0,0,0,0,0,1}; // minus jedna - pouzit pro vsechny segmenty 0x81
28   29  
29 int1 left_gain[8]={1,0,0,0,0,0,1,0}; // zisk leveho segmentu 0x41 30 int left_gain[8]={1,0,0,0,0,0,1,0}; // zisk leveho segmentu 0x41
30 int1 mid_gain[8]={1,1,0,0,0,0,1,0}; // zisk leveho segmentu 0x43 31 int mid_gain[8]={1,1,0,0,0,0,1,0}; // zisk leveho segmentu 0x43
31 int1 right_gain[8]={1,0,1,0,0,0,1,0}; // zisk leveho segmentu 0x45 32 int right_gain[8]={1,0,1,0,0,0,1,0}; // zisk leveho segmentu 0x45
32 int1 gain[8]={1,0,1,0,0,0,0,0}; // zisk = 5 - pouzit pro vsechny segmenty 0x5 33 int gain[8]={1,0,1,0,0,0,0,0}; // zisk = 5 - pouzit pro vsechny segmenty 0x5
33   34  
34 int1 start_int[8]={0,0,0,1,0,0,0,0}; // zacatek integrace 0x08 35 int start_int[8]={0,0,0,1,0,0,0,0}; // zacatek integrace 0x08
35 int1 stop_int[8]={0,0,0,0,1,0,0,0}; // konec integrace 0x10 36 int stop_int[8]={0,0,0,0,1,0,0,0}; // konec integrace 0x10
36 int1 readout[8]={0,1,0,0,0,0,0,0}; // cteni senzoru 0x02 37 int readout[8]={0,1,0,0,0,0,0,0}; // cteni senzoru 0x02
37   38  
38 int8 olsa_lseg[51]={0}; // leva cast radky (pixely 0 - 50) 39 int olsa_lseg[51]={0}; // leva cast radky (pixely 0 - 50)
39 int8 olsa_rseg[51]={0}; // prava cast radky (pixely 51 - 101) 40 int olsa_rseg[51]={0}; // prava cast radky (pixely 51 - 101)
40 int8 *line_lp=&olsa_lseg; // ukazatel na levou cast radky 41 int8 *line_lp=&olsa_lseg; // ukazatel na levou cast radky
41 int8 *line_rp=&olsa_rseg; // ukazatel na pravou cast radky 42 int8 *line_rp=&olsa_rseg; // ukazatel na pravou cast radky
42   43  
43 int8 pixel; // dec hodnota jednoho pixelu 44 int8 pixel; // dec hodnota jednoho pixelu
44 int1 bpixel[8]={0}; // bin hodnota jednoho pixelu 45 int1 bpixel[8]={0}; // bin hodnota jednoho pixelu
Line 73... Line 74...
73 void olsa_pulses(int count) // vytvori impulzy pro ridici logiku 74 void olsa_pulses(int count) // vytvori impulzy pro ridici logiku
74 { 75 {
75 int8 ct; 76 int8 ct;
76 for(ct=0;ct<=count;ct++) 77 for(ct=0;ct<=count;ct++)
77 { 78 {
78 delay_us(1); // doba pro ustaleni -  
79 output_high(SCLK); 79 output_high(SCLK);
80 delay_us(1); // doba pro ustaleni -  
81 output_low(SCLK); 80 output_low(SCLK);
82 } 81 }
83 } 82 }
84   83  
85 void olsa_pulse() // vytvori jeden impulz 84 void olsa_pulse() // vytvori jeden impulz
86 { 85 {
87 delay_us(1); // doba pro ustaleni -  
88 output_high(SCLK); 86 output_high(SCLK);
89 delay_us(1); // doba pro ustaleni -  
90 output_low(SCLK); 87 output_low(SCLK);
91 } 88 }
92   89  
93 void olsa_send(int1 info[8]) // USART komunikace s modulem OLSA01A - poslani zpravy 90 void olsa_send(int8 info[8]) // USART komunikace s modulem OLSA01A - poslani zpravy
94 { 91 {
95 int8 ip; // ukazatel na pole s informaci 92 int *ip; // ukazatel na pole s informaci
96 int1 i; // pomocna promenna pro nastaveni 0 nebo 1 na SDIN 93 int8 i; // pomocna promenna pro nastaveni 0 nebo 1 na SDIN
97 -  
98 output_low(SDIN); // start bit 94 output_low(SDIN); // start bit
99 olsa_pulse(); 95 olsa_pulse();
100 for(ip=0;ip<8;ip++) // predani informace - 8 bit, LSB prvni > MSB posledni 96 for(ip=0;ip<8;ip++) // predani informace - 8 bit, LSB prvni > MSB posledni
101 { 97 {
102 i=info[ip]; // ziskani hodnoty z pole 98 i=info[ip]; // ziskani hodnoty z pole
Line 398... Line 394...
398 delay_ms(500); 394 delay_ms(500);
399 printf("VYBRAT MOD... \r\n"); 395 printf("VYBRAT MOD... \r\n");
400 396
401 while(true) 397 while(true)
402 { 398 {
403 diagnostika(); 399 olsa_send(test);
404 } 400 }
405 } 401 }