viernes, 29 de abril de 2011

Placa de entrenamiento ATmega8


Placa de entrenamiento para microcontrolador ATmega8.

Incluye:
  • Conector IDC 2x5 pines para programación.
  • Pines de puertos I/O (2 x pin).
  • Cristal externo.
  • Botón de reset.
  • Regulador 5 V.
  • Pines VDD/GND (4).
  • Pin AREF (opcional 5 V).
Circuito, Diseño de placa:

Descargar

Programación del ATmega8 para el programador USBASP

viernes, 22 de abril de 2011

Programador AVR USBASP

Programador de AVR USBASP con ATmega8


Se requiere programar el ATmega8 previamente usando otro programador como puede ser el programador serial junto con Ponyprog2000.

Configuración de fusibles:

HFUSE=0xc9  LFUSE=0xef


firmware, Driver para windows XP:
Descargar

Driver para Windows 7 - 32 / 64 bit:

Descargar

Layout listo para imprimir y lista de componentes:
Descargar

Programador AVR Serial

Programdor AVR por puerto serial.




Layout listo para imprimir y lista de componentes:
Descargar

lunes, 11 de abril de 2011

Envio de caracteres de PIC16F877A a calculadora HP50g

Programa para PIC16F877A

Este programa envía una cadena de 10 caracteres a 9600 baudios utilizando transmisión USART.


   Funcionamiento
  • Los datos a enviar se encuentran en una tabla de datos en la memoria de programa, en este caso una cadena de 10 caracteres "HOLA MUNDO".
  • Se configura el microcontrolador para transmisión serial asíncrona a 9600 baudios (mayor detalle en el archivo . ASM).
  • El programa incluye una rutina de retardo antes de enviar los caracteres para poder inicializar la configuración en la calculadora HP50g.
  • Se puede conectar un led en el pin RA0. Cuando se conecta la alimentación al pic el led se enciende y se ejecuta la rutina de retardo. Finalizada ésta el led se apaga indicando el inicio de la transmisiñon de datos.
  • Los carateres se envian y se almacenan automáticamente en el buffer de entrada de la HP50g una vez abierto el puerto serial con el comando OPENIO.
  • El circuito formado por los transistores 2N2222A es un adaptador de nivel de tensión. El PIC trabaja a 0 - 5 V pero la calculadora opera 0 - 3.3 V.
  • Crear el siguiente programa en la calculadora y almacenar en una variable. Ejecutar una vez que se conecta la alimetación al PIC16F877A o luego de resetearlo.
                 <<9600 BAUD
                      0 PARITY
                     -33 CF
                     -78 SF
                     CLOSEIO
                     OPENIO
                    10 STIME
                    BUFLEN
                    DROP
                    SRECV
                    DROP
                >>


 Archivos .ASM y .HEX

Descargar

****Programa en Pic Basic (Microcode)****

'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : LONELY113                                         *
'*  Notice  : Copyright (c) 2011 LONELY113                      *
'*          : All Rights Reserved                               *
'*  Date    : 12/05/2011                                        *
'*  Version : 1.0                                               *
'*  Notes   : PIC16F877a                                        *
'*          : 9600 baudios con cristal de 10 MHz                *
'*          : Pin RC6/Tx a pin RxD de Hp50g                     *
'*          : Pin GND de Hp50g a GND de circuito                *
'*          : Requiere adaptador de nivel 5V a 3.3V             *
'****************************************************************

@ __CONFIG _WDT_OFF & _PWRTE_OFF & _CP_OFF & _HS_OSC & _BODEN_OFF & _LVP_OFF

DEFINE OSC 10         '10 MHz

'Definiciones para USART
DEFINE HSER_RCSTA 90h 'Habilitar registro de recepción
DEFINE HSER_TXSTA 20h 'Habilitar registro de transmisión
DEFINE HSER_BAUD 9600 '9600 baudios

'Inicio de programa
PAUSE 5000            'Retardo de 5 segundos
HSEROUT ["Hola Mundo!!!!!!",13,10] 'Enviar cadena
END

