He estado trabajando en un proyecto Arduino. Después de que todo funcione con Arduino, me gustaría pasar a una solución que NO use Arduino. Es decir, me gustaría usar un microcontrolador sin involucrar a la placa Arduino. Esto permitirá una sola placa, sin solución de escudo.
Sé que hay métodos para hacer mi propio Arduino en una placa de pruebas, pero eso no es realmente lo que estoy tratando de hacer.
No estoy realmente seguro de cómo hacer esto.
A menos que haya una mejor opción, me inclino por usar el ATmega328, que es usado por el Arduino. Entiendo que las herramientas de desarrollo están disponibles de forma gratuita o al menos no muy caras.
Para el propósito de esta pregunta, suponga que puedo obtener + 5V en mi circuito.
Mi primera pregunta es cómo programar el MCU. Creo que hay dos opciones:
- Compre un programador, programe el MCU y luego coloque el chip en mi circuito.
- Diseñar mi circuito para incluir soporte para programación en circuito.
Asumo que si voy con la opción # 1, es tan simple como insertar un chip programado en mi circuito; No necesito nada mas. Por supuesto, cambiar el software sería inconveniente.
Pero para la opción # 2, no estoy seguro de lo que necesito. Por lo poco que he leído, creo que necesito un cable de programación y un conector en mi placa (¿qué tipo?). Entonces supongo que (correctamente) cableo el conector a ciertos pines en el ATmega.
De cualquier manera, necesitaré el estudio Atmel.
En segundo lugar, aparte de la fuente de alimentación, ¿hay algo en el Arduino que realmente necesito? Supongo que tal vez un interruptor de reinicio?
fuente
Respuestas:
Bienvenido al maravilloso mundo de Atmel. Permítame ofrecerle algunas respuestas a sus preguntas basadas en mi afición y experiencia profesional.
No se moleste con nada, PERO la programación en circuito. A menos que sea un codificador perfecto, eliminar un chip cada vez que quiera programarlo es una pesadilla. Recomiendo el AVRISPmkII como una herramienta de programación de nivel de entrada. La desventaja es que no se admite la depuración de hardware. Una alternativa es el dragón, pero no tengo experiencia con eso. Puedo decir que JTAGICEmk3 es una buena herramienta de depuración capaz.
Atmel studio es bueno para programar. En realidad, es mi entorno de desarrollo integrado favorito. Puede usar herramientas de CLI como AVRDUDE y AVR-GCC, pero el IDE se encarga de eso por usted.
EN RESUMEN:
Compre un AVRISP solo para programar (más fácil, plug & play) o un DRAGON (no puedo ofrecer consejos).
En su placa, saque los pines ICSP a un encabezado de 6 pines de doble fila de 0.100 "; las conexiones se describen en esta hoja de datos .
Los interruptores de reinicio no son necesarios.
fuente
No tiene que "graduarse" de una vez. Así es como me convertí:
Para comenzar, seguí usando un Arduino pero convertí las llamadas a la biblioteca de Arduino en registros de lectura y escritura, una línea a la vez, para ver si mis programas aún funcionaban. De esta manera me acostumbré a usar registros y vi que no eran radicalmente discontinuos con la forma de hacer las cosas de Arduino. Las funciones de Arduino como digitalWrite () simplemente manipulan los registros: puede leerlos y escribirlos directamente en sus bocetos.
Mi siguiente paso fue poner un ATTiny 85 en una placa de pruebas y programarlo con Arduino como ISP ( http://highlowtech.org/?p=1695 ). Si compra una fuente de alimentación de placa y utiliza el oscilador interno de ATTiny, esto requiere un cableado ridículamente pequeño. Usé el IDE de Arduino para compilar, pero seguí usando registros tanto como pude.
Luego, instalé la cadena de herramientas de línea de comandos gratuita Crosspack y compilé un programa parpadeante. Después de más pruebas y errores, logré programar ATTiny solo con avrdude, permaneciendo completamente fuera del ecosistema Arudino.
Una vez que haya alcanzado el parpadeo solo con las herramientas de línea de comandos, estará libre de Arduino. Explore los diversos periféricos y sus registros y pronto será totalmente natural.
Después de todo esto, a menudo me encuentro usando Arduino porque es más rápido. He descubierto que estudiar detenidamente las descripciones de los registros es un poco malo; no tiene sentido hacerlo si no es necesario. Sin embargo, es bueno saber cómo hacerlo.
fuente
Estoy de acuerdo con el comentario de HL-DSK anterior. Gastaría el dinero extra y conseguiría un programador con capacidades de depuración. Yo uso JTAGICE3, alrededor de $ 110 en digi-key.
Lea sobre la programación de ISP aquí . Le mostrará cómo mostrar las conexiones SPI. Las conexiones SPI en su chip estarán en la hoja de datos de ATmega. Busque en la página 2 los pines MISO / MOSI / SCK / RESET. El programador necesita poder controlar la línea de reinicio. Recuerde usar una resistencia pull-up en la línea de reinicio para que su chip se ejecute después de desconectar el programador.
Obtenga un encabezado 2x3 aquí . O haga el suyo usando encabezados separatistas.
fuente
La diferencia entre un Arduino y un ATmega328 desnudo es solo dos cosas. El cargador de arranque Arduino y las bibliotecas Arduino. Puede codificar un Arduino con C o C ++ sin utilizar ninguna de las bibliotecas. También puede usar el ensamblaje en su lugar. El gestor de arranque le permite cargar un nuevo código a través de serie sin pasar por la programación (en serie) en circuito (ligeramente) más complicada (básicamente SPI).
Puede usar bibliotecas de programación estándar y avr-gcc con casi cualquier ide. Al contrario de lo que otros podrían decir, codificar un Arduino es básicamente como codificar un microcontrolador simple, con algunas comodidades adicionales a expensas de cierto rendimiento.
fuente
Compro ATmega328P pre-bootloaded chips y programa de ellas en circuito con un cable de FTDI y avrdude, idéntica a cómo iba a programar el Arduino. Me gusta el Eclipse IDE, pero puede usar cualquier entorno que prefiera: Atmel Studio, Arduino IDE, emacs o descalzo en la línea de comandos.
Esta placa está en construcción en el punto donde está lo suficientemente completa como para probar con un programa Hello, utilizando el cable para programación, alimentación y terminal. Todavía necesitará su fuente de alimentación ( en mi caso, un regulador de voltaje de corriente de reposo ultra bajo LM2936 y un conector de batería) y cualquier otro componente integrado y conexiones externas que el proyecto necesitará:
Como tiene un Arduino, puede ahorrar un poco de dinero y usar chips no programados, utilizando el Arduino para instalar el gestor de arranque. ¡Las bonitas etiquetas azules de pin-out ayudan a mantener baja mi tasa de tonterías! Utilizo un cristal de 16MHz, pero si puede ejecutar con el oscilador interno, su recuento de piezas se reduce en 3 (los condensadores xtal y 2).
fuente
Para pasar de Arduino donde se proporciona el hardware y el software es una superposición de lenguaje C, me gustaría hacer algunas sugerencias. Veo que la gente ha publicado algunas respuestas útiles, pero he estado donde estás y haría las cosas un poco diferentes.
Tengo algunas ideas esquemáticas que aprendí por mi cuenta para que tengas una interfaz limpia y fluida con tu micro. Déjame saber si necesitas ayuda.
fuente
Consejos honestos
Arduino es para principiantes, hay dos maneras de ir desde aquí
Forma 1: Comprender cómo funciona un micro controlador / procesador (enfoque preferible)
Con eso quiero decir aprender arquitecturas y código de ensamblaje (o metal desnudo) para el micro p / c. Si necesita un punto de partida para esto, sugeriría Atmel 8051, que es un microcontrolador de 8 bits con el conjunto de instrucciones de arquitectura y ensamblaje más simple. Cualquier otro procesador moderno de 32 bits o 64 bits tiene una forma de arquitectura derivada de él. Este microcontrolador todavía se está utilizando como parte de mis cursos de posgrado porque es un buen punto de partida y hay mucha literatura disponible.
Ah, y los kits para crear su placa ISP se venden (kits completamente ensamblados con processo, componentes de soldadura a kits de placa y puede construir la placa de desarrollo usted mismo, requiere solo un par de cables y enchufes IC-RS-232)
Como es de baja tecnología, todos los componentes serán baratos.
Camino 2: saltar a un enfoque de hardware y software (menos preferible)
Este es el enfoque para los holgazanes que se han sumergido en un poco de ensamblaje y "aprovechado" O las personas que quieren cambiar a más software que hardware. Sugeriría mudarse a otro tablero de aficionados como Raspberry Pi o BeagleBoneBlack con procesadores ARM y comenzar a hacer proyectos en su creatividad.
fuente
Puede usar la placa Arduino, sin usar las bibliotecas de sandbox y el entorno, puede programar todo usted mismo directamente. Si desea utilizar su gestor de arranque a través de serial / uart para programar, eso funciona bien. Pero la mayoría / todas las partes avr también se pueden programar de otra manera, con la parte retenida en el reinicio, lo que significa que no es bloqueable. es bastante fácil explotar spi de un arduino u otro microcontrolador o con un brote de sabor fuera de lo común. sparkfun tiene tableros arduino y no arduino (el 32u por ejemplo) que el encabezado spi es obvio. y tableros de arranque ftdi que puede bitbang fácilmente usando la biblioteca de ftdi o la biblioteca de ftdi que viene con linux.
La documentación de cada parte muestra las opciones de arranque y las opciones de programación flash. Sí, no es difícil comprar algunas piezas también y hacer su propio tablero de arranque. No haría eso hasta que haya utilizado una ruptura existente o una tabla de evaluación simple y luego la clone si es necesario. Idealmente, comience con una parte con un oscilador rc interno, básicamente pines de alimentación, tierra y programación ...
fuente