Circuitos de bricolaje en attiny2313. Conectamos el botón al microcontrolador ATtiny2313, un programa sencillo. Compilación y firmware del programa en MK.

Cómo montar un circuito simple, cómo conectar un programador a un microcontrolador ATtiny2313, cómo escribir el programa mas simple en lenguaje C y cómo flashear el microcontrolador ATtiny2313 con nuestro programa, todo esto lo encontrarás en este artículo.

En primer lugar necesitamos un programador, hay muchos tipos de programadores, ¿qué programador deberíamos elegir?
Hay programadores comunes en los que es necesario insertar un microcontrolador, flashearlo, quitar el microcontrolador y luego insertarlo en nuestra placa para ver el resultado, y esta secuencia deberá realizarse cientos de veces al principio, esta opción, en mi opinión, no es conveniente.
Nuestro microcontrolador ATtiny2313 Admite la función ISP (programación en el sistema) a través del puerto SPI, este caso de uso de programación en circuito ISP en mi opinión el más cómodo y rápido, porque... no es necesario retirar el microcontrolador de nuestra placa después de cada actualización de firmware; puedes programar el microcontrolador cientos de veces e inmediatamente, sin desconectar el programador de la computadora y la placa, ver el resultado después de flashear el microcontrolador, el proceso de depuración software La instalación de un dispositivo de radioaficionado se simplifica notablemente y se reduce el tiempo dedicado a ello.
Usted mismo puede crear un programador ISP en circuito, hay muchos en Internet circuitos simples cómo se hace esto a través de LPT, puerto COM, por ejemplo un programador ponyprog Puedes encontrar diagramas en Internet sobre cómo hacerlo.

Este artículo analizará cómo trabajar con un programador ISP en circuito para microcontroladores. AVR (PX-400) Funciona a través del puerto COM.
Si no tiene un puerto COM en su computadora, también necesitará un adaptador con Puerto USB al puerto COM, también hay muchas variedades de este tipo de adaptadores, recomiendo el adaptador con el que trabajé: Placa convertidora de puerto USB a serie UCON-232S
Foto del programador PX-400, adaptador USB UCON-232S , Ficha técnica ATTiny2313

Veamos todos los detalles de este esquema con más detalle:
(Por si acaso, compré todas las piezas, programador, adaptador (de USB a puerto COM) en chipdip.ru)

1 - Zócalo placa PBD-20 2.54mm 2x10 recto- Hice esto por conveniencia, para que fuera más fácil verificar las señales de los pines del microcontrolador; este punto no se pudo hacer.
2 - SCS-20 Panel DIP 20 pines- soldamos el panel a la placa para que sea posible sustituir el microcontrolador en la placa si es necesario,
ATtiny2313-20PU, DIP20, MCU, 5V, 1K-Flash, 12MHz- Introducimos el microcontrolador en el panel DIP.
3 - Cristal de cuarzo 4.000 MHz (truncado) HC-49S- Cristal de cuarzo 4MHz
4 - Condensador cerámico K10-17B imp. 22pF NPO, 5%, 0805- Dos condensadores cerámicos de 22pF.
5 - 78M05 (+5V, 0.5A) TO220- Un estabilizador de voltaje de 5V suministra al microcontrolador una potencia estabilizada de no más de +5V, en este caso obtuve 4,4V, que es suficiente.
6 - Enchufe NP-116 1.3x3.4x9.5mm MP-331 (7-0026c)- El enchufe estaba soldado al antiguo. cargador de teléfono móvil CC 5,7 V/800 mA
7 - Toma de corriente DS-213 a bordo- ¿Dónde está la fuente de alimentación para el enchufe NP-116, para facilitar la conexión eléctrica?
8 - IDC-10MS (BH-10), enchufe recto- Enchufe para conectar un programador ISP en circuito
9 - Resistencia constante 0,25W 150 Ohmios- Tres resistencias de 150 ohmios en los pines MISO, SCK, MOSI
10 - Resistencia constante 0,25W 47 Ohmios- Una resistencia de 47 ohmios por pin RESET
11 - Botón táctil h=5mm, TC-0103 (TS-A2PS-130)- Botón restablecer RESETEAR, después de presionar el botón, el programa en el microcontrolador comienza desde el principio, el botón no pudo haberse creado.
12 - LED verde d=3mm, 2.5V, 2mA - Realiza la función de un indicador, este elemento no se pudo realizar.
13 - Resistencia constante 0,25W 110 Ohmios- Una resistencia para el LED para que haya 2V en el LED, este paso se puede omitir
14 - Dos cables conectados al LED, para verificar las señales de los pines del microcontrolador, este paso no se pudo realizar
15 - Protoboard impreso Dip-RM 100x100mm

Los puntos 3 y 4 funcionan como una sola unidad, como un generador de reloj externo, estos puntos se pueden omitir si no exige mucho la precisión y estabilidad del oscilador RC interno, el oscilador RC interno tiene un error de aproximadamente el 10 %. y la precisión puede verse afectada por el cambio de temperatura.

