Tabla de contenido:

Introducción a Bascom AVR: 5 pasos
Introducción a Bascom AVR: 5 pasos

Video: Introducción a Bascom AVR: 5 pasos

Video: Introducción a Bascom AVR: 5 pasos
Video: 01 - Curso Bascom Avr - INTRODUCCION y ARQUITECTURA 2024, Noviembre
Anonim
Introducción a Bascom AVR
Introducción a Bascom AVR

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

Instalación de Bascom y configuración
Instalación de Bascom y configuración
Instalación de Bascom y configuración
Instalación de Bascom y configuración
Instalación de Bascom y configuración
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

Echemos un vistazo más de cerca al chip
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

El primer circuito
El primer circuito
El primer circuito
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

Escribe el primer programa
Escribe 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

Agregar un botón para usar entradas
Agregar 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: