Tabla de contenido:
- Suministros
- Paso 1: instalación de Bascom y configuración
- Paso 2: echemos un vistazo más de cerca al chip
- Paso 3: el primer circuito
- Paso 4: escriba el primer programa
- Paso 5: agregue un botón para usar entradas
Video: Introducción a Bascom AVR: 5 pasos
2024 Autor: John Day | [email protected]. Última modificación: 2024-01-30 08:40
Este es el comienzo de una serie para enseñarle a programar su microcontrolador AVR con Bascom AVR.
Por qué estoy haciendo esto.
La mayoría de las muestras de programas de esta serie se pueden realizar con Arduino.
Algunos más fáciles y otros más difíciles, pero al final ambos se ejecutarán en el mismo controlador.
Pero la forma de programar es diferente en cada entorno de desarrollo. Arduino necesita una biblioteca para todo excepto las funciones básicas. Bascom también trabaja con bibliotecas, pero rara vez tengo que incluir una. Con Arduino, todas las configuraciones específicas del hardware se realizan a través de las bibliotecas. tiene muy poca influencia sobre la potencia real del microcontrolador. Empezando por los temporizadores que tiene el controlador. con arduino necesitas una biblioteca de nuevo. si tiene el temporizador hasta que funcione, puede ser que otra biblioteca choque con su configuración. En bascom tiene acceso gratuito a todo el hardware, incluido el sector de arranque que está ocupado por arduino. por ejemplo, algunas bibliotecas de bascom le preguntan qué temporizador desea utilizar. por otro lado, dado que arduino hace que sea muy fácil crear una biblioteca usted mismo, naturalmente lo convierte en una plataforma donde el nuevo hardware y los sensores generalmente tienen una biblioteca directamente. lo que a menudo se asocia con una gran cantidad de investigación en bascom y las funciones que normalmente asumiría una biblioteca deben incorporarse minuciosamente en el código del programa. pero buenas noticias, la comunidad de bascom también es muy grande, por eso hay una solución para cada idea.
Por lo tanto, depende en parte del proyecto qué se utiliza para un entorno de desarrollo y en parte de los conocimientos técnicos del programador.
pero por qué estoy haciendo esta serie. por un lado, ahorra mucho dinero. No tengo que comprar una placa arduino para cada proyecto. Por ejemplo: un Arduino uno sin nombre cuesta alrededor de 12 €, el controlador que está encendido cuesta solo 2,5 € con el circuito mínimo requerido para una función estable, cuesta alrededor de 4 €. por otro lado, tiene disponible la selección completa de chips avr compatibles. atmegas 8 a 256 y attiny 8 a 2313 y muchos tipos de xmega sobre los que no tengo experiencia. Si solo desea usar un servo y un sensor ultrasónico que pueda reconocer una mano, por ejemplo, y luego abrir la tapa de un bote de basura, puede usar el chip más pequeño posible. Entonces, hay muchas razones para aprender un segundo idioma.
Entonces empecemos
Suministros
Esta es una lista de piezas mínimas necesarias para el funcionamiento estable del chip y la programación.
Placa de pruebas para pruebas
Atmega 8-16PU (mejor compra 2 o 3 si los matas por error)
Regulador de voltaje 7805 5V
Resistencia de 10Kohm
Condensador de película 100nF
Condensador electrolítico de 10 µF
Condensador electrolítico de 100 µF
algunos cables para protoboard
PC con Windows 7/8 / 8.1 / 10
Programador ISP (usaré aquí el USBasp, puedes comprarlo en Amazon por poco dinero)
Bascom AVR (puede descargar aquí una DEMO. Todas las funciones están desbloqueadas, pero puede escribir código solo hasta un tamaño de 4Kb que sea suficiente para una gran cantidad de código).
Partes opcionales:
LED´s con resistencias
pulsador de interruptores
piezas específicas del proyecto
Paso 1: instalación de Bascom y configuración
Descargue el archivo e instale Bascom AVR. Instale todas las partes, incluida la última casilla de verificación después de la instalación.
Después de eso, reinicie su PC; de lo contrario, bascom no se iniciará.
Después del reinicio, inicie bascom.
Vaya a Opciones -> Programador y elija USBasp de la lista, guarde la configuración y cierre Bascom.
Utilice este programa para instalar usbasp. Después de eso, reinicie su PC nuevamente. Ahora conecte el USBasp con su PC e inicie el administrador de dispositivos. USBasp debería aparecer en los dispositivos libusb.
Stat Bascom nuevamente y cree un nuevo archivo. Guárdelo en su PC y presione el botón F7 en su teclado.
El compilador inicia y compila el programa vacío. Ahora puede probar la funcionalidad del programador.
Presione el botón F4 en su teclado para iniciar la ventana del programador. Ahora vaya a chip -> identificar para iniciar una interacción. Los LED de USBasp ahora deberían parpadear brevemente. Debería recibir un mensaje como el ID de chip FFFFFF no pudo leer el dispositivo. Esa es una buena señal de que el programador está funcionando pero no encontró ningún chip.
Ahora podemos empezar a construir el primer circuito.
Paso 2: echemos un vistazo más de cerca al chip
Si miras el pinout del chip, parece que el chip no tiene similitud con la placa arduino. Claro, usamos un Atmega8 y en el Arduino uno hay un Atmega328. Pero el Pinout es casi el mismo pero el chip de la placa Arduino Uno tiene más funciones. Aquí los nombres de los pines. VCC y GND son los pines para la fuente de alimentación.
AREF y AVCC son pines para el voltaje de referencia y la fuente de alimentación para el convertidor analógico a digital.
PB 0-7 PC 0-6 PD 0-7 son pines de entrada y salida de uso general con ocupación múltiple.
el pin de reinicio es lo que dice el nombre. Reiniciar el chip. La línea sobre el nombre de reinicio significa negación. Eso significa que para restablecer el chip, debe bajarlo a 0V.
Para los siguientes pines, pronto habrá instructables separados.
RXD TXD son pines de hardware para comunicación serie UART.
INT0 INT1 son pines de interrupción de hardware
XCK / T0 UART Fuente de reloj / Temporizador / Contador0 Fuente de reloj
Los pines XTAL / TOSC son para un cristal externo de hasta 16 MHz (diferentes modelos hasta 20 MHz) / pines de cristal para un RTC interno
T1 es similar a T0
Los pines AIN son para el comparador analógico
ICP1 es similar a T0 / T1
OC1A es el pin de salida de hardware para el canal A del temporizador pwm1
Pin de selección de chip SS / OC2 para SPI / como OC1B pero canal B
MOSI MISO SCK / OC2 son los pines SPI de hardware y los pines para programación / temporizador de salida PWM2
ADC0 a ADC5 son las entradas analógicas
SDA SCL son los pines para hardware I2C
El chip normal puede funcionar de 4, 5 V a 5, 5 V, el Atmega 8L puede funcionar con un voltaje mucho más bajo.
Verá que incluso este chip puede hacer más de lo que parece que un Arduino Uno no puede hacer. Pero el Arduino también puede hacerlo, solo tienes que programarlo.
Paso 3: el primer circuito
Ahora es el momento de construir tu primer circuito.
¿Cuál es normalmente el primer circuito? ¡Derecha! Hagamos parpadear un LED.
El LED está conectado con PB0. La resistencia al lado del chip tiene 10k ohmios.
La resistencia al lado del LED tiene 470 ohmios.
Ahora puede conectar el USBasp con el Atmega como se muestra en la imagen.
Pero antes de que encienda la unidad, permítanos escribir el programa.
Paso 4: escriba el primer programa
Cree un nuevo archivo en Bascom y escriba el siguiente texto.
$ regfile "m8def.dat"
$ crystal = 1000000 config portb.0 = salida do portb.0 = 1 espera 1 puerto b.0 = 0 espera 1 bucle
luego compílelo presionando F7 en su teclado.
Ahora podemos programar el chip presionando F4. Aparece la ventana del programador. Ahora es el momento de encender la placa de pruebas. Debe aplicar algo entre 6 y 12 voltios.
Ahora ve a chip -> autoprograma. Si la ventana del programador se cierra automáticamente, la programación se realizó correctamente.
El LED debe parpadear en una frecuencia de un segundo.
Ahora eche un vistazo más de cerca al programa para comprender la sintaxis.
$ regfile "m8def.dat"
$ cristal = 1000000
con $ regfile le decimos al compilador el tipo de chip usado, el nombre del chip Arduino sería "m328pdef.dat"
con $ crystal le decimos la velocidad de la CPU alrededor de 1MHz.
config portb.0 = Salida
eso significa que PB0 debería actuar como salida.
Por cierto, la abreviatura PB0 significa puerto B bit 0. El chip está dividido en varios puertos. Cada puerto recibe una letra para una identificación clara. y cada pin de puerto un bit de 0 a 7. Por ejemplo, puedo escribir un byte completo en el registro de salida del puerto, que se enviará a través de los pines de puerto individuales.
hacer
círculo
Esto es lo que significa en Arduino la declaración de bucle vacío. Entre esos dos comandos se repetirán para siempre. (con algunas excepciones pero luego más sobre eso)
Portb.0 = 1
esperar 1 puerto b.0 = 0 esperar 1
Aquí gerneamos el parpadeo del led.
Portb.0 = 1 le dice al chip que cambie la salida PB0 a 5V
el comando wait 1 deja que el chip espere un segundo. Si desea cambiar el led más rápido, debe reemplazar el comando de espera con waitms. Ahora puede ingresar un tiempo en milisegundos, por ejemplo. waitms 500. (waitus significa esperar en nanosegundos)
Portb.0 = 0 le dice al chip que cambie la salida PB0 a 0V.
Paso 5: agregue un botón para usar entradas
Ahora agregamos un botón para encender el led si el botón presiona.
Inserte el botón como se muestra en la imagen.
ahora escriba el siguiente programa.
$ regfile "m8def.dat"
$ crystal = 1000000 puerto de configuración b.0 = puerto de configuración de salida d.7 = puerto de entrada d.7 = 1 hacer si pind.7 = 0 entonces puertob.0 = 1 más puertob.0 = 0 bucle
Si carga ese programa en el chip, el led solo se enciende cuando se presiona el botón. ¿Pero por qué?
el programa comienza de forma idéntica al anterior hasta
config portd.7 = entrada. Eso significa que el pin PD7 que se conectó con el botón actúa como entrada.
Portd.7 = 1 no cambia el pin a alto, pero activa la resistencia interna de pull up del Atmega.
El if statemend parece un poco extraño si estás acostumbrado a arduino.
si usa la instrucción if, debe usar la instrucción "entonces". En este ejemplo, la instrucción if se usa para operaciones de comando único. Si desea utilizar más comandos, debe escribirlo así.
si pind.7 = 0 entonces
portb.0 = 1 algún código algún código algún código más portb.0 = 0 end if
para este uso de la instrucción if, debe usar la instrucción "end if" al final.
lo que sigue siendo importante. Quizás ya lo hayas visto. las entradas no se consultan con portx.x, sino con pinx.x. Puede recordarlo fácilmente. Las salidas tienen la "o" (puerto) en la palabra y las entradas tienen la "i" (pin).
Ahora es tu turno de jugar un poco.
Mi próximo instructable llegará pronto (declaraciones estándar como while, select case, for y variables).
Si te gusta mi instructable y quieres más dímelo en los comentarios.
Recomendado:
Casco de seguridad Covid, parte 1: ¡una introducción a los circuitos Tinkercad !: 20 pasos (con imágenes)
Casco de seguridad Covid Parte 1: una introducción a los circuitos de Tinkercad: ¡Hola, amigo! En esta serie de dos partes, aprenderemos a usar los circuitos de Tinkercad, ¡una herramienta divertida, poderosa y educativa para aprender cómo funcionan los circuitos! Una de las mejores formas de aprender es hacerlo. Entonces, primero diseñaremos nuestro propio proyecto: th
Introducción a los sensores inalámbricos de temperatura y vibración de largo alcance: 7 pasos
Introducción a los sensores inalámbricos de temperatura y vibración de largo alcance: A veces, la vibración es la causa de problemas graves en muchas aplicaciones. Desde los ejes y cojinetes de la máquina hasta el rendimiento del disco duro, la vibración causa daños en la máquina, reemplazos tempranos, bajo rendimiento e inflige un gran impacto en la precisión. Vigilancia
Introducción a los circuitos de infrarrojos: 8 pasos (con imágenes)
Introducción a los circuitos IR: IR es una pieza de tecnología compleja pero muy simple de trabajar. A diferencia de los LED o LÁSER, los infrarrojos no se pueden ver con el ojo humano. En este Instructable, demostraré el uso de infrarrojos a través de 3 circuitos diferentes. Los circuitos no serán u
¡¡¡Juegos!!! - Introducción: 5 pasos
¡¡¡Juegos!!! - Intro: ¡Hola! Te enseñaré cómo crear tres juegos diferentes en code.org. Debajo de cada tutorial de juego, publicaré una plantilla que puedes mezclar y usar mientras miras mi video. Espero que te diviertas !! Si quieren ver mis juegos en o
Introducción a ADC en microcontrolador AVR - para principiantes: 14 pasos
Introducción a ADC en microcontrolador AVR | para principiantes: en este tutorial sabrá todo lo ADC en el microcontrolador avr