Entonces ya lo has descargado e instalado Estudio Atmel :
vamos a lanzar Estudio Atmel y escribir un programa simple en lenguaje C haciendo parpadear un LED:
Haga clic en: Nuevo proyecto...\AVR GCC\C\C Proyecto ejecutable
Especifique la carpeta donde guardar el proyecto y el nombre del proyecto, por ejemplo Prueba1, y haga clic en Aceptar.
De la lista, seleccione nuestro microcontrolador ATtiny2313 y haga clic en Aceptar.
Borramos todo lo que aparece en la ventana y pegamos nuestro código de programa a continuación:

#define F_CPU 4000000L //Especifica la frecuencia de nuestro cuarzo externo 4 MHz
#incluir
#incluir
int principal (vacío)
{
//Configura todos los pines PORTB como salidas
DDRB=0xFF;//Registro de la dirección de transferencia de información (1 salida, 0 entrada)
mientras(1)
{
//Registro de datos PORTB (utilizado para generar información)
PORTB=0b00000001;//Suministramos 1 al puerto 12 de MK PB0 - enciende el LED
PORTB=0b00000000;//Aplicar 0 al puerto 12 de MK PB0 - apagar el LED
_delay_ms(1000);//Retraso 1 seg.
}
}

Ir al menú Compilación\Administrador de configuración\Configuración de solución activa\
Elegir Liberar, prensa Cerca
Hicimos esto para poder tener una carpeta en el proyecto. Liberar, del que hablaré a continuación.

Hacer clic F7¡Listo, nuestra aplicación ha compilado!
Para actualizar el firmware del microcontrolador ATtiny2313, solo necesitamos un archivo con la extensión MALEFICIO
Se encuentra en nuestra carpeta de proyecto: ...
Por favor tenga en cuenta el archivo Prueba1.hexadecimal solo tómalo de la carpeta Liberar !
No te confundas, porque carpeta Depurar también hay un archivo Prueba1.hexadecimal, pero este archivo todavía contiene información de depuración y debido a esto, no podrás flashear con este archivo. suele pasar talla grande y no cabe en la memoria del MK.

Encontramos el archivo .hex, ahora necesitamos un programa para actualizar el microcontrolador ATtiny2313, existen muchos programas de este tipo, pero usaremos el programa: Avr-Osp II
Descargar:

¡Conectamos el programador a nuestro circuito y nos aseguramos de suministrar energía al circuito!

Lanzar el programa Avr-Osp II, especifique la ruta al archivo en la sección FLASH... \Prueba1\Prueba1\Release\Prueba1.hex, marque las casillas en el programa y presione el botón Programa eso es todo, microcontrolador ¡ATtiny2313 está flasheado!

¿Cuál es la ventaja de los programadores ISP en circuito? Ahora, sin desconectar los cables de nuestro circuito, puede realizar cambios en el programa y, como se describe anteriormente, flashear el microcontrolador y ver inmediatamente el resultado.

Por favor deje preguntas y comentarios en nuestro foro.

Arquitectura AVR RISC:

RISC (Computadora con conjunto de instrucciones reducido). Esta arquitectura tiene conjunto grande instrucciones, la mayoría de las cuales se ejecutan en 1 ciclo de máquina. De ello se deduce que, en comparación con los microcontroladores anteriores basados ​​en la arquitectura CISC (por ejemplo, MCS51), los microcontroladores RISC son 12 veces más rápidos.

O si tomamos como base un cierto nivel de desempeño, entonces realizar esta condición Los microcontroladores basados ​​en RISC (Attiny2313) requieren 12 veces menos frecuencia de reloj del generador, lo que conduce a una reducción significativa en el consumo de energía. En este sentido, resulta posible diseñar varios dispositivos en Attiny2313, usando energía de la batería.

Dispositivo de Almacenamiento Operacional (RAM) y memoria no volátil de datos y programas:

  • 2 KB de memoria de programa Flash autoprogramable que puede proporcionar 10.000 repeticiones de escritura/borrado.
  • 128 bytes de memoria de datos grabable EEPROM que puede proporcionar 100.000 repeticiones de escritura/borrado.
  • Memoria SRAM de 128 Bytes (RAM de sólo lectura).
  • Es posible utilizar la función para proteger el código del programa y los datos EEPROM.

Propiedades periféricas:

  1. Microcontrolador Attiny2313 equipado con un contador temporizador de ocho bits con un preescalador instalado por separado con un coeficiente máximo de 256.
  2. También hay un contador temporizador de dieciséis bits con un preescalador, un circuito de captura y comparación separados. El cronómetro está sincronizado; el contador puede variar de fuente externa señal y desde el interior.
  3. Dos canales. Hay un modo de funcionamiento de modulación PWM rápida y PWM con corrección de fase.
  4. Comparador analógico interno.
  5. Temporizador de vigilancia (programable) con oscilador interno.
  6. Interfaz universal serie (USI).

