lunes, 19 de diciembre de 2016

Ejemplo con el compilador XC8 PIC16F628A UART

led.c
 1 /* 
 2  * File:   led.c
 3  * Author: jose
 4  *  
 5  * Created on 18 de diciembre de 2016, 18:59
 6  */
 7 #pragma config FOSC = XT        // Oscillator Selection bits (XT oscillator: Crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN)
 8 #pragma config WDTE = OFF       // Watchdog Timer Enable bit (WDT disabled)
 9 #pragma config PWRTE = ON      // Power-up Timer Enable bit (PWRT disabled)
10 #pragma config MCLRE = OFF       // RA5/MCLR/VPP Pin Function Select bit (RA5/MCLR/VPP pin function is MCLR)
11 #pragma config BOREN = OFF      // Brown-out Detect Enable bit (BOD disabled)
12 #pragma config LVP = OFF        // Low-Voltage Programming Enable bit (RB4/PGM pin has digital I/O function, HV on MCLR must be used for programming)
13 #pragma config CPD = OFF        // Data EE Memory Code Protection bit (Data memory code protection off)
14 #pragma config CP = OFF         // Flash Program Memory Code Protection bit (Code protection off)
15 #define _XTAL_FREQ 4000000
16 
17 #include <stdio.h>
18 #include <stdlib.h>
19 #include <xc.h>
20 
21 void UART_tx(char dato);
22 char UART_rx();
23 
24 //------------------------------------------------------------------------------
25 void interrupt Interrupciones(){
26   char dato;
27     
28   GIE = 0;  
29   if(RCIF == 1){
30    RB0 = 1;   
31    dato = UART_rx();
32    UART_tx(dato);
33   }
34   
35   RB0 = 0;
36   GIE = 1;
37 }
38 
39 
40 /*
41  *    Funciones               
42  */
43 void UART_Config(const long int baudrate)
44 {
45   unsigned int X_SPBRG=0;
46   
47   X_SPBRG = _XTAL_FREQ /(16*(baudrate+1));
48   SPBRG = X_SPBRG;
49   BRGH = 1;                                     
50   TXEN = 1;
51   SPEN = 1;
52   TX9 = 0;
53   RX9 = 0;
54   SYNC = 0;
55   CREN = 1;
56 }
57 
58 void UART_tx(char dato)
59 {
60   while (TXIF==0);  
61   TXREG=dato;   
62 }
63 
64 char UART_rx(){
65   while (RCIF==0 && OERR==0);
66   return RCREG;
67 }
68 
69 void print_uart(char *texto)
70 {
71   int i;
72   for(i=0;texto[i]!='\0';i++)
73     UART_tx(texto[i]);
74 }
75 
76 void UART_Interrupciones(){
77   RCIE=1;
78   PEIE=1;
79   GIE=1;
80 }
81 /*------------------------------------------------------------------------------
82  *    Programa principal
83  */
84 void main(void) {
85  char dato;   
86  TRISB = 0b00000010; 
87  
88  UART_Config(9600);  
89  UART_Interrupciones();
90  
91  while(1); 
92  
93 }
94 
95 
-->

martes, 1 de noviembre de 2016

Reparando un analizador de red CVM 96 - Parte 1

El siguiente analizador tenia los siguientes problemas :
  • No visualizaba medición de I 
  • Sin comunican RS485
al revisarlo me encontré que el causante de la falla de la medición era un capacitor smd en paralelo con el secundario del TI y una resitencia, por parte de la comunicaciones el MAX485 no podia transmitir, asi que realice unas modificaciones para poder repararlo, las siguientes fotos muestran las reparaciones y pruebas.













IRC

#freenode->#usljujuy

Seguidores

Eventos n_n

Tira Ecol Nano,Bilo y Luca