Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Turorial Avr
Turorial Avr
Facultad de Ingeniera en
FISEI
FISEI - UTA
TABLA DE CONTENIDOS
INSTALACIN
Instalacin de Bascom ... 1
INTRODUCCIN A BASCOM
Bascom ... 6
AVR 7
Qu es lo que usted necesita para empezar 7
Su Pc ... 7
Construir (o comprar) un "programador" ... 8
EL SOFTWARE DE PROGRAMACIN
Obtener TWinAVR. . 9
Obtener Userport . 11
Configurar TWinAVR Bascom . 12
Como usar Bascom .. 13
Programa bsico para hacer parpadear un led con intervalos de 1 segundo .. 18
Un semforo de dos intersecciones 19
Juego de luces para discoteca 21
Ejercicio con la instruccin FOR NEXT .. 23
LAS VARIABLES BIT, BYTE Y WORD 23
Luces del auto fantstico 24
Ejercicios con pulsadores .. 25
La declaracin IF THEN .. 25
FISEI
FISEI - UTA
FISEI
FISEI - UTA
FISEI
Datashteets .. 89 - 123
FISEI - UTA
FISEI
FISEI - UTA
FISEI
FISEI - UTA
INSTALACIN
INSTALACIN DE BASCOM
Despus de que usted ha descargado el archivo ZIP que usted necesita, debe ABRIR el
archivo. En Windows XP, para la versin de la DEMOSTRACIN, corra los
setupdemo.exe. (http://www.atmel.com : (http://www.ckuehnel.ch)
FISEI
FISEI - UTA
Leer las instrucciones, selecciones 'I accept the agreement' y presione el botn NEXT.
La ventana siguiente se mostrar
FISEI
Usted puede seleccionar la direccion y camino dnde le gusta que BASCOM sea
instalado. Usted puede tambin acepte el valor predefinido que es
C:\Archivo de programas\MCS Electronics\BASCOM-AVR
FISEI - UTA
Cuando el directorio existe, porque usted instala una ms nueva versin, usted
conseguir una advertencia.
Usted puede escoger crear en un nuevo Grupo del Programa llamdo 'BASCOM-AVR', o
usted pueda modificar el nombre, o instale en un Grupo del Programa existente,
presione el boton Next despus de que usted ha hecho su opcin
FISEI
3
Octavo Electrnica 2009 2010
FISEI - UTA
FISEI
FISEI - UTA
FISEI
Usted puede ver los "Raed me" y archivos de la Licencia y usted puede
empezar BASCOMAVR.
FISEI - UTA
FISEI
FISEI - UTA
FISEI
FISEI - UTA
AVR:
AVR es una familia de microcontroladores de 8 bits con una amplia gama de variantes
diferentes en:
Tamao del programa de la memoria (flash)
Tamao de la memoria EEPROM
Nmero de pines I / O
Nmero de servicios tales como caractersticas de los chips UART y ADC
Paquete de formularios
El ms pequeo es el microcontrolador ATTINY11 con 1k flash y 6 pines I / O. The
largest is the ATMEGA256x with 256k flash, 54 I/O pins and lots of on-chip features.
La ms grande es la ATMEGA256x con 256K flash, 54 pines I / O y muchas de las
caractersticas del chip.
Todos los controladores tienen el AVR RISC mismo como conjunto de instrucciones,
que permite portar bastante fcil de los programas de Bascom entre los tipos de
microcontroladores. Que ejecutar una instruccin por ciclo de reloj hacindolas
sensiblemente ms rpido que el 8 bits comparables 4 ciclos de reloj por cada
instruccin de los controladores de Microchip PIC.
SU PC
FISEI
FISEI - UTA
Instalar Bascom
Comience con la descarga de la versin libre Bascom. Se limitar el tamao de cdigo
que puede compilar (traducir de base a cdigo de mquina AVR) de 2k, pero le ayudar
a empezar con casi todos los aspectos importantes de Bascom y controladores AVR.
Ir a la Electrnica MCS, sitio web a continuacin, seleccione Descargas y, a
continuacin Bascom, a continuacin, Bascom-AVR, y descargar el Bascom-AVR
Demo archivo ZIP. Descomprimir en un directorio temporal. A continuacin, inicie el
programa de instalacin ejecutable, que ahora debera estar en este directorio temporal.
Instale Bascom, usted puede elegir el directorio de instalacin.
Cree un directorio Bascom de trabajo, por ejemplo: C: \ Yourname \ Bascom \
FISEI
FISEI - UTA
El software de programacin
Obtener TWinAVR.
Este es el software que se comunica a travs del hardware de programacin se realiz
con el controlador de AVR. Les recomendamos que usen el TWinAVR hecho por
Ronald Walter. Ir a su pgina web, en la columna de la izquierda, seleccione
microcontrolador, seleccione Programador, lea el texto (que usted aprender algunas
TWinAVR alemn!) Y descargar.
TWinAVR de instalacin
FISEI
TWinAVR tiene que ser configurado para usar el Vcc generados por algunos pines del
puerto paralelo para cambiar el buffer.
FISEI - UTA
FISEI
En esta ventana desactive la casilla Vcc. Esto significa que slo se genera Vcc
TWinAVR mientras est activo. Si a continuacin, utilizar esta Vcc para cambiar el
buffer 74HCT244, el bufferports ser aislado TWinAVR cuando no est activo, dando
lugar a "En la programacin del sistema. Aproveche esta oportunidad para comprobar la
configuracin en paralelo: si el puerto no est en el estndar de la direccin "y 378",
(comprobarlo en la BIOS del PC si es necesario) cambiar la configuracin LPT en
consecuencia.
FISEI - UTA
10
FISEI
FISEI - UTA
11
Lo que queda es 200-37F en la ventana izquierda. Click on Start. Haga clic en Iniciar.
Userport ahora activa la direccin seleccionada gama para usted y lo harn cada vez que
enciendes tu PC. Si necesita utilizar el puerto paralelo para otros fines, por ejemplo una
impresora, debe iniciar el programa de Userport y haga clic en Detener. El conductor
ser cancelada.
Configurar TWinAVR Bascom
Bascom compila cdigo bsico en un "Bin'-archivo. Esta caja-archivo contiene las
instrucciones de AVR en el llamado cdigo de mquina, lo que el controlador de AVR
puede ejecutar directamente. Usted puede utilizar un programador externo para escribir
esta caja de archivo en la memoria flash del AVR. El programador externo, a su vez, es
controlado a travs de un programa separado como TWinAvr. TWinAvr le permite
seleccionar el archivo HEX que debe enviar al AVR. Sin embargo, es mucho ms fcil
si Bascom directamente TWinAvr podra comenzar despus de la compilacin est
terminada y decirle que TWinAvr hex-archivo para su uso.
Esto se puede hacer en Bascom como sigue:
FISEI
FISEI - UTA
12
Esto le dice a Bascom para iniciar TWinAvr con el nombre de la bandeja de archivo, se
produce despus de que la compilacin fue exitosa:
FISEI
Inicio Bascom
Seleccione Archivo / Nuevo
FISEI - UTA
13
FISEI
El atmega8 posee 8kb de memoria flash, 512 bytes ede EEPOM, y 1KB de
SRAM, posee 2 timers, 2 de 8 bits y uno de 16 bitsPosee un reloj de tiempo real
(RTC) con oscilador externo.. y 6 canales de ADC y por supuesto comunicacin
serial
(A medida que escribe Bascom va a cambiar el texto del programa de color de acuerdo a
las palabras clave que reconoce).
En este simple de los programas, PORTB del AVR ATMEGA8 por primera vez
configurado para funcionar como una salida. PORTB Entonces se establece en el valor
decimal 255. Los ocho bits de PORTB se establece ahora en valor binario "uno". Tenga
en cuenta que slo la parte inferior de siete bits estn disponibles en el exterior como
alfileres PB0 hasta PB6. Si se conecta cualquiera de estos pines a un LED con un
resistor limitador de corriente a tierra, la corriente fluir desde el AVR a los LED. El
LED est encendido. Despus de esperar durante 1000 milisegundos, PORTB se
FISEI - UTA
14
establece en el valor decimal 0. Ahora, todos los pines se establecen en el valor binario
de "cero" y no pasar corriente del AVR a los LED. El LED est apagado. Despus de
esperar otros 1000 milisegundos, se repite el ciclo. El resultado es que el LED
encenderse y apagarse.
Despus de introducir el texto del programa, seleccione Archivo / Guardar como y
seleccione una ubicacin y un nombre para el archivo. Supongamos que usted
seleccione 'ledflasher.bas' como un nombre de archivo. Como Bascom genera gran
cantidad de archivos despus de una compilacin, es una buena idea crear directorios
separados para cada proyecto Bascom que trabajar.
Bascom ahora se puede contar acerca de su configuracin del controlador de AVR.
Seleccione Opciones / Compiler / Chip
FISEI
FISEI - UTA
15
Por defecto, la velocidad de reloj es de 4MHz, pero como usamos un cristal de 1MHz,
seleccione 1000000 de la lista de frecuencia
FISEI
FISEI - UTA
16
A continuacin les dejo el circuito simulado, con el cual pueden ver funcionamiento de
nuestro primer programa creado.
Para simular necesitamos cualquier software dedicado a la electrnica que posea las
libreras de AVR, yo use el software Proteus, lo puedes bajar de www.4shared.com.
FISEI
Ahora vamos a aprender como configurar cada bit de los diferentes puertos como salida
o entrada, para ello vamos a realizar el siguiente ejemplo.
FISEI - UTA
17
FISEI
FISEI - UTA
FISEI
'* DECIR BREVEMENTO QUE DEPENDIENDO DE LOS VALORES QUE DEMOS A ESTOS
PARAMETROS
'* OBTENDREMOS SALIDAS O ENTRADAS EN UN PUERTO...
'* PARA ESTE EJEMPLO VAMOS A CONFIGURAR BIT A BIT EL PORTB PARA QUE SEAN
SALIDAS EN 0
'* LOGICO
'* POR LO QUE LOS VALORES DEBEN SER DDRn 1 Y PORTn 0..
'* Configuro todo el puerto B.0 como salida
Ddrb.0 = 1
Portb.0 = 0
' Nombre de subrutina
Parpadear:
' Activar el puerto B.0
Portb.0 = 1
' Espero 1 segundo
Wait 1
' Apagar el puerto B.0
Portb.0 = 0
' Espero 1 segundo
Wait 1
' ir a la subrutina parpadear
Goto Parpadear
End
FISEI - UTA
18
Una vez escrito el programa compilamos y grabamos el AVR, si no sabe como hacerlo
recordamos leer las pginas anteriores, no olvide dejar conectado como ilustra la figura
siguiente:
Una vez realizado este proyecto siga intentando con diferentes tiempos de Wait,
recuerde que son en segundos, pruebe Wait 3 ver que el parpadeo es mas lento, as
mismo ponga diferentes valores entre los 2 Wait, vera diferentes efectos. Si desea
tiempos mas pequeos debe usar Waitms, este se mide en milisegundos.
FISEI
FISEI - UTA
19
FISEI
FISEI - UTA
20
Es esta otra manera de escribir el programa, noten que es ms largo que el primer
programa, y adems colocamos Alias a los diferentes bits del puerto B.
Rojo1 = 1
Verde1 = 1
Podemos escribirlo asi:
Rojo1 = 1 : Verde1 = 1
FISEI
FISEI - UTA
21
$regfile = "m8def.dat"
$crystal = 1000000
Config Portb = Output
Discoteca:
Portb = 1
Gosub Pause
Portb = 2
Gosub Pause
Portb = 4
Gosub Pause
Portb = 8
Gosub Pause
Portb = 16
Gosub Pause
Portb = 32
Gosub Pause
Portb = 64
Gosub Pause
Portb = 128
Gosub Pause
Goto Discoteca
Pause:
Waitms 300
Return
End
FISEI
FISEI - UTA
22
FISEI
$regfile = "m8def.dat"
$crystal = 1000000
Config Portb = Output
Led1 Alias Pinb.0
' creo una variable llamada Repe con
' longitud BYTE
Dim Repe As Byte
Programa:
' ciclo FOR
For Repe = 1 To 5
Led1 = 1
Waitms 500
Led1 = 0
Waitms 500
Next
Wait 2
For Repe = 1 To 5
Led1 = 1
Waitms 500
Led1 = 0
Waitms 500
Next
Wait 3
Goto Programa
End
FISEI - UTA
23
$regfile = "m8def.dat"
$crystal = 1000000
Config Portb = Output
' creo una variable llamada I con
' longitud BYTE
Dim I As Byte
Portb = 1
Programa:
' ciclo FOR
For I = 1 To 7
Rotate Portb , Left
Waitms 150
Next
For I = 1 To 7
Rotate Portb , Right
Waitms 150
Next
Return
FISEI
Goto Programa
End
Nota: No olvide cargar al Puerto con 1, porque si no lo hace significa que vale cero (0)
y esto multiplicado por 2 siempre dar cero, en consecuencia nunca veramos el
desplazamiento.
Octavo Electrnica 2009 2010
FISEI - UTA
24
LA DECLARACION IF THEN.
Esta sirve de condicionante, si es verdadera ejecuta la operacin que sigue al THEN, y
si es falsa a la siguiente lnea despus del THEN, existen varias formas de aplicacin.
IF porb.0 = 0 THEN Michu ; ir a Michu si la entrada Portb.0 es cero lgico
IF porb.0 = 0 THEN
Porta.0 = 1
Wait 1
Porta.0 = 0
ENDIF
FISEI
FISEI - UTA
25
IF porb.0 = 0 THEN
.
ELSE
.
ENDIF
FISEI
FISEI - UTA
26
' Configuro todo el puerto B.0 como entrada, con resistencia push pull
Ddrb.0 = 0
Portb.0 = 0
' Configuro todo el puerto C.0 como salida
Ddrc.0 = 1
Portc.0 = 0
Programa:
If Pinb.0 = 0 Then Goto Encender
Goto Programa
Encender:
Portc.0 = 1
Wait 3
Portc.0 = 0
Goto Programa
End
FISEI
FISEI - UTA
27
$regfile = "m8def.dat"
$crystal = 1000000
Ddrc.0 = 0
Portc.0 = 1
Config Portb = Output
Dim Num As Byte
Num = 0
Pulsar:
Portb = Num
If Pinc.0 = 0 Then Goto Contar
Goto Pulsar
Contar:
Num = Num + 1
Goto Pulsar
End
Si tuvo la oportunidad de ver funcionando este proyecto, se dar cuenta que cada que se
pulsa el botn el contador aumenta demasiado, esto es como se dijo antes por el AVR
trabaja a gran velocidad cada instruccin y cuando una persona presione el botn, por lo
menos necesita de 100ms de tiempo para soltarlo, en este tiempo el AVR ya sumo
alrededor de 25000 veces. Para solucionar este problema proponemos hacer un
programa de antirrobote de tecla, en el cual si presionamos el botn, este enva a un
programa que lo mantiene encerrado, nicamente sale de esta subrutina en el momento
que el pulsador deja de ser presionado, a continuacin incluimos un WAITMS 200, que
es necesario para que en el momento de soltar la tecla se estabilice la seal.
$regfile = "m8def.dat"
$crystal = 1000000
Ddrc.0 = 0
Portc.0 = 1
Config Portb = Output
Dim Num As Byte
Num = 0
Pulsar:
Portb = Num
If Pinc.0 = 0 Then Goto Contar
Goto Pulsar
FISEI
Contar:
If Pinc.0 = 0 Then Goto Contar
Waitms 200
Num = Num + 1
Goto Pulsar
End
FISEI - UTA
28
FISEI
FISEI - UTA
29
$regfile = "m8def.dat"
$crystal = 1000000
Config Portc = Output
Dim Numero As Byte
Encerar:
Numero = 0
Visualizar:
Portc = Numero
Waitms 500
If Numero = 9 Then Goto
Encerar
Numero = Numero + 1
Goto Visualizar
End
FISEI
FISEI - UTA
30
$regfile = "m8def.dat"
$crystal = 1000000
Config Portc = Output
Ddrb.0 = 0
Portb.0 = 1
Dim Numero As Byte
Encerar:
Numero = 0
Visualizar:
Portc = Numero
If Pinb.0 = 0 Then Goto
Aumentar
Goto Visualizar
Aumentar:
If Pinb.0 = 0 Then Goto
Aumentar
Waitms 200
If Numero = 9 Then Goto Encerar
Numero = Numero + 1
Goto Visualizar
End
FISEI
FISEI - UTA
31
DECLARACIN LOOKUP
Sirve para obtener un valor constante de una tabla, esto lo hace segn el nmero de
veces que repita el FORNEXT, por ejemplo la primera vez toma el dato que se
encuentra en el lugar 0, la segunda vez, toma el dato del lugar 1 y as sucesivamente.
$regfile = "m8def.dat"
$crystal = 1000000
Config Portd = Output
Dim I As Byte
Prog:
For I = 0 To 5
Portd = Lookup(i , Secuencia)
Waitms 500
Next
Goto Prog
End
Secuencia:
Data &B1000000 , &B1111001 , &B0100100 , &B0110000 , &B0011001 , &B0010010
FISEI
FISEI - UTA
32
activado cada transistor no puede ser mayor que 5 mili segundos, es decir que los
cambios son tan rpidos que el ojo humano ve todos los display encendidos al mismo
tiempo, cuando en realidad solo se encienden uno a la vez.
FISEI
Ejemplo: para sacar el nmero 8 en las centenas debemos sacar (176 + 8), es decir el
nmero 184 porque si analizamos en cdigo binario, tenemos que los bits mas bajos
entran al CI 7447, y los bits mas altos, son los encargados de encender el display que le
corresponden a las centenas.
$regfile = "m8def.dat"
$crystal = 1000000
Config Portd = Output
Visualizar:
' activo transistor de unidades y presento el 1
Portd = 224 + 1
Waitms 5
' activo transistor de decenas y presento el 2
Portd = 208 + 2
Waitms 5
' activo transistor de centenas y presento el 3
Portd = 176 + 3
Waitms 5
' activo transistor de miles y presento el 4
Portd = 112 + 4
Waitms 5
Goto Visualizar
End
FISEI - UTA
33
FISEI
$regfile = "m8def.dat"
$crystal = 1000000
Config Portd = Output
Ddrc.0 = 1
Portc.0 = 0
Ddrc.1 = 0
Portc.1 = 1
Ddrc.2 = 0
Portc.2 = 1
Ddrc.3 = 0
Portc.3 = 1
Dim Unid As Byte
Dim Dece As Byte
Dim Cent As Byte
Dim Mile As Byte
FISEI - UTA
34
FISEI
FISEI - UTA
35
FISEI
$regfile = "m8def.dat"
$crystal = 1000000
Config Portd = Output
Config Portb = Output
Texto:
' %1110 activa el display de la derecha
Portd = 14
' forma la letra A
Portb = 8
Waitms 5
' %1101 activa el siguiente display
Portd = 13
' forma la letra L
Portb = 71
Waitms 5
FISEI - UTA
36
$regfile = "m8def.dat"
$crystal = 1000000
Config Portd = Output
Config Portb = Output
Dim X As Byte
Texto:
For X = 1 To 20
Portd = 14 : Portb = 8
Waitms 5
Portd = 13 : Portb = 71
Waitms 5
Portd = 11 : Portb = 64
Waitms 5
Portd = 7 : Portb = 9
Waitms 5
Next
For X = 1 To 20
Portd = 14 : Portb = 127
Waitms 5
Portd = 13 : Portb = 8
Waitms 5
Portd = 11 : Portb = 71
Waitms 5
Portd = 7 : Portb = 64
Waitms 5
Next
FISEI
For X = 1 To 20
Portd = 14 : Portb = 9
Waitms 5
Portd = 13 : Portb = 127
Waitms 5
Portd = 11 : Portb = 8
Waitms 5
Portd = 7 : Portb = 71
Waitms 5
Next
FISEI - UTA
37
For X = 1 To 20
Portd = 14 : Portb = 64
Waitms 5
Portd = 13 : Portb = 9
Waitms 5
Portd = 11 : Portb = 127
Waitms 5
Portd = 7 : Portb = 8
Waitms 5
Next
For X = 1 To 20
Portd = 14 : Portb = 71
Waitms 5
Portd = 13 : Portb = 64
Waitms 5
Portd = 11 : Portb = 9
Waitms 5
Portd = 7 : Portb = 127
Waitms 5
Next
Goto Texto
End
FISEI
FISEI - UTA
38
Pin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Simb
Vss
Vdd
Vo
RS
R/W
E
D0
D1
D2
D3
D4
D5
D6
D7
A
K
Descripcin
Tierra de alimentacin GND
Alimentacin de +5V CC
Ajuste de contraste del cristal liquido (0 a +5V)
Seleccin del registro control/datos RS=0 reg. Control RS=1 reg. Datos
Lectura/Escritura en LCD R/W = 0 escritura (write) R/W = 1 lectura (read)
Habilitacin E = 0 mdulo desconectado E = 1 mdulo conectado
Bit menos significativo (bus de datos bidireccional)
Bascom puede manejar los dos tipos principales de pantallas de cristal lquido:
alfanumricos y grficos. Por el momento, vamos a preocuparnos por el tipo ms comn
alfanumricos. Este tipo de pantalla LCD puede mostrar los caracteres, nmeros y
caracteres especiales. El tipo ms comn de LCD alfanumrico utiliza un Hitachi
HD44780 como controlador de pantalla. Cuando usted no est seguro acerca de qu tipo
de pantalla que estn sosteniendo en sus manos, slo tiene que mirar a las
denominaciones de chips en la espalda. Si uno de estos dice HD44780 ests a salvo.
FISEI
Bascom tiene una configuracin por defecto para la conexin de la pantalla LCD.
Options / Compiler / LCD
FISEI - UTA
39
FISEI
FISEI - UTA
40
Config Lcd = 16 * 2
Config lcdpin = PIN, DB4 = PORTB.1, DB5 = PORTB.2, DB6 = PORTB.3,
DB7 = PORTB.4, E = PORTB.5, RS = PORTB.6
Lcd Mode Config = Puerto
FISEI
La pantalla LCD alfanumrico estndar tiene 14 pins. Pin nmero 1 es la tierra. Pin
nmero 5 es R / W y tambin est conectado a tierra. Pin nmero 2 es Vcc, va a +5 V.
Algunos LCD no tolerar una fuente de alimentacin con tensin de salida de un lento
aumento. Pin nmero 3 es para el contraste del LCD. Con la mayora de las pantallas se
puede conectar el pin de contraste a tierra. Por un contraste ptimo, en algunas pantallas
se necesita una tensin ligeramente positiva en este pin. Uso de un potencimetro entre
+5 V y tierra debe dar una configuracin ptima para la mayora de las pantallas. Los
nmeros de PIN 4 (RS), 6 (E) y 11, 12, 13 y 14 estn conectados a la controladora como
se muestra en el esquema. PIN nmeros 7, 8, 9 y 10 se puede quedar desconectados.
Tenga en cuenta que D5, D6 y D7 son compartidos con MOSI, miso y SCK. Si usted
tiene una pantalla LCD con backlight LED que puede tener un 16 pines en el PCB del
LCD. Pins 15 y 16 son para la luz de fondo. Si estos pines no tienen otras indicaciones,
intente una alimentacin de +5 V con un resistor limitador de corriente de unos pocos
cientos de ohmios para averiguar cul es el ctodo y el nodo. A veces la luz de fondo
LED tiene un conector separado de los otros 14 pines.
FISEI - UTA
41
$regfile = "m8def.dat"
$crystal = 1000000
Dim Count As Integer
$sim
Config Lcd = 16 * 2
Config lcdpin = PIN, DB4 = PORTB.1, DB5 = PORTB.2, DB6 = PORTB.3,
DB7 = PORTB.4, E = PORTB.5, RS = PORTB.6
Config Lcdmode = Port
Do
' borrar la pantalla
Cls
' Presento en la lcd HELLO
Lcd "Hello " ; Count
Count = Count + 1
Wait 1
Loop
End
FISEI
FISEI - UTA
42
FISEI
Se debe entender que existe un cursor que aunque no lo vemos, pues es este el que
indica donde aparecer la siguiente letra, para poder entender haremos un ejercicio
completo, as podrn aprender ms del LCD y las funciones de cada uno de los
comandos. Primero que nada haremos visible el cursor y luego pondremos Wait para
poder ver el funcionamiento.
El siguiente programa muestra algunos de los comandos que pueden ser utilizados con
la pantalla LCD.
FISEI - UTA
43
$regfile = "m8def.dat"
$crystal = 1000000
' proporcin del baud
$baud = 19200
' uso 32 predefinido para la pila del hardware
$hwstack = 32
' so 10 predefinido para la pila de SW
$swstack = 10
' uso 40 predefinido para el espacio del marco
$framesize = 40
Wait 1
Cls
'apaga el despliegue
Display Off
Wait 1
'encender el despliegue
Display On
Wait 1
Goto Programa
End
FISEI
FISEI - UTA
44
Dar el un clic en cualquier cuadro para que este se haga negro, o clic en un cuadro negra
para que se haga blanco. Hacer un smbolo de la cruz
FISEI
FISEI - UTA
45
Mover el cursor de texto a la siguiente lnea vaca, rehacer Tools / LCD designer,
realizar el siguiente grafico.
FISEI
Cls
Do
For Star = 0 To 5 Step 1
Locate 1 , 16
Lcd Chr(star)
Next Star
Loop
End
FISEI - UTA
46
FISEI
FISEI - UTA
47
FISEI
$regfile = "m8def.dat"
$crystal = 1000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40
' Configuro todo el puerto D.2, D.3 como salida
Ddrd.2 = 1
' led rojo
Portd.2 = 0
Ddrd.3 = 1
' led verde
Portd.3 = 0
Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2
Config Lcdpin = Pin , Db6 = Portb.3 , Db7 = Portb.4
Config Lcdpin = Pin , E = Portb.5 , Rs = Portb.6
Dim Puls As Word
Config Lcd = 16 * 2
Prog:
' escondo el cursor
Cursor Off Noblink
Pulsein Puls , Pind , 0 , 1
Puls = 26315 / Puls
Cls
Lcd " Frecuencia"
' localizo al cursos fila 2 columna 6
Locate 2 , 6
FISEI - UTA
48
Lcd Puls
Locate 2 , 10
Lcd "Hz"
If Puls > 120 Then Goto Alarmah
If Puls < 100 Then Goto Alarmal
Pind.2 = 0 : Pind.3 = 0
Goto Prog
Alarmah:
Pind.2 = 1 : Pind.3 = 0
Goto Prog
Alarmal:
Pind.3 = 1 : Pind.2 = 0
Goto Prog
End
GENERACIN DE SONIDO
El software Bascom es capaz de sacar las frecuencias especificadas por un pin del AVR,
para esto aprenderemos la declaracin SOUND.
LA DECLARACIN SOUND. Saca lo o las frecuencias especificadas por un pin del
micro, estas pueden ser de 0 a 32767 Hz, su utilizacin es de la siguiente forma.
FISEI
Quiere decir sacar una frecuencia de 65635 ciclos durante 10 segundos por el puerto
B.0.
En esta prctica lo utilizaremos para generar un sonido a travs de un piezoelctrico o
por medio de un parlante.
FISEI - UTA
49
$regfile = "m8def.dat"
$crystal = 1000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40
' Configuro todo el puerto C.0 como salida
Ddrc.0 = 1
' led rojo
Portc.0 = 0
Speaker Alias Portc.0
Do
Sound Speaker , 1000 , 2
Wait 2
Loop
end
FISEI
Esta practica consiste en sacar por un parlante el sonido caracterstico de una sirena
policial, para esto emplearemos la ayuda de la declaracin vista anteriormente.
' Configuro todo el puerto C.0 como salida
Ddrc.0 = 1
' led rojo
Portc.0 = 0
Speaker Alias Portc.0
Do
Sound Speaker , 100 , 10
Sound Speaker , 50 , 10
Wait 2
Loop
FISEI - UTA
50
Esto quiere decir sacar dos tonos por el puerto C.0, el primer tono es 100 que equivale a
(7874 Hz) con una duracin de 10 milisegundos y luego un tono de 50 (3937 Hz) con
una duracin de 10 milisegundos tambin.
En cuanto al diagrama y materiales son los mismos de la prctica anterior.
$regfile = "m8def.dat"
$crystal = 1000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40
' Configuro todo el puerto C.0 como salida
Ddrc.0 = 1
' led rojo
Portc.0 = 0
Speaker Alias Portc.0
Do
Sound Speaker , 125 , 4
Sound Speaker , 123 , 5
Wait 2
Loop
Pruebe con algunas combinaciones de tonos, as como tambin con diferentes tiempos y
ver que bien pude componer una meloda.
FISEI
Esta practica tiene como objetivo generar tonos DTMF (Dual tono Multifrecuency) a
travs de un AVR, como los que genera cualquier telfono fijo o celular, estos tonos no
son nada mas que el envi de dos frecuencias especificas asignadas a cada tecla, estas
frecuencias podemos ver en la figura siguiente, lo que sucede cuando pulsamos una
tecla, es que enva una frecuencia baja y luego una segunda frecuencia del grupo alto,
esto podramos hacerlo con la declaracin PULSEOUT.
FISEI - UTA
51
LA DECLARACIN DTMFOUT
FISEI
Esta genera automticamente los tonos duales correspondientes a cada tecla y los enva
cada una con intervalos de 50 milisegundos, aunque estos los podemos cambiar.
Para nuestro caso, para saber que puerto es el que enva la seal DTMF, debemos acudir
a la hoja de dados del ATMEGA8 y buscamos el puerto con caractersticas OC1, para
nuestro AVR es el pin B.1.
FISEI - UTA
52
$regfile = "m8def.dat"
$crystal = 1000000
$baud = 19200
$hwstack = 32
$swstack = 10
$framesize = 40
Config Portb = Output
' creo una cadenan de caracteres
Dim Numero As String * 9
' numero a marcar
Numero = "123456789"
Do
' duracion de 50ms por cada digito
Dtmfout Numero , 50
Waitms 500
Loop
FISEI
En la figura siguiente se muestra el diagrama bsico de conexin para poder hacer una
llamada telefnica:
La resistencia de 560Ohm a 1 vatio paralela a la red telefnica, sirve para simular la
carga de un telfono normal, y con esto podremos tener el tono de marcado necesario
para hacer la llamada, adems notarn que esta resistencia empieza a disipar calor en
el momento que se une a la red telefnica, esto debido a la cantidad de voltaje que
circula (60 voltios).
El rel hace la conexin y desconexin de la red telefnica, que en este caso sera
como el auricular que cuelga y descuelga el telfono.
El filtro de 1 uF a 100 voltios, sirve para poder mejorar la onda que sale del AVR y
adems como proteccin para el AVR. Es importante indicar que la red telefnica
suministra alrededor de 60 voltios en DC, por lo que el capacitor debe pasar de 60
voltios y adems el lado positivo de la red telefnica debe ir a tierra del AVR y el
negativo haca el pin del AVR, por lo que necesitaremos la ayuda de un voltmetro
para poder identificar la polaridad de la red.
FISEI - UTA
53
Este proyecto es muy utilizado en sistemas de seguridad, se puede hacer una alarma, la
cual en el momento de violar su seguridad, este realice automticamente una llamada al
propietario, el propietario en el momento de contestar escuchar una sirena, seal
suficiente para saber que alguien ha activado la alarma, este mismo principio utilizan las
centrales de monitoreo, con la diferencia que en vez de generar un sonido de sirena, se
enva datos en forma serial como: Zona de apertura, hora, estado de batera, etc.
FISEI
FISEI - UTA
54
FISEI
FISEI - UTA
55
FISEI
$regfile = "m8def.dat"
$crystal = 1000000
' configuro puertos como salida
Ddrb = &B00001111
Portb = &B00001111
Config Portc = Output
A Alias Portb.0
B Alias Portb.1
C Alias Portb.2
D Alias Portb.3
Uno Alias Pinb.4
Dos Alias Pinb.5
Tres Alias Pinb.6
Cuatro Alias Pinb.7
Barrido:
A=0
If Uno = 0 Then Portc = 1
If Dos = 0 Then Portc = 2
If Tres = 0 Then Portc = 3
If Cuatro = 0 Then Portc = 10
A=1
B=0
If Uno = 0 Then Portc = 4
If Dos = 0 Then Portc = 5
If Tres = 0 Then Portc = 6
If Cuatro = 0 Then Portc = 11
B=1
C=0
If Uno = 0 Then Portc = 7
If Dos = 0 Then Portc = 8
If Tres = 0 Then Portc = 9
If Cuatro = 0 Then Portc = 12
C=1
D=0
If Uno = 0 Then Portc = 14
If Dos = 0 Then Portc = 0
If Tres = 0 Then Portc = 15
If Cuatro = 0 Then Portc = 13
D=1
Waitms 10
Goto Barrido
End
Como se puede ver este programa es un poco largo pero el uso de memoria es mnima
en el AVR.
El funcionamiento es sencillo, solo debemos fijarnos cual fila es la que esta en nivel
bajo y esta es la fila que se esta barriendo, si una de las condiciones encuentra la
igualdad, pues esta es la tecla pulsada.
Ejemplo: Si pulsamos la tecla 6, en algn momento se pondr en bajo la fila B y
detectara un cambio de estado de 1 a 0 en la columna 3, por lo que:
A=0
If Tres = 0 Then Portc = 3
Octavo Electrnica 2009 2010
FISEI - UTA
56
Debemos considerar que un persona requiere como mnimo 100 milisegundos para
presionar una tecla, en este tiempo el AVR realiza 10 barridos, por lo que de seguro
detectara inmediatamente la tecla pulsada.
Para el caso de utilizar un teclado de 12 pulsadores, debemos eliminar una columna, las
que corresponden a la tecla A, B, C y D, es decir eliminar las siguientes lneas de
programa.
If Cuatro = 0 Then Portc = 10
If Cuatro = 0 Then Portc = 11
If Cuatro = 0 Then Portc = 12
If Cuatro = 0 Then Portc = 13
En este caso quedara un teclado con pulsadores del 0 al 9 y dos teclas de propsito
especial, la tecla asterisco (*) y la tecla numeral (#).
FISEI
FISEI - UTA
57
$regfile = "m8def.dat"
$crystal = 4000000
' configuro puertos como salida
Dim Numero As Byte
Dim R As Byte
Config Portc = Output
Ddrb = &B00001111
Portb = &B00001111
Config Portc = Output
A Alias Portb.0
B Alias Portb.1
C Alias Portb.2
D Alias Portb.3
Uno Alias Pinb.4
Dos Alias Pinb.5
Tres Alias Pinb.6
Cuatro Alias Pinb.7
Bip Alias Portc.0
Led Alias Portc.1
Door Alias Portc.2
FISEI
Iniciando:
Led = 1 : Bip = 1
Waitms 500
Led = 0 : Bip = 0
Goto Teclauno
Barrido:
A=0
If Uno = 0 Then Numero = 1 : Return
If Dos = 0 Then Numero = 2 : Return
If Tres = 0 Then Numero = 3 : Return
If Cuatro = 0 Then Numero = 10 :
Return
A=1
B=0
FISEI - UTA
58
Teclauno:
Gosub Barrido
Gosub Ptecla
If Numero = 1 Then Goto Teclados
Goto Falso
Teclados:
Gosub Barrido : Gosub Ptecla
If Numero = 2 Then Goto Teclatres
Goto Falso1
Teclatres:
Gosub Barrido : Gosub Ptecla
If Numero = 3 Then Goto Teclacuatro
Goto Falso2
Teclacuatro:
Gosub Barrido : Gosub Ptecla
If Numero = 4 Then Goto Openge
Goto Falso3
Openge:
For R = 1 To 2
Waitms 100
Led = 1 : Bip = 1
Waitms 100
Led = 0 : Bip = 0
Next
Door = 1
Wait 1
Door = 0
Goto Teclauno
FISEI
Falso:
Gosub Barrido : Gosub Ptecla
Falso1:
Gosub Barrido : Gosub Ptecla
Falso2:
Gosub Barrido : Gosub Ptecla
Falso3:
For R = 1 To 3
Wait 1
Led = 1 : Bip = 1
Wait 1
Led = 0 : Bip = 0
Next
Goto Teclauno
End
FISEI - UTA
59
FISEI
Este proyecto es muy similar al anterior con la diferencia que este se le puede cambiar
la clave predefinida (1, 2, 3, 4) por cualquier otra combinacin de teclas, la clave
original ser cargada en cuatro variables y existir una manera de cambiar los valores de
estas variables lo cual se lo hace de la siguiente manera: despus de haber colocado la
clave original, debemos mantener presionado la tecla D durante 2 segundos, para ser
ms exactos en el momento que el rel se conecta despus de 1 segundo hay una
pregunta si la tecla D es presionada ir a grabar, si no presionamos la tecla D a tiempo,
perderemos la oportunidad de cambiar la clave y tendremos que volver a repetir el
proceso, en el momento que ingresa al programa de cambio de clave se encender el led
y permanecer encendido esperando a que ingresemos los 4 nuevos dgitos.
Es importante saber que la nueva clave se almacenara en las variables SETPRIME,
SETSEGUN, SETERCER y SETCUART, estas variables ocupan espacio de 224
BYTES, por lo tanto solo estn activadas mientras el AVR se encuentra alimentado, una
vez que se corta la alimentacin al AVR esta memoria de borra, por consiguiente al
momento de volver a prender el micro AVR, la nueva clave se nos habr perdido y en
su lugar se encontrara la clave original (1, 2, 3, 4), esto debido a que esta clave se
encuentra en la memoria FLASH y en el momento de correr el programa lo carga
nuevamente en la memoria RAM para desde aqu poder ser modificada.
En cuanto a los materiales y el diagrama de conexin, son los mismos que se utilizaron
en el ejercicio anterior.
$regfile = "m8def.dat"
$crystal = 4000000
' configuro puertos como salida
Dim Numero As Byte
Dim R As Byte
Config Portc = Output
Ddrb = &B00001111
Portb = &B00001111
Config Portc = Output
A Alias Portb.0
B Alias Portb.1
C Alias Portb.2
D Alias Portb.3
Uno Alias Pinb.4
Dos Alias Pinb.5
Tres Alias Pinb.6
Cuatro Alias Pinb.7
Bip Alias Portc.0
Led Alias Portc.1
Door Alias Portc.2
Dim Setprime As Byte
Dim Setsegu As Byte
Dim Setercer As Byte
Dim Setcuart As Byte
Setprime = 1
Setsegu = 2
Setercer = 3
Setcuart = 4
niciando:
Led = 1 : Bip = 1
Waitms 500
Led = 0 : Bip = 0
Goto Teclauno
Grabauno:
Gosub Ptecla : Led = 1
Gosub Barrido : Gosub Ptecla
Led = 1
Setprime = Numero
Grabados:
Gosub Barrido : Gosub Ptecla
Led = 1
Setsegu = Numero
Grabatres:
Gosub Barrido : Gosub Ptecla
Led = 1
Setercer = Numero
FISEI - UTA
60
Grabacuatro:
Gosub Barrido : Gosub Ptecla
Led = 1
Setcuart = Numero
Goto Iniciando
Barrido:
A=0
If Uno = 0 Then Numero = 1 : Return
If Dos = 0 Then Numero = 2 : Return
If Tres = 0 Then Numero = 3 : Return
If Cuatro = 0 Then Numero = 10 :
Return
A=1
B=0
If Uno = 0 Then Numero = 4 : Return
If Dos = 0 Then Numero = 5 : Return
If Tres = 0 Then Numero = 6 : Return
If Cuatro = 0 Then Numero = 11 :
Return
B=1
C=0
If Uno = 0 Then Numero = 7 : Return
If Dos = 0 Then Numero = 8 : Return
If Tres = 0 Then Numero = 9 : Return
If Cuatro = 0 Then Numero = 12 :
Return
C=1
D=0
If Uno = 0 Then Numero = 14 :
Return
If Dos = 0 Then Numero = 0 : Return
If Tres = 0 Then Numero = 15 :
Return
If Cuatro = 0 Then Numero = 13 :
Return
D=1
Waitms 10
Goto Barrido
Ptecla:
Led = 1 : Bip = 1
Waitms 100
Led = 0 : Bip = 0
Teclados:
Gosub Barrido : Gosub Ptecla
If Numero = Setsegu Then Goto
Teclatres
Goto Falso1
Teclatres:
Gosub Barrido : Gosub Ptecla
If Numero = Setercer Then Goto
Teclacuatro
Goto Falso2
Teclacuatro:
Gosub Barrido : Gosub Ptecla
If Numero = Setcuart Then Goto
Openge
Goto Falso3
Openge:
For R = 1 To 2
Waitms 100
Led = 1 : Bip = 1
Waitms 100
Led = 0 : Bip = 0
Next
Door = 1
Wait 1
Door = 0
A=1:B=1:C=1:D=1
If Cuatro = 0 Then Goto Grabauno
Goto Teclauno
Falso:
Gosub Barrido : Gosub Ptecla
Falso1:
Gosub Barrido : Gosub Ptecla
Falso2:
Gosub Barrido : Gosub Ptecla
Falso3:
For R = 1 To 3
Wait 1
Led = 1 : Bip = 1
Wait 1
Led = 0 : Bip = 0
Next
Goto Teclauno
End
FISEI
Espacio:
If Uno = 0 Then Goto Espacio
If Dos = 0 Then Goto Espacio
If Tres = 0 Then Goto Espacio
If Cuatro = 0 Then Goto Espacio
Waitms 25
Return
Teclauno:
Gosub Barrido
Gosub Ptecla
If Numero = Setprime Then Goto
Teclados
Goto Falso
FISEI - UTA
61
FISEI
FISEI - UTA
62
FISEI
$regfile = "m8def.dat"
$crystal = 4000000
$eeprom
' configuro puertos como salida
Dim Numero As Byte
Dim R As Byte
Config Portc = Output
Ddrb = &B00001111
Portb = &B00001111
Config Portc = Output
A Alias Portb.0
B Alias Portb.1
C Alias Portb.2
D Alias Portb.3
Uno Alias Pinb.4
Dos Alias Pinb.5
Tres Alias Pinb.6
Cuatro Alias Pinb.7
Bip Alias Portc.0
Led Alias Portc.1
Door Alias Portc.2
Dim Setprime As Byte
Dim Setsegu As Byte
Dim Setercer As Byte
Dim Setcuart As Byte
Setprime = 1
Setsegu = 2
Setercer = 3
Setcuart = 4
Dim Eeprom1 As Byte
Dim Eeprom2 As Byte
Dim Eeprom3 As Byte
Dim Eeprom4 As Byte
Eeprom1 = 1
Eeprom2 = 2
Eeprom3 = 3
Eeprom4 = 4
Iniciando:
For R = 1 To 2
Led = 1 : Bip = 1
Waitms 500
Led = 0 : Bip = 0
Waitms 150
Next
Writeeeprom Eeprom1 , 0
Writeeeprom Eeprom2 , 1
Writeeeprom Eeprom3 , 2
Writeeeprom Eeprom4 , 3
Reseteo:
For R = 1 To 3
Led = 1 : Bip = 1
Waitms 50
Led = 0 : Bip = 0
Waitms 50
If Cuatro = 0 And Uno = 0 Then Goto
Reseteo
Next
Readeeprom Setprime , 0
Readeeprom Setsegu , 1
Readeeprom Setercer , 2
Readeeprom Setcuart , 3
Goto Teclauno
Grabauno:
Gosub Ptecla : Led = 1
Gosub Barrido : Gosub Ptecla
Led = 1
Writeeeprom Numero , 0
Grabados:
Gosub Barrido : Gosub Ptecla
Led = 1
Writeeeprom Numero , 1
Grabatres:
Gosub Barrido : Gosub Ptecla
Led = 1
Writeeeprom Numero , 2
Grabacuatro:
Gosub Barrido : Gosub Ptecla
Led = 1
Writeeeprom Numero , 3
Goto Reseteo
Barrido:
A=0
If Uno = 0 Then Numero = 1 : Return
If Dos = 0 Then Numero = 2 : Return
If Tres = 0 Then Numero = 3 : Return
If Cuatro = 0 Then Numero = 10 :
Return
A=1
B=0
If Uno = 0 Then Numero = 4 : Return
If Dos = 0 Then Numero = 5 : Return
If Tres = 0 Then Numero = 6 : Return
If Cuatro = 0 Then Numero = 11 :
Return
B=1
C=0
If Uno = 0 Then Numero = 7 : Return
If Dos = 0 Then Numero = 8 : Return
If Tres = 0 Then Numero = 9 : Return
If Cuatro = 0 Then Numero = 12 :
Return
C=1
D=0
If Uno = 0 Then Numero = 14 :
Return
If Dos = 0 Then Numero = 0 : Return
If Tres = 0 Then Numero = 15 :
Return
If Cuatro = 0 Then Numero = 13 :
FISEI - UTA
63
Return
D=1
Waitms 10
Goto Barrido
Ptecla:
Led = 1 : Bip = 1
Waitms 100
Led = 0 : Bip = 0
Espacio:
If Uno = 0 Then Goto Espacio
If Dos = 0 Then Goto Espacio
If Tres = 0 Then Goto Espacio
If Cuatro = 0 Then Goto Espacio
Waitms 25
Return
Teclauno:
Gosub Barrido
Gosub Ptecla
If Numero = Setprime Then Goto
Teclados
Goto Falso
Teclados:
Gosub Barrido : Gosub Ptecla
If Numero = Setsegu Then Goto
Teclatres
Goto Falso1
Falso:
Gosub Barrido : Gosub Ptecla
Falso1:
Gosub Barrido : Gosub Ptecla
Falso2:
Gosub Barrido : Gosub Ptecla
Falso3:
For R = 1 To 3
Waitms 150
Led = 1 : Bip = 1
Waitms 15
Led = 0 : Bip = 0
A=1:B=1:C=1:D=1
If Cuatro = 0 And Uno = 0 Then Goto
Reseteo
Next
Panico:
Led = 1
Waitms 500
Led = 0
Waitms 500
A=1:B=1:C=1:D=1
If Cuatro = 0 And Uno = 0 Then Goto
Reseteo
Goto Panico
End
Teclatres:
Gosub Barrido : Gosub Ptecla
If Numero = Setercer Then Goto
Teclacuatro
Goto Falso2
Teclacuatro:
Gosub Barrido : Gosub Ptecla
If Numero = Setcuart Then Goto
Openge
Goto Falso3
FISEI
Openge:
For R = 1 To 2
Waitms 100
Led = 1 : Bip = 1
Waitms 100
Led = 0 : Bip = 0
Next
Door = 1
Wait 1
Door = 0
A=1:B=1:C=1:D=1
If Cuatro = 0 Then Goto Grabauno
Goto Teclauno
FISEI - UTA
64
FISEI
FISEI - UTA
65
FISEI
conmuta a su segunda posicin (fig. 4b), se invierte el sentido de la corriente que circula
por T y por tanto la polaridad magntica, volvindose a reorientar el rotor (el campo ha
sufrido una rotacin de 90 en sentido antihorario, haciendo girar el rotor 90 en ese
mismo sentido). Con esto se llega a la conclusin de que para dar una vuelta completa
seran necesarios cuatro pasos de 90 cada uno (el ciclo completo se puede seguir en la
figura 4a,b,c,d).Ahora bien, este tipo de motores tambin puede funcionar de un modo
menos "ortodoxo", pero que nos va a permitir doblar el nmero de pasos, si bien a costa
de la regularidad del par. Esto se consigue de la siguiente manera: en principio, al igual
que en el anterior fondo de funcionamiento, por los devanados T y U se hace circular
una corriente, de tal modo que el estator adquiere la magnetizacin correspondiente y
por lo tanto el rotor se orienta segn ella. Ahora bien, al contrario que en el caso
anterior, antes de conmutar el interruptor I.1 a su segunda posicin, se desconectar el
devanado T, reorientndose por consiguiente el rotor, pero la mitad de un paso (45).
FISEI - UTA
66
FISEI
Los motores paso a paso unipolares, en cuanto a construccin son muy similares a los
anteriormente descritos excepto en el devanado de su estator (fig. 5). En efecto, cada
bobina del estator se encuentra dividida en dos mediante una derivacin central
conectada a un terminal de alimentacin. De este modo, el sentido de la corriente que
circula a travs de la bobina y por consiguiente la polaridad magntica del estator viene
determinada por el terminal al que se conecta la otra lnea de la alimentacin, a travs
de un dispositivo de conmutacin. Por consiguiente las medias bobinas de conmutacin
hacen que se inviertan los polos magnticos del estator, en la forma apropiada. Ntese
que en vez de invertir la polaridad de la corriente como se haca en los M.P.P. bipolares
se conmuta la bobina por donde circula dicha corriente.
FISEI - UTA
67
FISEI
Al igual que los M.P.P. bipolares, es posible tener resoluciones de giro correspondientes
a un semipaso. Ahora bien, dado que las caractersticas constructivas de estos motores
unipolares son idnticas a las de los bipolares, se puede deducir que los devanados tanto
en uno como otro caso ocuparn el mismo espacio, y por tanto es evidente que por cada
fase tendremos menos vueltas o bien el hilo de cobre ser de una seccin menor. En
cualquiera de los dos casos se deduce la disminucin de la relacin de amperios/vuelta.
Por tanto, a igualdad de tamao los motores bipolares ofrecen un mayor par.
FISEI - UTA
68
FISEI
Medio paso (Half step): Con este modo de funcionamiento el rotor avanza medio paso
por cada pulso de excitacin, presentando como principal ventaja una mayor resolucin
de paso, ya que disminuye el avance angular (la mitad que en el modo de paso
completo). Para conseguir tal cometido, el modo de excitacin consiste en hacerlo
alternativamente sobre dos bobinas y sobre una sola de ellas, segn se muestra en la
Tabla siguiente para ambos sentidos de giro.
FISEI - UTA
69
For X = 1 To 12
Portc = &B1000
Gosub Pausa
Portc = &B0100
Gosub Pausa
Portc = &B0010
Gosub Pausa
Portc = &B0010
Gosub Pausa
Next
Wait 1
Goto Antihorario
Pausa:
Waitms 100
Return
End
FISEI
$regfile = "m8def.dat"
$crystal = 4000000
$eeprom
Dim X As Byte
Config Portc = Output
Antihorario:
For X = 1 To 12
Portc = &B0001
Gosub Pausa
Portc = &B0010
Gosub Pausa
Portc = &B0100
Gosub Pausa
Portc = &B1000
Gosub Pausa
Next
Wait 1
FISEI - UTA
FISEI
$regfile = "m8def.dat"
$crystal = 4000000
$eeprom
Dim X As Byte
Config Portc = Output
Antihorario:
For X = 1 To 12
Portc = &B0001
Gosub Pausa
Portc = &B0011
Gosub Pausa
Portc = &B0010
Gosub Pausa
Portc = &B0110
Gosub Pausa
Portc = &B0100
Gosub Pausa
Portc = &B1100
Gosub Pausa
Portc = &B1000
Gosub Pausa
Portc = &B1100
Gosub Pausa
Portc = &B1000
Gosub Pausa
Portc = &B1001
Gosub Pausa
Next
Goto Antihorario
Pausa:
Waitms 100
Return
End
FISEI - UTA
70
COMUNICACIN
QUE ES LA COMUNICACIN SERIAL?
RS-232 es hoy en da un estndar de comunicacin antiguo. Es sorprendente que una
norma, definida en los aos sesenta, es an ampliamente utilizado hoy en da.
Formalmente no obstante, el nombre de RS-232 no es aplicable a una norma. Una
organizacin estadounidense, ahora conocida como la Asociacin de Industrias
Electrnicas, propuso una forma de comunicacin entre grandes ordenadores centrales y
perifricos tales como terminales La propuesta se llama un nivel recomendado y 232 no
era ms que un nmero de identificacin. Mucho ms tarde esto se convirti en una
norma oficial, la EIA-232. En 1991, la versin ms reciente, la EIA-232E fue publicado.
Sin embargo, el nombre de RS-232 es an ampliamente utilizado.
Una tensin entre -3 y -25 voltios es una lgica de un (1)
Una tensin entre 3 y 25 voltios es una lgica de cero (0)
UART
FISEI
FISEI - UTA
71
72
Un convertidor de nivel genera las tensiones necesarias para cumplir con los niveles Del
RS-232. Tambin se invierte la lgica de los niveles. El MAX232 usa interiormente,
convertidores de conmutacin y dobladores de voltaje para generar niveles de alrededor
de -9 y 9 voltios. Estas tensiones se encuentran claramente dentro del rango requerido.
FISEI
FISEI - UTA
73
FISEI
$regfile = "m8def.dat"
$crystal = 1000000
$baud = 96000
Config Portb = Output
Inicio:
Portb.0 = 1
Wait 1
Portb.0 = 0
Waitms 500
' envio datos en forma serial
Print "DOG"
Goto Inicio
End
FISEI - UTA
74
BASCOM nos ofrece una herramienta para poder simular la comunicacin serial, para
ello nos vamos a Tools / Terminal Emulator
FISEI
FISEI - UTA
75
FISEI
Mybaud = 19200
Serin S , 0 , D , 0 , Mybaud , 0 , 8 , 1
'
^ 1 stop bit
'
^---- 8 data bits
'
^------ even parity (0=N, 1 = E, 2=O)
'
^-------------- baud rate
'
^-------------------- pin number
'
^----------------------- port so PORTd.0 and PORTd.1 son usados
'
^--------------------------- for strings pass 0
'
^-------------------------------- variable
FISEI - UTA
76
$regfile = "m8def.dat"
$crystal = 1000000
Dim Dat As Byte
Dim Mybaud As Integer
Mybaud = 9600
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.1 ,
Db5 = Portb.2
Config Lcdpin = Pin , Db6 = Portb.3 ,
Db7 = Portb.4
Config Lcdpin = Pin , E = Portb.5 ,
Rs = Portb.6
Config Lcdmode = Port
' borrar la pantalla
Cls
' Presento en la lcd
Lcd " LCD listo"
Wait 1
Cls
Inicio:
Serin Dat , 0 , D , 0 , Mybaud , 0 , 8 ,
1
Lcd "Dat"
Goto Inicio
COMUNICACIN IC
FISEI
FISEI - UTA
77
Direccion IC
El nmero de CI en un bus IC est limitado a 128, ya que cada IC necesita nicos siete
bits de direccin.
Estndar IC
La norma original especifica una velocidad mxima en el bus de 100 kHz. En 1992, se
aadi un modo rpido con una velocidad mxima de 400 kHz. En 1998, una versin 2
fue lanzado. Esta versin tiene un modo de alta velocidad con un mximo de 3.4Mbit/s.
Mas sobre IC
FISEI
Philips tiene la patente en la IC eso significa que otros fabricantes de chips que quieren
hacer IC IC tienen que pagar regalas y deben firmar un acuerdo que indique que se
adhieren a los estndares IC.
La mayora de los controladores de AVR de Atmel tiene una interfaz de dos hilos, por
lo menos eso es lo que dice la documentacin. Esto es por supuesto una interfaz IC.
La norma IC prescribe resistencias en SDA y la lnea SCL. Este es uno de los errores
ms comunes de la primera vez que utiliza una interfaz de IC. Olvdese de los "pushpull y su interfaz no funcionar.
FISEI - UTA
78
La longitud mxima de los cables de bus IC no est en la norma. Slo dice que para la
variante de 100 kHz, la capacidad total del cableado de bus y los dispositivos
conectados no debe exceder 400pF.
FISEI
24LC01B
24LC02B
24LC04B
24LC08B
24LC016B
Capacida
d
Ciclos de
E/W
Bloques
Internos
Direccin
A0
A1
1K bits
2 K bits
4 K bits
8 K bits
16 K bits
1000000
1000000
1000000
1000000
1000000
1
1
2
4
8
1-0
1-0
x
x
x
1-0
1-0
1-0
x
x
A2
Cantidad
de
disposit.
En el bus
Voltaje de
operacin
1-0
1-0
1-0
1-0
x
8
8
4
2
1
2.5-5.5V
2.5-5.5V
2.5-5.5V
2.5-5.5V
2.5-5.5V
FISEI - UTA
79
DECLARACIN
I2CSTART genera una condicin de inicio.
I2CSTOP genera una condicin de parada
I2CRBYTE recibe un byte de un dispositivo.
FISEI
FISEI - UTA
80
En este casi vamos a escribir y leer en la memoria, por lo que el pin WP debe estar
colocado en estado bajo, una vez que se haya grabado se podr colocar este pin en
estado alto para proteger la memoria de futuras escrituras, los datos almacenados en esta
memoria permanece aun si se le corta la alimentacin al CI, el acceso a estos datos se lo
realiza las veces deseadas, recuerde que la memoria serial soporta 1000000 de ciclos de
borrado y escritura, por lo tanto se debe tener cuidado de no ejecutar un programa que
almacene una y otra vez el mismo dato.
FISEI
FISEI - UTA
81
INTERRUPCIONES
Suponga que tiene un programa de Bascom que se encuentra en un bucle haciendo algo
complicado y requiere mucho tiempo. Usted quiere ser capaz de detener esta tarea y
cambiar el programa para hacer algo ms. La solucin de hardware obvia es aadir un
botn STOP para su AVR.
FISEI
FISEI - UTA
82
El problema fundamental de este ejemplo es que podemos pasar tanto tiempo haciendo
la tarea complicada, que al pulsar el botn STOP a menudo no se detecta cuando se
pulso el Boton de stop. Obviamente necesitamos otro mecanismo para reaccionar a
pulsar el botn STOP de manera independiente del programa principal. Las
interrupciones son para cambiar el flujo del programa para responder a externos, as
como eventos de controlador interno
$regfile = "m8def.dat"
$crystal = 1000000
$hwstack = 32
$swstack = 10
$framesize = 40
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.1 , Db5 = Portb.2
Config Lcdpin = Pin , Db6 = Portb.3 , Db7 = Portb.4
Config Lcdpin = Pin , E = Portb.5 , Rs = Portb.6
Config Lcdmode = Port
Config Pind.6 = Output
Config Pind.2 = Input
Config Int0 = Falling
Dim Wtime As Byte
On Int0 Stopbutton
Cls
Wtime = 255
Enable Interrupts
Enable Int0
FISEI
Do
Set Portd.6
Waitms Wtime
Reset Portd.6
Waitms Wtime
Loop
Stopbutton:
Lcd "stop!"
Wait 1
Cls
Return
End
FISEI - UTA
83
$regfile = "m8def.dat"
$crystal = 1000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.1 ,
Db5 = Portb.2
Config Lcdpin = Pin , Db6 = Portb.3 ,
Db7 = Portb.4
Config Lcdpin = Pin , E = Portb.5 ,
Rs = Portb.6
Config Lcdmode = Port
Config Pind.6 = Output
Config Int0 = Low Level
FISEI
On Int0 Button
Enable Interrupts
Enable Int0
Do
Set Portd.6
Wait 1
Reset Portd.6
Cls
Lcd "power apagado"
Lowerline
Lcd "push boton"
Powerdown
Loop
Button:
Cls
Lcd "despierta!"
Wait 1
Return
End
FISEI - UTA
84
WATCHDOG
Bascom puede proporcionar una funcin de vigilancia. n vigilante es un truco para
restablecer su control si el programa de alguna manera se atasca o "cuelga". Un
vigilante es un contador de tiempo que tendr que ponerse a cero de vez en cuando. Si
se bloquea el programa, no ser capaz de restablecer la vigilancia y cuando los tiempos
de vigilancia a cabo, se restablecer el controlador. Esto a menudo se utiliza en
aplicaciones crticas donde tiene que estar seguro de que el controlador se reiniciar
pase lo que pase. Un programa decente debe lidiar con un tiempo de vigilancia en una
forma sensata. El tiempo de espera vigilante es una situacin muy grave, tal vez causada
por un error de diseo de hardware o de software. En cualquier caso, cuando se utilizan
perros guardianes, siempre incluyen algn tipo de mecanismo de informacin, o bien
nunca se sabr acerca de estos posibles errores.
Un organismo de control tiene que estar configurado para un tiempo de espera
especficas:
Config Watchdog 16 | 32 | 64 | 128 | 256 | 512 | 1024 | 2048
FISEI
Start Watchdog
Stop Watchdog
$regfile = "m8def.dat"
$crystal = 1000000
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.1 ,
Db5 = Portb.2
Config Lcdpin = Pin , Db6 = Portb.3 ,
Db7 = Portb.4
Config Lcdpin = Pin , E = Portb.5 ,
Rs = Portb.6
Config Lcdmode = Port
Config Pind.6 = Output
Config Watchdog = 2048
Do
Cls
Set Portd.6
Wait 2
Reset Portd.6
Lcd "WD correr"
Lowerline
Lcd "wait 2 secs..."
Start Watchdog
Idle
Loop
End
FISEI - UTA
85
FISEI
FISEI - UTA
86
FISEI
FISEI - UTA
87
FISEI
FISEI - UTA
88
FISEI
CHIPS
Octavo Electrnica 2009 2010
FISEI - UTA
AT86RF401
Se muestra el entorno de distribucin de pines, si desea informacin adicional se debe
buscar los Datasheet de los Chips en www.datasheetcatalog.com
FISEI
AT90S1200
FISEI - UTA
89
AT90S2313
FISEI
AT90S2323
FISEI - UTA
90
AT90S2333
AT90S2343
FISEI
FISEI - UTA
91
AT90S4414
FISEI
AT90S4433
FISEI - UTA
92
AT90S4434
FISEI
AT90S8515
FISEI - UTA
93
AT90S8535
FISEI
AT90PWM2-3
FISEI - UTA
94
FISEI
AT90CAN128
FISEI - UTA
95
AT90USB162
ATtiny12
FISEI
ATtiny13
FISEI - UTA
96
ATtiny15
ATtiny22
ATtiny24
FISEI
ATtiny25
FISEI - UTA
97
ATtiny26
ATtiny44
FISEI
ATtiny45
FISEI - UTA
98
ATtiny48
ATtiny84
FISEI
ATtiny85
FISEI - UTA
99
ATtiny88
FISEI
ATtiny261
FISEI - UTA
100
ATtiny861
ATtiny2313
FISEI
ATMEGA8
FISEI - UTA
101
ATMEGA16
FISEI
ATMEGA32
FISEI - UTA
102
ATMEGA32U
FISEI
ATMEGA48
FISEI - UTA
103
ATMEGA48P
FISEI
ATMEGA88
FISEI - UTA
104
FISEI
ATMEGA88P
FISEI - UTA
105
FISEI
ATMEGA64
FISEI - UTA
106
FISEI
ATMEGA103
FISEI - UTA
107
ATMEGA128
FISEI
ATMEGA1284P
FISEI - UTA
108
ATMEGA161
FISEI
ATMEGA162
FISEI - UTA
109
ATMEGA163
FISEI
ATMEGA164P
FISEI - UTA
110
ATMEGA165
FISEI
ATMEGA168
FISEI - UTA
111
ATMEGA168P
FISEI
ATMEGA169
FISEI - UTA
112
ATMEGA323
FISEI
ATMEGA324P
FISEI - UTA
113
ATMEGA325
FISEI
ATMEGA328P
FISEI - UTA
114
ATMEGA329
FISEI
ATMEGA406
FISEI - UTA
115
FISEI
ATMEGA603
FISEI - UTA
116
FISEI
ATMEGA640
FISEI - UTA
117
ATMEGA644P
FISEI
ATMEGA645
FISEI - UTA
118
FISEI
ATMEGA649
FISEI - UTA
119
FISEI
ATMEGA2560
FISEI - UTA
120
FISEI
ATMEGA2561
FISEI - UTA
121
ATMEGA8515
FISEI
ATMEGA8535
FISEI - UTA
122
FISEI
ATXMEGA128A1
FISEI - UTA
123
FISEI
FISEI - UTA