Indicadores técnicos especiales de Attiny2313:


  • Inactivo- Modo inactivo. En este caso, sólo el procesador central deja de funcionar. El estado inactivo no afecta el funcionamiento del SPI, el comparador analógico, el convertidor A/D, el contador temporizador, el mecanismo de vigilancia o el sistema de interrupción. De hecho, sólo detiene la sincronización del kernel. procesador central y memoria flash. El microcontrolador Attiny2313 vuelve al funcionamiento normal desde el modo inactivo mediante una interrupción externa o interna.
  • Corriente cortada— El modo más económico, en el que el microcontrolador Attiny2313 está realmente desconectado del consumo de energía. En este estado, el generador de reloj se detiene y todos los periféricos se apagan. Sólo el módulo de procesamiento de interrupciones de una fuente externa permanece activo. Cuando se detecta una interrupción, el microcontrolador Attiny2313 sale del apagado y vuelve al funcionamiento normal.
  • Apoyar– el microcontrolador cambia a este modo de espera de consumo de energía mediante el comando SLEE. Esto es similar a apagarse, la única diferencia es que el reloj continúa funcionando.

Puertos de entrada-salida del microcontrolador Attiny2313:

El microcontrolador tiene 18 pines de E/S que se pueden programar según las necesidades de diseño. dispositivo específico. Los buffers de salida de estos puertos pueden soportar una carga relativamente alta.

  • Puerto A (PA2 - PA0) – 3 bits. Puerto de E/S bidireccional con resistencias pull-up programables.
  • Puerto B (PB7 - PB0) – 8 bits. Puerto de E/S bidireccional con resistencias pull-up programables.
  • Puerto D (PD6 - PD0) – 7 bits. Puerto de E/S bidireccional con resistencias pull-up programables.

Rango de tensión de alimentación:

El microcontrolador funciona correctamente con una tensión de alimentación de 1,8 a 5,5 voltios. El consumo actual depende del modo de funcionamiento del controlador:

Modo activo:

  • 20 µA a una frecuencia de reloj de 32 kHz y una tensión de alimentación de 1,8 voltios.
  • 300 µA a una frecuencia de reloj de 1 MHz y una tensión de alimentación de 1,8 voltios.

Modo de ahorro de energía:

  • 0,5 µA a una tensión de alimentación de 1,8 voltios.

(3,6 Mb, descargado: 5.934)

El dispositivo de este artículo funciona con tarjetas SD. El tema es viejo y bastante manido, pero vale la pena volver a escribir sobre el uso de tarjetas SD.
En general, las tarjetas SD (SDC, SD Card) tienen muchas ventajas y son muy sencillas y cómodas de usar en pequeños proyectos integrados. Varios factores contribuyen a esto:
- una interfaz muy sencilla para interactuar con la tarjeta (implementada vía SPI);
- alta velocidad de funcionamiento (el microcontrolador es capaz de transferir datos desde una tarjeta SD a una velocidad cercana a 10 Mbit/s);
- bajo consumo de energía (literalmente un par de miliamperios, no más);
- tallas pequeñas;
- disponibilidad y bajo costo.
Las tarjetas SD prácticamente no tienen inconvenientes (excepto, quizás, su procedimiento de inicialización :)).

1. Introducción.

Llamé al dispositivo descrito en este artículo Dispositivo parlante con tarjeta SD. Un poco pretencioso ;), pero el nombre deja claro que se trata de un dispositivo parlante. Está destinado a dar voz a sus proyectos. En resumen, funciona de la siguiente manera: los archivos de sonido numerados se graban en la tarjeta SD, que el dispositivo reproduce cuando usted lo ordena. El ámbito de aplicación es bastante amplio: sistemas de alerta, juguetes, robots, casa inteligente etc. Las dimensiones del dispositivo son bastante modestas (podría ser más pequeño, pero elegí deliberadamente el microcontrolador ATtiny2313, que es más barato y más fácil de conseguir). Intenté poner el énfasis principal en la simplicidad y la máxima funcionalidad.
De cara al futuro, veamos qué debería suceder al final:

¿Es útil un dispositivo así? ¡Entonces recolectemos!

2 Tarjeta de memoria.

El dispositivo utiliza una tarjeta de memoria SD. Ya he escrito sobre los motivos de la elección, solo agregaré que las tarjetas SD se están convirtiendo casi en una tarjeta de memoria estándar para dispositivos móviles. Incluso los fabricantes que promocionaban/están promocionando fanáticamente su tipo de tarjetas de memoria están empezando poco a poco a utilizar tarjetas SD. La razón de tal popularidad probablemente fue el bajo precio de estas tarjetas. Para los dispositivos de aficionados, la tarjeta SD es, de hecho, la única tarjeta adecuada para su uso, y la razón es la sencilla interfaz para trabajar con ella.

