#include <16F628A.h>
Ir al código fuente de este archivo.
Definiciones | |
| #define | DRIVER_RELE PIN_B4 |
| #define | TX_485_ENABLE PIN_B5 |
| #define | bytes_for_USART_buffer 12 |
| Establece el número de bytes de longitud del buffer de la USART. | |
Funciones | |
| void | USART_activa_tx (void) |
| Abre el canal RS485 para transmitir. | |
| void | USART_activa_rx (void) |
| Abre el canal RS485 para recibir. | |
| void | USART_add_to_buffer (char c) |
| Inicializa el Buffer de la USART. | |
| void | interrupt_service_rutine_rda (void) |
| Interrupción por : Recepción del Canal Serie. | |
| void | main (void) |
| Constituye el núcleo principal del sistema. | |
Variables | |
| const char | VERSION [] = "1.0.0\0" |
| Versión del Firmware. | |
| const char | WhatAmI = 'R' |
| Identificador de tipo de dispositivo: 'R' Relé. | |
| const char | WhoAmI = '1' |
| Identificador de dispositivo. | |
| const char | Command_Execute = 'X' |
| Comando que indica ejecución de acción : Activar Relé. | |
| const char | end_of_transmit = '!' |
| Carácter que indica fin de transmisión (no buffereable). | |
| static char | USART_buffer [bytes_for_USART_buffer] |
| Buffer de la USART. | |
| static int8 | USART_nextRec |
| Indice del Buffer de la USART. | |
| int8 | Command |
| Comando válido para ejecutar. | |
Integra todos los subsistemas y funciones implementados.
Source para el compilador CCS C v.3.242
Microprocesador : 16F628A (18 pines PDIP)
Fuses utilizados:
Definición en el archivo firmware_irele485-628.c.
| #define DRIVER_RELE PIN_B4 |
Pin accionador del Relé número 1
Definición en la línea 51 del archivo firmware_irele485-628.c.
| #define TX_485_ENABLE PIN_B5 |
Pin que habilita la transmisión por el canal RS485
Definición en la línea 58 del archivo firmware_irele485-628.c.
| void main | ( | void | ) |
Constituye el núcleo principal del sistema.
Definición en la línea 211 del archivo firmware_irele485-628.c.
00211 { 00212 00213 setup_oscillator(OSC_4MHZ); 00214 setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1); 00215 setup_timer_1(T1_INTERNAL|T1_DIV_BY_4); 00216 setup_timer_2(T2_DISABLED,0,1); 00217 setup_comparator(NC_NC_NC_NC); 00218 setup_vref(FALSE); 00219 port_b_pullups(False); 00220 set_tris_b(0b00000010); 00221 output_low(DRIVER_RELE); 00222 delay_ms(100); 00223 00224 USART_nextRec = 0; 00225 Command = 0x00; 00226 00227 USART_activa_rx(); 00228 delay_ms(333); 00229 00230 enable_interrupts(global); 00231 enable_interrupts(int_rda); 00232 00233 USART_activa_tx(); 00234 printf("[iRELE485-628] v.%s\r\n",version); 00235 USART_activa_rx(); 00236 00237 do{ 00238 00239 if(Command==0x01){ 00240 Command =0x00; 00241 00242 USART_activa_tx(); 00243 printf("R%cA%c\r\n",WhoAmI,end_of_transmit); 00244 USART_activa_rx(); 00245 00246 output_high(DRIVER_RELE); 00247 delay_ms(2000); 00248 output_low(DRIVER_RELE); 00249 } 00250 00251 } while(true); 00252 }
| void USART_activa_rx | ( | void | ) |
Abre el canal RS485 para recibir.
Definición en la línea 146 del archivo firmware_irele485-628.c.
00146 { 00147 delay_ms(5); 00148 output_low(TX_485_ENABLE); 00149 delay_ms(1); 00150 }
| void USART_activa_tx | ( | void | ) |
Abre el canal RS485 para transmitir.
Definición en la línea 138 del archivo firmware_irele485-628.c.
00138 { 00139 output_high(TX_485_ENABLE); 00140 delay_ms(5); 00141 }
| void USART_add_to_buffer | ( | char | c | ) |
Inicializa el Buffer de la USART.
Recoge el último carácter recibido desde la USART sobre USART_buffer e incrementa en 1 el índice USART_nextRec.
Si el carácter recibido es Retorno de carro '\r' ó 0x0D comprueba identidad de dispositivo y comando recibido
Definición en la línea 160 del archivo firmware_irele485-628.c.
00160 { 00161 00162 USART_buffer[USART_nextRec++]=c; 00163 if(USART_nextRec==bytes_for_USART_buffer){ 00164 USART_nextRec=0; 00165 } 00166 00167 if(c==end_of_transmit){ 00168 --USART_nextRec; 00169 if(USART_buffer[USART_nextRec-3]==WhatAmI){ 00170 if(USART_buffer[USART_nextRec-2]==WhoAmI){ 00171 if(USART_buffer[USART_nextRec-1]==Command_Execute){ 00172 Command=0x01; 00173 } 00174 } 00175 } 00176 USART_nextRec = 0; 00177 } 00178 }
1.5.3