Escribe un programa AVR

1

Así que vi un post que hablaba sobre la viabilidad comercial de un Arduino (http://electronics.stackexchange.com/questions/11333/commercial-use-of-arduino-is-it-suitable). A partir de esto, se dice que una gran idea sería escribir su propio programa AVR, creo.

¿Qué significa:

1) ¿Escribir un programa AVR? ¿Qué es un programa AVR? 2) ¿Programar su propio microcontrolador?

¿Es posible hacer tu propio microcontrolador y cómo harías esto? ¿Seguirías usando algo como un ATMEGA? ¿Qué cambiaría esto y cómo "subirías" un AVR a esto?

Editar (después del Comentario # 1): Mis preguntas es si todavía usaría el Arduino o sería mejor para mí comprar ... ¿algo diferente? microcontrolador y programa que? Para refinar mi otra pregunta, ¿cómo programaría ... un microcontrolador? ¿Qué interfaz se usaría para cargar código?

    

2 respuestas

2

Es una pregunta amplia. No creo que la pregunta anterior tuviera por objeto implicar que un Arduino no es una plataforma de desarrollo "real" o "profesional". Tiene su nicho. Cada microcontrolador tiene su nicho: debe elegir uno que lo ayude a hacer lo que está tratando de hacer. ¿Eso suena vago? Sí. Porque todo depende de lo que estés tratando de hacer.

Entonces hagamos una copia de seguridad: ¿qué es el Arduino en comparación con todo lo demás? Lo dividiré en hardware y software.

En cuanto al hardware, Arduino es una placa de desarrollo . Hay muchas placas de desarrollo por ahí, toneladas de ellas. Cada uno de ellos está construido alrededor de uno o varios microcontroladores. En cierta medida, están pensados para ser genéricos en su función: debe ser capaz de usarlos para desarrollar para casi cualquier aplicación. Pero también pueden tener un enfoque (puede que veas tableros de desarrollo con controladores HDMI y Ethernet) que obviamente están destinados a ayudar a las personas a desarrollar aplicaciones para redes o aplicaciones visuales. El Arduino es una placa de desarrollo sólida, pero tiene muy pocas características claras. El enfoque detrás de Arduino es un arenero abierto, por eso hay tantos escudos disponibles.

Por lo tanto, las placas de desarrollo se construyen alrededor de microcontroladores. El Arduino está construido alrededor del AVR ATMega328. Este es un microcontrolador específico hecho por Atmel. Es uno de los microcontroladores de 8 bits de Atmel. Está dirigido a aplicaciones integradas de propósito general que no requieren una gran cantidad de timbres o silbidos o mucha E / S (está bastante limitado en el número de pines que tiene). Para poner esto en perspectiva, Atmel también ofrece ofertas basadas en ARM de 32 bits: este es un tipo de microcontrolador que puede encontrar en un enrutador que ejecuta Linux. Por supuesto, hay muchos fabricantes de microcontroladores diferentes, todos ellos ofrecen microcontroladores diferentes enfocados en ciertas aplicaciones: automotriz, redes, DSP, etc.

Ahora está la pregunta del software: ¿qué significa escribir un programa AVR? Bueno, todo lo que escribes para un Arduino es un programa AVR, es difícil decirlo. Arduino viene con un marco que básicamente le oculta gran parte de la complejidad de la programación del microcontrolador. Por lo general, escribir cualquier código de microcontrolador (incluidos los programas AVR) implica jugar mucho con bits en los registros, realizar un seguimiento de la sincronización, etc. Es de muy bajo nivel y hay mucho de qué realizar un seguimiento.

En un sentido más amplio, los microcontroladores suelen estar programados en una variante de C. Digo una variante porque cada microcontrolador necesita un compilador de C especial con sus propias reglas. Por lo tanto, cada chip diferente tiene su propia variante de C. No hay diferencias terribles entre cada uno de ellos, pero puedes saltarte las diferencias si no tienes cuidado.

¿Cómo se programan? Hay muchas maneras, pero en general hoy en día los chips tienden a programarse por sí mismos. No es una broma: la mayoría de los programadores simplemente implementan un tipo especial de comunicación en serie que les permite ser programados por uno de varios dispositivos. Esto se llama programación en el sistema. Usted programa microcontroladores con una variedad de dispositivos: pueden ser dongles USB de $ 5, dispositivos de puerto paralelo o adaptadores JTAG de $ 1200. Normalmente necesita un programador específico para una línea específica de chips. Es decir, puede comprar un JTAG que programará la mayoría de los chips ARM, y puede encontrar programadores que programarán la mayoría de los chips AVR, si no todos.

Entonces, programar su propio microcontrolador básicamente significa que usted 1) Seleccione un microcontrolador que quiera usar, 2) encuentre una buena placa de desarrollo para él, 3) encuentre algún tipo de programador, ya sea un programador del sistema, o JTAG o algo así de lo contrario, 4) descubra qué compilador necesita, qué editor de código debe usar, etc. (Arduino, por supuesto, proporciona todo esto, por lo que es fácil). Luego, lees la hoja de datos del chip y averiguas por dónde empezar.

    
respondido por el AngryEE
1

Escribir un programa Avr significa escribir código y cargarlo en los microcontroladores AVR (* La familia AVR tiene muchas series de microcontroladores como ATMEGA103, ATMEGA128, ATMEGA1280, …, etc.) y también los controladores populares como TMEGA8. ATMEGA16 etc ....) utilizando los softwares como AVR STUDIO, CODE VISION AVR etc..etc ...

El programa que posee su microcontrolador significa que es una frase que le indica que "tome su microcontrolador preferido, elija su software de escritura de código y luego escriba su código, cárguelo en el microcontrolador y finalmente vea la aplicación"

por ejemplo, estoy usando el CONTROLADOR ATMEGA 8 PARA EL INTERMITENTE de los lEDs

Utilicé el software AVR Studio 6. para la codificación, y PRO ISP para cargar el código en el microcontrolador

el código es el siguiente:

#include<avr/io.h>
#include<util/delay.h>

int main()
{
DDRB=0b11111111;
DDRD=0b00000000;


    while(1)
    {
        if (PIND=0b00000001)
        {
            PORTB=0b11111111;
            _delay_ms(100);
            PORTB=0b00000000;
            _delay_ms(100);
        }
    }
    return 0;
}
    
respondido por el Boopathy Suntharan

Lea otras preguntas en las etiquetas