La tarjeta SD ha evolucionado mucho y tiene varias opciones para su implementación (MMC - como opción de tarjeta SD, SD ver1, SD ver2, SDHC, SDXC). El procedimiento para comunicarse con la tarjeta es simple y universal para todo tipo de tarjetas, pero ponerlo en funcionamiento (inicializar la tarjeta) es un proceso bastante ambiguo y confuso, con "sacudidas" rituales de la tarjeta, enviando comandos "ficticios" vacíos. y otras cosas incomprensibles (en resumen, es necesario bailar con panderetas :)). La propia especificación del protocolo SDC describe con bastante detalle el proceso de inicialización, lo cual es comprensible, hay muchos fabricantes de tarjetas, cada uno con su propio hardware, con sus propias características... ¿A qué me refiero? - Intenté que el procedimiento de inicialización fuera lo más universal posible, pero prepárate para el hecho de que algunas tarjetas no funcionarán. Por lo tanto, si algo no va bien con su dispositivo, pruebe con otra tarjeta de memoria; este puede ser el motivo.

EN este dispositivo Se admiten tarjetas SD de hasta 2 GB de tamaño. Todo lo superior (SDHC y SDXC) no es compatible.
Para el dispositivo no importa el factor de forma de la tarjeta (SD, MiniSD o MicroSD), pero debes conectarla correctamente, de acuerdo con la distribución de pines de la tarjeta.

3 Sistema de archivos.

El dispositivo utiliza tarjetas con el sistema de archivos FAT16. Este sistema es ideal para dispositivos como el nuestro, ya que es simple y fácil de implementar (FAT12 y FAT32, en principio, tampoco son difíciles de implementar, pero esto no es práctico debido a la falta de ventajas en comparación con FAT16).

No existen requisitos especiales para formatear la tarjeta; se puede formatear en cualquier dispositivo disponible. Estándar formateando ventanas bastante adecuado para estos fines.

Para que el dispositivo funcione correctamente, los archivos de sonido ubicados en la tarjeta SD deben cumplir ciertos requisitos:
a) El formato del archivo debe ser WAV sin comprimir.
Los parámetros del archivo son los siguientes:
- Bitrate - frecuencia de muestreo (Frequency) - 32000 Hz;
- Número de canales (Canales) - 1 (mono);
- Tamaño de muestra - 8 bits.
Otra posible reducción es WAV PCM 8U.

b) El expediente deberá denominarse de forma especial. Para que el dispositivo sepa qué archivo es el primero, segundo, tercero, etc. El primer carácter del nombre del archivo debe ser una letra mayúscula del alfabeto latino (el resto del nombre, al igual que la extensión del archivo, se ignora).
Por ejemplo, los siguientes nombres de archivos serían correctos:
A_Lai_dog.wav - primera pista
B-Esta es la segunda pista.wav - la segunda pista
¡Con Advertencia! Error!.wav - tercera pista

c) Para utilizar funciones adicionales del dispositivo, los archivos se pueden ubicar en dos carpetas denominadas “1” y “2”. El dispositivo tiene un interruptor para seleccionar la carpeta activa, es decir, el mismo comando para iniciar la reproducción puede reproducir pistas de la carpeta “1” o “2”, dependiendo del nivel en la entrada de conmutación (una especie de selección del esquema de sonido - ¡algo muy útil!) . Si una de las carpetas (o ambas) no existe, los archivos se reproducen desde el directorio raíz.

Puede almacenar cualquier otro archivo junto con las pistas de audio, siempre que no creen conflictos con sus nombres (es mejor colocarlos en un directorio separado, entonces no tendrá que prestar atención a cómo se nombran allí).

d) Debido a la pequeña cantidad de SRAM en el ATtiny2313, es imposible crear un búfer para la lectura previa de datos, por lo que los datos del archivo se envían directamente para su reproducción. En consecuencia, no hay forma (no hay tiempo suficiente) de buscar fragmentos de archivos utilizando la tabla FAT. En otras palabras, los archivos escritos en la tarjeta no deben estar fragmentados.

De hecho, esto no es un gran problema, ya que cualquier Sistema operativo Siempre intenta escribir el archivo como una pieza completa y siempre que tenga espacio en la tarjeta, cualquier acción con los archivos (eliminar, copiar, cambiar el nombre) no afectará su integridad. Si tiene una tarjeta muy pequeña o ha llenado al máximo una tarjeta grande, para estar seguro de la integridad de los archivos, simplemente cópielos a disco duro computadora, formatee la tarjeta y recupere los archivos.

4 Esquema. Placa de circuito impreso.