viernes, 8 de abril de 2011

Envio de cadena de caracteres de hp50g a PIC16F877A

Programa para PIC16F877A

Estos dos programas cumplen la misma función que los publicados anteriormente. La diferencia es que se aprovecha la comunicación USART de la que dispone el pic16f877a.


Envio de caracter y visualización en Leds (ASCII)

  Funcionamiento

  El caracter se recibe en el registro RCREG, se mueve al acumulador y se envia al Puerto D para la       visualización.

Envio de una cadena de 16 caracteres


   Funcionamiento
  • Se genera una interrupción cada vez que se recibe un caracter.
  • La rutina de interrupción guarda los caracteres recibidos en posiciones de memoria sucesivas, mediante direccionamiento indirecto, hasta que se reciben 16 caracteres.
  • Una vez recibidos 16 caracteres se pasa a la rutina de visualización en LCD, finalizada ésta se reinicia el programa a la espera de una nueva cadena.
Archivos .ASM y HEX

Envio de caracter

Envio de cadena

Programa para hp50g:

                       << 'a'    PURGE  
                            1    10
                            FOR   j
                               "CADENA   A   ENVIAR"
                               {":a:"  {0 0}   V}
                               INPUT

                                OBJ→    'a'    STO    a
                                9600 BAUD
                                XMIT
                                DROP
                            NEXT
                            'a'   PURGE >>


****Programa en Pic Basic (Microcode)****


'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : LONELY113                                         *
'*  Notice  : Copyright (c) 2011 LONELY113                      *
'*          : All Rights Reserved                               *
'*  Date    : 12/05/2011                                        *
'*  Version : 1.0                                               *
'*  Notes   : PIC16F877a                                        *
'*          : Pines de LCD:  RD7-RD4=D7-D4  (Modo de 4 bits)    *
'*          :               RB0=RS, RB1=RW, RB2=E               *  
'*          : Pin RC7/Rx=TxD de Hp50g                           *
'*          : unir GND de Hp50g a GND de circuito               *
'*          : Requiere adaptador de nivel 5V a 3.3V             *
'****************************************************************

@ __CONFIG _WDT_OFF & _PWRTE_OFF & _CP_OFF & _HS_OSC & _BODEN_OFF & _LVP_OFF

DEFINE OSC 10 '10 MHz

'Definiciones para módulo LCD
DEFINE LCD_BITS 4      'Bus de 4 bits
DEFINE LCD_LINES 2     'LCD de 2 filas 
DEFINE LCD_DREG PORTD  'Puerto de datos a LCD 
DEFINE LCD_DBIT 4      'Bits 4 a 7 de PORTD
DEFINE LCD_RSREG PORTB 'Puerto B seleccion de registro  
DEFINE LCD_RSBIT 0     'RB0=RS de LCD
DEFINE LCD_RWREG PORTB 'Puerto B Lectura/Escritura  
DEFINE LCD_RWBIT 1     'RB1=RW de LCD 
DEFINE LCD_EREG PORTB  'Puerto B Habilitacionde LCD 
DEFINE LCD_EBIT 2      'RB2=E de LCD 
DEFINE LCD_COMMANDUS 2000 'Retardo ente comandos en us 
DEFINE LCD_DATAUS 50      'Retardo entre datos en us 

'Definiciones USART
DEFINE HSER_RCSTA 90h  'Habilitar registro de recepción
DEFINE HSER_TXSTA 20h  'Habilitar registro de transmisión
DEFINE HSER_BAUD 9600  '9600 baudios

dato VAR BYTE[16]
i VAR BYTE
loop1:
 HSERIN [sTR dato\16] 'Espera 16 caracteres y guarda en dato
 LCDOUT $FE,1         'Borrar LCD
 LCDOUT $FE, $0C      'Primera fila, cursor off
 FOR i=0 TO 15        
  LCDOUT dato[i]      'Enviar 16 caracteres ( en ASCII)
 NEXT i
GOTO loop1
END