]> git.llucax.com Git - z.facultad/66.09/etherled.git/blob - src/leds.h
Agrego informe.
[z.facultad/66.09/etherled.git] / src / leds.h
1 /* vim: set et sw=4 sts=4 : */
2
3 #ifndef _LEDS_H_
4 #define _LEDS_H_
5
6 /** Cantidad mínima de columnas (es más un límite estético que físico) */
7 #define LEDS_MIN_COLS 8
8
9 /** Cantidad máxima de columnas */
10 #define LEDS_MAX_COLS 32
11
12 /** Tamaño de la matriz de leds, en cantidad de columnas */
13 extern unsigned char leds_matrix_len;
14
15 /** Matriz de leds, cada elemento del array es una columna */
16 extern idata unsigned int leds_matrix[LEDS_MAX_COLS];
17
18 /** Retardo de refresco de la matriz (en múltiplos de 0.1ms) */
19 extern unsigned char leds_delay;
20
21 /** Inicializa leds
22  *
23  * El 'dibujado' de la matriz se puede controlar fácilmente parando y/o
24  * iniciando el timer2. Para comenzar a 'dibujar' la matriz sólo es necesario
25  * setear el bit TR2 del registro T2CON (y habilitar las interrupciones
26  * globalmente si aún no se hizo, bit EA del registro IE).
27  */
28 void leds_init();
29
30 /** Realiza un testeo simple de los leds */
31 void leds_test();
32
33 /** Escribe un word (16 bits) en la columna de leds */
34 void leds_write(unsigned int);
35
36 /** Escribe un byte en la parte baja de la columna de leds */
37 void leds_write_low(unsigned char);
38
39 /** Escribe un byte en la parte alta de la columna de leds */
40 void leds_write_high(unsigned char);
41
42 /** Actualiza el delay al recomendado según el tamaño de la matriz */
43 void leds_delay_update();
44
45 /** Bloquea timer de leds cuando se accede a una zona crítica (P0 y/o P2). */
46 void leds_lock();
47
48 /** Desbloquea el timer de los leds.
49  * @precond Se llamó a leds_lock();
50  */
51 void leds_unlock();
52
53 /** Atiende interrupción del timer2 para 'dibujar' la matriz */
54 void leds_timer2_isr() interrupt 5;
55
56 #endif /* _LEDS_H_ */