El diagrama del dispositivo es lo más simple posible. De hecho, aparte del microcontrolador y la tarjeta SD, no contiene nada. Para mí, hice un sello para componentes SMD, ya que planeo usar este dispositivo en un lugar con dimensiones limitadas. Si las dimensiones no son críticas para usted, puede ensamblar el circuito en una placa en la versión DIP. En el caso de una protoboard, montar el dispositivo te llevará, como máximo, 15 minutos. La tensión de alimentación permitida para una tarjeta SD es de 2,7 a 3,6 voltios. El microcontrolador también funciona normalmente en este intervalo, por lo que no es necesario utilizar ningún componente compatible. Verifiqué el funcionamiento de todo el dispositivo y con una fuente de alimentación de 5 voltios; todo funcionó bien, pero no recomiendo hacer esto en base permanente, ya que diferentes tarjetas pueden reaccionar de manera diferente a la sobretensión. Utilicé un adaptador como portatarjetas microSD, soldándolo directamente a sus contactos. Si necesita dimensiones más pequeñas, es mejor utilizar un tarjetero microSD real.

Para actualizar el firmware del microcontrolador se utiliza el mismo conector que para la tarjeta SD, por lo que tendrás que pensar en cómo conectarle el programador (hice un adaptador especialmente).

Una vez soldada la placa, puede flashear el microcontrolador.

Una pequeña galería del dispositivo terminado:




Un pequeño matiz sobre el esquema.
Al instalar una tarjeta SD en un portatarjetas (conectar la tarjeta a una fuente de alimentación), se crea un aumento de corriente y, en consecuencia, una caída de voltaje en el circuito (parece que en este momento se están cargando capacidades significativas en la tarjeta). La reducción es tan significativa que el microcontrolador se reinicia. Lo uso para iniciar el procedimiento de inicialización de la tarjeta (la instalación de la tarjeta reinicia el microcontrolador y lo primero que hace el firmware es buscar e inicializar la tarjeta). Si no reinicia el microcontrolador al instalar una tarjeta (una fuente de alimentación potente o condensadores de suavizado grandes), entonces debe cuidar el botón de reinicio en el circuito para restablecer manualmente el microcontrolador (esto es si planea "calentar" cambiar tarjetas).

5 Funcionamiento del dispositivo.

Como escribí anteriormente, trabajar con el dispositivo es muy simple: copie las pistas con el nombre correcto en la tarjeta SD, inserte la tarjeta en el portatarjetas, el dispositivo encontrará la tarjeta automáticamente, encenderá el LED verde, eso es todo, el dispositivo está listo para reproducir las pistas. Ahora sólo te falta seleccionar y empezar a reproducir la pista de la forma que más te convenga.

5.1 Botones del dispositivo y sus acciones.

Intenté hacer que el dispositivo fuera lo más funcional posible, por lo que se utilizan muchas patas del microcontrolador para los interruptores de modo de funcionamiento (esto hace que el dispositivo parezca un erizo :)). Si no necesita ninguna función, simplemente deje la pierna “colgando” en el “aire”.
Cambiar acción:
- “Monster”: le permite ralentizar (2 veces) la reproducción de la pista, creando el efecto de una voz baja. El interruptor funciona "sobre la marcha": la velocidad cambia al cambiar;
- "Helio": acelera la reproducción de la pista (en 1/3), creando el efecto de una voz aguda. El interruptor funciona sobre la marcha;
- “Repetir” si este interruptor está en cortocircuito a tierra, la pista seleccionada se reproducirá sin cesar (hasta que se abra el interruptor). Esto puede resultar útil, por ejemplo, si necesita crear un determinado fondo sonoro: el sonido de la lluvia, un fuego ardiendo, el murmullo de un arroyo...;
- Botón “Seleccionar / Reproducir” que inicia la pista para su reproducción (descripción a continuación);
- "Seleccionar pista": configuración del número de la pista que se está reproduciendo (descripción a continuación);
- “Dir1 / Dir2”: seleccione un esquema de sonido (descripción a continuación).

5.2 Iniciar la reproducción.

Hay tres formas de empezar a reproducir una pista específica:
- al enviar una letra mayúscula del alfabeto latino a través de UART, comienza inmediatamente la reproducción del archivo que contiene esta letra al principio del nombre;
- si se utiliza “Seleccionar pista”, se selecciona el número de archivo (código binario 0001=”A”, 0010=”B”, etc. 1 - la pierna está cerca del suelo, 0 - "colgando" en el "aire"), luego el botón “Seleccionar / Reproducir” iniciará el archivo correspondiente para su reproducción;
- si no se selecciona nada usando “Seleccionar pista” (0000 - las piernas “cuelgan” en el “aire”)), luego presionando el botón “Seleccionar / Reproducir” un número determinado de veces, lanzamos la pista correspondiente (1 vez = “A”, 2 veces =”B”, etc.).

5.3 Esquemas de sonido.

Una característica muy útil es la función de seleccionar uno de dos esquemas de sonido. Esto significa que el interruptor “Dir1 / Dir2” selecciona la carpeta en la tarjeta desde la cual se reproducirá la pista.

