drv_ea_ldp6416.c File Reference

Draw drivers for Embedded Adventures LDP-6416 LED panel and similar. More...

Include dependency graph for drv_ea_ldp6416.c:

Defines

#define set_pins_r1_g1()

Functions

uns8 drv_get_pixel (uns8 x, uns8 y)
void drv_init ()
void drv_paint ()
void drv_print_buffer ()
void drv_refresh ()
void drv_set_display_brightness (uns8 brightness)
void drv_setup_io ()

Variables

uns8 bright_count = 0
uns8 bright_level = 0
char buffer0 [256]
uns8 buffer_position = 0
uns8 current_buffer = 0
uns8 current_row = 0

Detailed Description


Define Documentation

 
#define set_pins_r1_g1 (  ) 
Value:
set_pin(ea_ldp6416_r1_port, ea_ldp6416_r1_pin); \
    set_pin(ea_ldp6416_g1_port, ea_ldp6416_g1_pin);

Function Documentation

uns8 drv_get_pixel ( uns8  x,
uns8  y 
)

00279                                    {
00280     //Should do something to look up the pixel
00281 }

void drv_init (  ) 

00287                 {
00288     ea_ldp6416_init();
00289 }   

Here is the call graph for this function:

void drv_paint (  ) 

00073                  {
00074     uns8 count;
00075     // start_crit_sec();
00076     count = 0;
00077     
00078     do {
00079         buffer0[count] = draw_buffer0[count];
00080         #if ea_ldp6416_displays > 1
00081             buffer1[count] = draw_buffer1[count];
00082         #endif;
00083         #if ea_ldp6416_displays > 2
00084             buffer2[count] = draw_buffer2[count];
00085         #endif
00086         #if ea_ldp6416_displays > 3
00087             buffer3[count] = draw_buffer3[count];
00088         #endif
00089         count++;
00090     } while (count !=0);
00091     //end_crit_sec();   
00092 }

void drv_print_buffer (  ) 

00094                         {
00095 uns8 count;
00096 
00097     count = 0;
00098     do {
00099         serial_print_int(buffer0[count]);
00100         serial_print_spc();
00101         count++;
00102     } while (count != 0);   
00103     serial_print_nl();
00104 
00105 }

Here is the call graph for this function:

void drv_refresh (  ) 