Hay muchas aplicaciones: mensajes en ruso e inglés (juguetes educativos), voces de niños y adultos, ruidos de agua que fluye y fuego ardiendo, gato/perro, policía bueno y malo :), sonidos calmantes/vigorizantes y muchas otras opciones similares.

Por ejemplo, necesita que su dispositivo pueda comunicarse con voz masculina y femenina. Se implementa así:
- crear dos conjuntos de mensajes, respectivamente, en versión femenina y masculina;
- la numeración de archivos para ambas opciones es la misma. No olvide que el dispositivo "ve" sólo la primera letra del nombre del archivo, por lo que puede hacer que los nombres sean más comprensibles para usted mismo, por ejemplo, "S_Waiting for command_male.wav" y "S_Waiting for command_female.wav" son bastante correcto;
- copiar el conjunto de mensajes de hombres en la carpeta “1” y los mensajes de mujeres en la carpeta “2”.
Ahora, dependiendo del estado del interruptor “Dir1 / Dir2”, el mismo comando reproducirá pistas de la carpeta “masculina” o “femenina”.

5.4 Indicación de funcionamiento del dispositivo.

Como Teeny2313 tiene muy pocas patas y casi todas se usan para interruptores, tuve que sacrificar una indicación normal y, a cambio, adjuntar algo NO normal. Para indicar diferentes modos de funcionamiento, solo se utiliza una pata del microcontrolador, a la que se conectan dos LED: rojo y verde (o el que prefiera). Los diferentes modos de funcionamiento del dispositivo se indican mediante un código de color específico:
- el LED rojo parpadea: no hay tarjeta SD o su tipo no es compatible con el dispositivo;
- el LED rojo está encendido - la tarjeta SD es compatible y se ha inicializado correctamente, pero la tarjeta no está formateada en FAT16;
- el LED verde está encendido - la tarjeta SD se ha inicializado correctamente, se ha encontrado la necesaria sistema de archivos y el dispositivo está listo para reproducir la pista, esperando un comando;
- el LED verde parpadea: el dispositivo está reproduciendo una pista;
- se enciende el verde, el rojo se enciende brevemente, el verde se enciende nuevamente - pista no encontrada;
- se enciende el verde, se apaga brevemente y vuelve a ponerse verde - se pulsa la tecla de selección de pista.

5.5 Información de depuración.

Para que sea más fácil encontrar áreas problemáticas (si el dispositivo no quiere funcionar), dupliqué cada etapa de inicialización en el programa con mensajes a través de UART. Después de cada paso exitoso, el carácter correspondiente se envía a la UART:
- “S” - (Inicio) los periféricos del microcontrolador se inicializan normalmente;
- “C” - (Card Init) La tarjeta SD se inicializa normalmente y es compatible;
- “F” - (Inicio FAT) sistema de grasa soportado;
- “1” - (No 1 Dir) no existe la carpeta “1” la lectura se realizará desde el directorio raíz;
- “2” - (No 2 Dir) no existe la carpeta “2” la lectura se realizará desde el directorio raíz;
- “R” - (Listo) el dispositivo está completamente listo - esperando el comando para iniciar la pista;
- Además, cada vez que se inicia una pista, la letra mayúscula del nombre de la pista se transmite al UART.

6 pistas para doblar tus dispositivos.

6.1 Conversión de pistas

Si no encontró nada adecuado en la biblioteca anterior, puede obtener las pistas necesarias en Internet (hay muchos sitios especiales para músicos y edición de video, donde ya se han recopilado grandes bibliotecas de sonidos), en instalaciones de juegos ( a menudo los sonidos del juego se dividen en pistas y se guardan en una carpeta separada). También puedes cortar efectos de sonido de películas y composiciones musicales. Las pistas encontradas deben convertirse a un formato compatible con el dispositivo. Permítanme recordarles que el formato del archivo debe ser WAV sin comprimir. 32000 Hz, 1 canal, 8 bits (WAV PCM 8U)
Cualquier editor de música es adecuado para convertir a este formato o, si solo necesita convertir una pista sin editarla,

Muchos electrodomésticos y dispositivos de automatización industrial de años de producción relativamente recientes tienen instalados contadores mecánicos. Se trata de productos sobre una cinta transportadora, vueltas de alambre en máquinas bobinadoras, etc. En caso de avería, encontrar un contador similar no es fácil y es imposible repararlo por falta de repuestos. El autor propone sustituir el contador mecánico por uno electrónico. Un contador electrónico, desarrollado para reemplazar uno mecánico, resulta demasiado complejo si está construido sobre microcircuitos con un grado de integración bajo y medio (por ejemplo, las series K176, K561). especialmente si se necesita una cuenta inversa. Y para guardar el resultado cuando se apaga la alimentación, es necesario proporcionar batería de respaldo nutrición.

Pero es posible construir un contador con un solo chip: un microcontrolador programable universal, que incluye una variedad de periféricos y capaz de resolver una gama muy amplia de problemas. Muchos microcontroladores tienen un área de memoria especial: EEPROM. Los datos escritos en él (incluso durante la ejecución del programa), por ejemplo, el resultado del conteo actual, se guardan incluso después de apagar la alimentación.

El contador propuesto utiliza el microcontrolador Attiny2313 de la familia AVR de Almel. El dispositivo implementa conteo inverso, mostrando el resultado con cancelación de insignificantes.

colmena en un indicador LED de cuatro dígitos, almacenando el resultado en EEPROM cuando se apaga la alimentación. Se utiliza un comparador analógico integrado en el microcontrolador para detectar oportunamente una disminución en el voltaje de suministro. El contador recuerda el resultado del conteo cuando se apaga la alimentación, lo restablece cuando se enciende y, de manera similar a un contador mecánico, está equipado con un botón de reinicio.

El circuito contador se muestra en la figura. Se utilizan seis líneas del puerto B (РВ2-РВ7) y cinco líneas del puerto D (PDO, PD1, PD4-PD6) para organizar la indicación dinámica del resultado del conteo en el indicador LED HL1. Las cargas del colector de los fototransistores VT1 y VT2 son resistencias integradas en el microcontrolador y habilitadas por un software que conecta los pines correspondientes del microcontrolador a su circuito de alimentación.

Se produce un aumento en uno del resultado del conteo N en el momento en que se interrumpe la conexión óptica entre el diodo emisor VD1 y el fototransistor VT1, lo que crea una diferencia de nivel creciente en la entrada INT0 del microcontrolador. En este caso, el nivel en la entrada INT1 debe ser bajo, es decir, el fototransistor VT2 debe estar iluminado por el diodo emisor VD2. En el momento de un diferencial creciente en la entrada INT1 y un nivel bajo en la entrada INT0, el resultado disminuirá en uno. Otras combinaciones de niveles y sus diferencias en las entradas INT0 e INT1 no modifican el resultado del conteo.

Una vez que se alcanza el valor máximo de 9999, el conteo continúa desde cero. Restar uno del valor cero da el resultado 9999. Si no es necesaria la cuenta regresiva, puede excluir el diodo emisor VD2 y el fototransistor VT2 del contador y conectar la entrada INT1 del microcontrolador al cable común. El recuento no hará más que seguir aumentando.

Como ya se mencionó, el detector de disminución de la tensión de alimentación es un comparador analógico integrado en el microcontrolador. Compara la tensión no estabilizada a la salida del rectificador (puente de diodos VD3) con la tensión estabilizada a la salida del estabilizador integrado DA1. El programa comprueba cíclicamente el estado del comparador. Después de desconectar el medidor de la red, el voltaje en el condensador C1 del filtro rectificador cae y el voltaje estabilizado permanece sin cambios durante algún tiempo. Las resistencias R2-R4 se seleccionan de la siguiente manera. que el estado del comparador en esta situación se invierte. Habiendo detectado esto, el programa logra escribir el resultado del conteo actual en la EEPROM del microcontrolador incluso antes de que deje de funcionar debido al corte de energía. La próxima vez que lo encienda, el programa leerá el número escrito en EERROM y lo mostrará en el indicador. El conteo continuará a partir de este valor.

Debido al número limitado de pines del microcontrolador, para conectar el botón SB1, que pone a cero el contador, se utilizó el pin 13, que sirve como entrada analógica inversora del comparador (AIM) y al mismo tiempo como entrada “digital” del PB1. El divisor de voltaje (resistencias R4, R5) aquí establece el nivel percibido por el microcontrolador como lógico alto, cuando presione el botón SB1, pasará a ser bajo. Esto no afectará el estado del comparador, ya que el voltaje en la entrada AIN0 es aún mayor que el de AIN1.

Cuando se presiona el botón SB1, el programa muestra un signo menos en todos los dígitos del indicador y, después de soltarlo, comienza a contar desde cero. Si apaga el medidor mientras se presiona el botón, el resultado actual no se escribirá en la EEPROM y el valor almacenado allí seguirá siendo el mismo.

El programa está diseñado de tal manera que se puede adaptar fácilmente a un medidor con otros indicadores (por ejemplo, con cátodos comunes), con diferente cableado. placa de circuito impreso etc. Será necesaria una ligera corrección del programa al utilizar resonador de cuarzo a una frecuencia que difiere en más de 1 MHz de la especificada.

Cuando el voltaje de la fuente sea de 15 V, mida el voltaje en los pines 12 y 13 del panel del microcontrolador en relación con el cable común (pin 10). El primero debe estar en el rango de 4...4,5 V y el segundo debe ser mayor que 3,5 V, pero menor que el primero. A continuación, el voltaje de la fuente se reduce gradualmente. Cuando cae a 9 ... 10 V, la diferencia en los valores de voltaje en los pines 12 y 13 debería volverse cero y luego cambiar de signo.