00116                    {
00117 
00118 
00119 uns8 x;
00120 uns8 data;
00121 
00122     
00123 #if ea_ldp6416_max_brightness > 0
00124     bright_count++;
00125     
00126     if (bright_count > bright_level) {
00127         // Turn off display
00128         set_pin(ea_ldp6416_en_port, ea_ldp6416_en_pin);
00129     }
00130     
00131     if (bright_count == ea_ldp6416_max_brightness) {
00132         bright_count = 255;
00133 #endif
00134                 
00135         for (x = 0; x < x_refresh; x++) {   // WAS 16
00136             #if ea_ldp6416_displays == 1
00137                 data = buffer0[buffer_position];
00138             #endif
00139 
00140             #if ea_ldp6416_displays == 2 && ea_ldp6416_display_orientation == HORIZONTAL
00141                 if (current_buffer == 0) {
00142                     data = buffer0[buffer_position];
00143                 } else {
00144                     data = buffer1[buffer_position];
00145                 }
00146             #endif  
00147             #if ea_ldp6416_displays == 3 && ea_ldp6416_display_orientation == HORIZONTAL
00148                 switch (current_buffer) {
00149                     case 0: data = buffer0[buffer_position]; break;
00150                     case 1: data = buffer1[buffer_position]; break;
00151                     case 2: data = buffer2[buffer_position]; break;
00152                 } 
00153             #endif
00154             #if ea_ldp6416_displays == 4 && ea_ldp6416_display_orientation == HORIZONTAL
00155                 switch (current_buffer) {
00156                     case 0: data = buffer0[buffer_position]; break;
00157                     case 1: data = buffer1[buffer_position]; break;
00158                     case 2: data = buffer2[buffer_position]; break;
00159                     case 3: data = buffer3[buffer_position]; break;
00160                 } 
00161             #endif
00162             
00163             set_pins_r1_g1();
00164             
00165             if (data.0) { clear_pin(ea_ldp6416_r1_port, ea_ldp6416_r1_pin); }
00166             if (data.1) { clear_pin(ea_ldp6416_g1_port, ea_ldp6416_g1_pin); }
00167             
00168             clear_pin(ea_ldp6416_s_port, ea_ldp6416_s_pin);
00169             set_pin  (ea_ldp6416_s_port, ea_ldp6416_s_pin);
00170             
00171             set_pins_r1_g1();
00172             
00173             if (data.2) { clear_pin(ea_ldp6416_r1_port, ea_ldp6416_r1_pin); }
00174             if (data.3) { clear_pin(ea_ldp6416_g1_port, ea_ldp6416_g1_pin); }
00175             
00176             clear_pin(ea_ldp6416_s_port, ea_ldp6416_s_pin);
00177             set_pin  (ea_ldp6416_s_port, ea_ldp6416_s_pin);
00178             
00179             set_pins_r1_g1();
00180             
00181             if (data.4) { clear_pin(ea_ldp6416_r1_port, ea_ldp6416_r1_pin); }
00182             if (data.5) { clear_pin(ea_ldp6416_g1_port, ea_ldp6416_g1_pin); }
00183                 
00184             clear_pin(ea_ldp6416_s_port, ea_ldp6416_s_pin);
00185             set_pin  (ea_ldp6416_s_port, ea_ldp6416_s_pin);
00186             
00187             set_pins_r1_g1();
00188             
00189             if (data.6) { clear_pin(ea_ldp6416_r1_port, ea_ldp6416_r1_pin); }
00190             if (data.7) { clear_pin(ea_ldp6416_g1_port, ea_ldp6416_g1_pin); }
00191                 
00192             clear_pin(ea_ldp6416_s_port, ea_ldp6416_s_pin);
00193             set_pin  (ea_ldp6416_s_port, ea_ldp6416_s_pin);
00194             
00195             buffer_position++;
00196             
00197             #if ea_ldp6416_displays > 1 && ea_ldp6416_display_orientation == HORIZONTAL
00198                 if (buffer_position == 0) {
00199                     current_buffer++;
00200                 }   
00201             #endif  
00202         }   
00203     
00204         #if ea_ldp6416_displays == 2 && ea_ldp6416_display_orientation == VERTICAL
00205     
00206             for (x = 0; x < x_refresh; x++) {
00207                 data = buffer1[buffer_position1];
00208                 
00209                 set_pins_r1_g1();
00210                 
00211                 if (data_upper.0) { clear_pin(ea_ldp6416_r1_port, ea_ldp6416_r1_pin); }
00212                 if (data_upper.1) { clear_pin(ea_ldp6416_g1_port, ea_ldp6416_g1_pin); }
00213                     
00214                 clear_pin(ea_ldp6416_s_port, ea_ldp6416_s_pin);
00215                 set_pin  (ea_ldp6416_s_port, ea_ldp6416_s_pin);
00216                 
00217                 set_pins_r1_g1();
00218                 
00219                 if (data_upper.2) { clear_pin(ea_ldp6416_r1_port, ea_ldp6416_r1_pin); }
00220                 if (data_upper.3) { clear_pin(ea_ldp6416_g1_port, ea_ldp6416_g1_pin); }
00221                 
00222                 clear_pin(ea_ldp6416_s_port, ea_ldp6416_s_pin);
00223                 set_pin  (ea_ldp6416_s_port, ea_ldp6416_s_pin);
00224                 
00225                 set_pins_r1_g1();
00226                 
00227                 if (data_upper.4) { clear_pin(ea_ldp6416_r1_port, ea_ldp6416_r1_pin); }
00228                 if (data_upper.5) { clear_pin(ea_ldp6416_g1_port, ea_ldp6416_g1_pin); }
00229                 
00230                 clear_pin(ea_ldp6416_s_port, ea_ldp6416_s_pin);
00231                 set_pin  (ea_ldp6416_s_port, ea_ldp6416_s_pin);
00232                 
00233                 set_pins_r1_g1();
00234                 
00235                 if (data_upper.6) { clear_pin(ea_ldp6416_r1_port, ea_ldp6416_r1_pin); }
00236                 if (data_upper.7) { clear_pin(ea_ldp6416_g1_port, ea_ldp6416_g1_pin); }
00237                     
00238                 clear_pin(ea_ldp6416_s_port, ea_ldp6416_s_pin);
00239                 set_pin  (ea_ldp6416_s_port, ea_ldp6416_s_pin);
00240                 
00241                 buffer_position1++;
00242             } // x loop 
00243             
00244         #endif
00245             
00246     
00247         set_pin(ea_ldp6416_en_port, ea_ldp6416_en_pin); // turn enable off
00248         
00249         clear_pin(ea_ldp6416_a_port, ea_ldp6416_a_pin);
00250         clear_pin(ea_ldp6416_b_port, ea_ldp6416_b_pin);
00251         clear_pin(ea_ldp6416_c_port, ea_ldp6416_c_pin);
00252         clear_pin(ea_ldp6416_d_port, ea_ldp6416_d_pin);
00253         
00254         if (current_row.0) { set_pin(ea_ldp6416_a_port, ea_ldp6416_a_pin); }
00255         if (current_row.1) { set_pin(ea_ldp6416_b_port, ea_ldp6416_b_pin); }    
00256         if (current_row.2) { set_pin(ea_ldp6416_c_port, ea_ldp6416_c_pin); }        
00257         if (current_row.3) { set_pin(ea_ldp6416_d_port, ea_ldp6416_d_pin); } 
00258 
00259         // latch data   
00260         set_pin(ea_ldp6416_l_port, ea_ldp6416_l_pin);
00261         clear_pin(ea_ldp6416_l_port, ea_ldp6416_l_pin);
00262         
00263         // enable display of row
00264         clear_pin(ea_ldp6416_en_port, ea_ldp6416_en_pin);
00265     
00266         current_row++;
00267         if (current_row == y_refresh) {
00268             current_buffer = 0;
00269             buffer_position = 0;
00270             current_row = 0;
00271         }   
00272 
00273 #if ea_ldp6416_max_brightness > 0
00274 
00275     }
00276 #endif
00277 
00278 }

void drv_set_display_brightness ( uns8  brightness  ) 

00108                                                  {
00109     if (brightness < ea_ldp6416_max_brightness) {
00110         bright_level = brightness;
00111     } else {
00112         bright_level = ea_ldp6416_max_brightness;
00113     }
00114 }   

void drv_setup_io (  ) 

00283                     {
00284     ea_ldp6416_setup_io();
00285 }

Here is the call graph for this function:


Variable Documentation

uns8 bright_count = 0
uns8 bright_level = 0
char buffer0[256]
uns8 buffer_position = 0
uns8 current_buffer = 0
uns8 current_row = 0

Generated on Fri Aug 19 09:05:00 2011 for Pic Pack Library by  doxygen 1.6.1