Ahora puede instalar el microcontrolador programado en el panel, conectar el transformador y aplicarle tensión de red. Después de 1,5...2 s es necesario presionar el botón SB1. El indicador del contador mostrará el número 0. Si no se muestra nada en el indicador, verifique nuevamente los valores de voltaje en las entradas AIN0.AIN1 del microcontrolador. El primero debe ser mayor que el segundo.

Cuando el contador se haya puesto en marcha con éxito, sólo queda comprobar la exactitud del recuento oscureciendo alternativamente los fototransistores con una placa opaca a los rayos IR. Para mayor contraste Es recomendable tapar los intermitentes con un filtro de vidrio orgánico rojo.

Hoy intentamos aprovechar más microcontrolador sencillo ATtiny2313 y conectarle uno simbólico pantalla LCD, que contiene dos líneas de 16 caracteres.

Conectaremos la pantalla. de forma estándar Modo de 4 bits.

Primero, comencemos, por supuesto, con el microcontrolador, ya que ya estamos muy familiarizados con la pantalla en lecciones anteriores.

Abramos la hoja de datos del controlador. ATtiny2313 y veamos su pinout

Vemos eso este controlador existe en dos tipos de casos, pero como llegó a mis manos en un caso DIP, consideraremos esta versión particular del caso, y en principio no difieren mucho, salvo en apariencia, ya que el número de patas es el lo mismo - en 20.

Dado que hay 20 patas en comparación con las 28 patas del controlador ATMega8, en el que hemos estado trabajando todo el tiempo y continuaremos trabajando, entonces, en consecuencia, también habrá menos posibilidades.

En principio aquí está todo lo que tenía el ATmega8, lo único es que hay menos garras de puerto. Pero como la tarea que tenemos ante nosotros es intentar conectarlo a través del bus SPI con otro controlador, esto no nos deprime mucho.

Hay algunas otras diferencias, pero son menores y las conoceremos según sea necesario.

Montemos un circuito como este (haga clic en la imagen para ampliarla)

La pantalla está conectada a los pines del puerto D. PD1 y PD2 están a las entradas de control, y el resto están conectados a los pines del módulo de pantalla D4-D7.

Creemos un proyecto con el nombre TINY2313_LCD, transfiramos todo a él excepto el módulo principal del proyecto para conectar la pantalla a Atmega8.

Por supuesto, será necesario rehacer algunas cosas. Para hacer esto, debe estudiar cuidadosamente qué pierna está conectada a qué. El bus E de la pantalla está conectado a PD2 y el bus RS está conectado a PD1, así que hagamos cambios en el archivo. lcd.h

#definire1PORTADO|=0b0000 01 00 // establece la línea E en 1

#definire0PORTADO&=0b1111 10 11 // establece la línea E en 0

#definirrs1PORTADO|=0b00000 01 0 // establece la línea RS en 1 (datos)

#definirrs0PORTADO&=0b11111 10 1 // establece la línea RS en 0 (comando)

Como podemos ver en la selección. en negrita, no hemos tenido cambios tan drásticos.

Ahora entradas de información. Aquí usamos las patas PD3-PD6, es decir, están desplazadas 1 punto en comparación con la conexión a Atmega8, por lo que también corregiremos algo en el archivo. lcd.c en función enviar medio byte

PORTADO&=0b 1 0000 111; // borra información en las entradas DB4-DB7, deja el resto en paz

Pero eso no es todo. Anteriormente cambiamos los datos transmitidos en 4, pero ahora, debido a los cambios anteriores, solo tendremos que cambiarlos en 3. Por lo tanto, en la misma función también corregiremos la primera línea.

C<<=3 ;

Esos son todos los cambios. De acuerdo, ¡no son tan buenos! Esto se logra por el hecho de que siempre intentamos escribir código universal y utilizar sustituciones de macros. Si no hubiéramos dedicado tiempo a esto de una vez, habríamos tenido que corregir el código en casi todas las funciones de nuestra biblioteca.

En el módulo principal, no tocamos la inicialización del puerto D; dejamos que todo el módulo entre en el estado de salida, como en la lección 12.

Intentemos armar el proyecto y primero veamos el resultado en Proteus, ya que también hice un proyecto para él, que también estará en el archivo adjunto con el proyecto para Atmel Studio.

¡Todo funciona muy bien para nosotros! Así es como puedes rehacer rápidamente un proyecto para un controlador para otro.

Proteus es muy bueno, pero siempre es mejor mirar los detalles reales. Todo el circuito se ensambló en una placa de pruebas, ya que no hice ni ensamblé una placa de depuración para este controlador. Conectaremos el programador mediante un conector estándar como este

Aquí está el diagrama completo.

Aquí todo es estándar. Resistencia pull-up para RESET, etc.

Ahora, antes de flashear el controlador en avrdude, debemos seleccionar el controlador y leer su memoria flash.

Luego vaya a la pestaña FUSIBLES y configure los fusibles correctamente. Como no tenemos resonador de cuarzo, instalamos los fusibles de esta manera.




Arriba