AVR atmega8 iniciamos curso

Saludos:

Soy profesor de ceti tonala, (bachillerato) tengo la materia de microcontroladores, y arranque con el atmega8 porque es tecnologia RISC, y el software esta disponible, ademas desarrollamos un programador muy economico por serial DB9, nos cuesta aprox. 46 pesos el material. usamos ponyprog y el avr studio 4.

iniciamos con programas .asm muy sencillos, es el primer contacto con el micro de los alumnos, de los participantes de este foro, que dessen aprender, con sugerencias dudas, problemas de programas, secuencias, controles de automatizaciòn, creo es el mejor lugar y aprender todos.
 
que tal, algun avanze con el curso AVR? apenas me armare un programador para PIC, pero quiero saber que onda con los AVR, saludos!
 
A los AVR se los puede programa al igual que los PIC con el PicKit2

si, ayer revise los post del tema del pickit clon y vi que dabas las solución para programarlos (pedi unas muestras a atmel), en este momento solo me falta la bobina pero llegara en esta semana, y en cuanto al programador para hacerlo por primera vez me armare uno que recomiendan en el mismo post, solo me falta un zenner, apenas ando recopilando y leyendo información para programar en C,
 
WinAVR es la mejor solución para programar en C y C++ para AVR. Te recomiendo que te consigas un libro de C standar para UNIX o Windows ahí aprenderás la estructura básica de programación. Luego podés descargarte como módulo aparte la AVRlib: http://www.mil.ufl.edu/~chrisarnold/components/microcontrollerBoard/AVR/avrlib/docs/html/main.html
Ahi tenés muchas librerías interesantes para trabajar.

Proximamente voy a postear un entrenador para ATmega644 que tiene 64Kb de flash y 4 K de RAM.
 
WinAVR sobre AVRStudio es la solución que recomiendo. Gratis total y fácil de usar.

Si no teneis problemas de dinero, os recomiendo que compréis el AVRDragon última versión, que cuesta poco (menos de 100€) y de paso sirver para depurar sin problemas.
 
gracias por la recomendación, aunque ya se he programado en ANSI-C por ese lado no creo tener problemas, lo que si necesito seria el hardware (que hare) y me gustaria un depurador checare lo que proponen
 
(pedi unas muestras a atmel),,

Te vas a quedar esperando porque atmel no te regala nada de nada

Ya no hace falta descargar winavr el nuevo avr studio 5 trae incluida las herramientas y todo lo necesario para desarrollar en C, yo este año empeze con esto de avr y me gusto, he hecho varias cositas que no he subido aqui por miedo a criticas pero si he aprendido un buen y con gusto puedo ayudar

recomiendo este programador Usb facil de armar, barato y funciona ya lo he probado
http://www.fischl.de/usbasp/

para programar por puerto paralelo este (conector paralelo y 4 resistencias)

Ese programador es sumamente lento en programar a mi no me gusto en cambio si pruebas con este https://www.forosdeelectronica.com/f24/programador-avrs-solo-lazarux-41038/ puff veras la enorme diferencia en cuanto a velocidad de programacion, pero aun tiene poco soporte de micros, pero el atmega8 lo soporta y va perfecto tambien el atmega32 y el atmega128,

WinAVR sobre AVRStudio es la solución que recomiendo. Gratis total y fácil de usar.

Si no teneis problemas de dinero, os recomiendo que compréis el AVRDragon última versión, que cuesta poco (menos de 100€) y de paso sirver para depurar sin problemas.

Honestamente para empezar esto se me hace mucho dinero en mi pais serian casi 3000 pesos ujule, con solo 150 construyes a lazarux y te anda super bien, aclaro cuestion de gustos y presupuesto

Saludos:

Soy profesor de ceti tonala, (bachillerato) tengo la materia de microcontroladores, y arranque con el atmega8 porque es tecnologia RISC, y el software esta disponible, ademas desarrollamos un programador muy economico por serial DB9, nos cuesta aprox. 46 pesos el material. usamos ponyprog y el avr studio 4.

iniciamos con programas .asm muy sencillos, es el primer contacto con el micro de los alumnos, de los participantes de este foro, que dessen aprender, con sugerencias dudas, problemas de programas, secuencias, controles de automatizaciòn, creo es el mejor lugar y aprender todos.

Pero donde estan sus aportes, digo para que nos motive :LOL:
 
Última edición:
Si van a usar el Avr Studio 5 para C, les recomiendo bajarse el avr-libc para ver que pasa con ciertas instrucciones del compilador (ej. para manejar bien los puertos se debe usar punteros, sino el código en asm es cualquier cosa). Acá se los dejo.

Otra cosa, tengan en cuenta que al ser Risc el uC, en comparación por ej. con un 8051, el código que genera en asm es infernal, lo van a notar cuando trabajen con flotantes.
 

Adjuntos

  • avr-libc-user-manual-1.0.4.pdf
    1.1 MB · Visitas: 133
Pues difiero un tanto de lo que dices, primero no hace falta bajarce avr-libc ya que avr studio 5 las integra "lo digo porque yo mude un programa hecho en avr studio 4 tal cual y paso totalmente limpio y se usaban varias funciones de libc" de los puertos no se a que te refieres porque la clasica "(1<<PD0)" funciona y funciona muy bien

Si bien AVR es RISC tambien es cierto que esta diseñado especialmente para ser programado en C, por eso incluye registros de 16bits que permiten manejar direcciones y datos grandes, el 8051 es bueno pero "a mi parecer se queda corto contra los AVR"

El codigo que genere el avr studio no se porque dices que es infernal, si en realidad ocupan poco espacio digo no igual que hacerlo en asm pero es el precio que hay que pagar por usar una instruccion tan simple como A/B y no tener que escribir toda una funcion que realize eso en asm.
 
Ese programador es sumamente lento en programar a mi no me gusto en cambio si pruebas con este https://www.forosdeelectronica.com/f24/programador-avrs-solo-lazarux-41038/ puff veras la enorme diferencia en cuanto a velocidad de programacion, pero aun tiene poco soporte de micros, pero el atmega8 lo soporta y va perfecto tambien el atmega32 y el atmega128,
Gracias por la sugerencia del lazarux,
estuve revisando la pagina del proyecto y tienes razón el programador es mucho mas rápido ya que usa un micro controlador que ya tiene un modulo usb (PIC18F2550); pero la verdad no me gusto por las siguientes razones:
*usa un pic, por lo tanto se necesita un programador de pics para programar el bootloader.
*veo que solo se distribuye el .hex (me gusta revisar el código fuente)
* no creo que este soportado en linux (pero me imagino que eso se puede arreglar)
*costos en mi pais ese pic es muy caro 16.820 pesos colombianos (9 us) comparado con un atmega8a que cuesta 5.600 pesos
*personalmente no me gustan los pics
La ventaja de este programador
* Velocidad


Porque el USBASP
*reconozco es lento: esta sobre un micro sin modulo usb (lo emula) por lo tanto el sistema lo reconoce como un dispositivo usb de baja velocidad;
*el código fuente esta totalmente disponible para su modificación (licencia gpl)
*esta basado sobre un proyecto en el cual se emula un puerto usb en atmegas sin este recurso http://www.obdev.at/products/vusb/index.html, con el cual e podido crear interfaces usb en atmega8a (mas adelante con un poco tiempo las publico acá)
*bajo costo, construir el programador completo me salio por 12000 pesos colombianos.
* funciona en Linux, MacOS X y Windows
Desventajas
*baja velocidad comparado con otros dispositivos usb;
*igualmente se necesita un programador avr para cargar el bootloader (el que puse en la anterior entrada conector db25 y 4 resistencias).


Escribo esto luego de haber analizado el proyecto Lazarus, el cual me pareció interesante.
No lo pruebo debido a que nunca me a gustado solo cargar el .hex, me gusta primero analizar el código.

Muchas Gracias por la atención.
 
Última edición:
Pues difiero un tanto de lo que dices, primero no hace falta bajarce avr-libc ya que avr studio 5 las integra

Obviamente, pero justamente el pdf que subí tira un par de tips a la hora de programar, por eso lo recomendé ya que en alguna cosas puede generar código raro, yo también uso el AVR studio 5.

"lo digo porque yo mude un programa hecho en avr studio 4 tal cual y paso totalmente limpio y se usaban varias funciones de libc" de los puertos no se a que te refieres porque la clasica "(1<<PD0)" funciona y funciona muy bien

Ok, pero yo mencione la asignación de los puertos.

Hacer esto está mal, a pesar que funcione:

Código:
void set_bits_func_wrong (volatile uint8_t port, uint8_t mask)
{
port |= mask;
}

Debería hacerse así:

Código:
void set_bits_func_correct (volatile uint8_t *port, uint8_t mask)
{
*port |= mask;
}

Assembler de ambas funciones:






Si bien AVR es RISC tambien es cierto que esta diseñado especialmente para ser programado en C, por eso incluye registros de 16bits que permiten manejar direcciones y datos grandes, el 8051 es bueno pero "a mi parecer se queda corto contra los AVR"

En ningún momento estoy diciendo que uno es mejor que otro, obviamente que el AVR es mejor que el 8051 de hecho es la evolución. Lo que yo quería recalcar, es en el hecho de que al ser un uC RISC tiene sus ventajas (mas predecible a la hora de hacer un pipeline), pero también al ser limitado en instrucciones asm, para ciertas cosas tiene que pedalear mucho, como por ejemplo trabajar con Nº flotantes, simplemente hacete un programita que tenga que usar un Nº de este tipo, y fijate cuanto código genera, en un Atmega8 puede morfarse el 40% de la memoria flash nada mas que por eso.

El codigo que genere el avr studio no se porque dices que es infernal, si en realidad ocupan poco espacio digo no igual que hacerlo en asm pero es el precio que hay que pagar por usar una instruccion tan simple como A/B y no tener que escribir toda una funcion que realize eso en asm.

Nunca dije que el código que genera el AVR Studio sea más del que debería, solo quise decir que al ser este uC RISC (como la mayoría de los actuales), no hay que perder de vista el código asm puede ser importante.

Acá en el foro hay un programador por puerto serie, que solo usa un par de diodos zeners + transistor y funciona muy bien con el ponyprog, no se necesita ningún PIC ni nada raro.
 
Hacer esto está mal, a pesar que funcione:

Siempre tube problemas con esa frace, que alguien me explique :unsure::unsure::unsure:

Y no te enojes son opiniones y puntos de vista diferente, en lo personal no me quejo de avr, bueno solamente al trabajar con los fuses del oscilador, de todo lo demas me gusta.

De los puertos no fuiste claro al decirlo en tu primero mensaje, yo supuse que te referias a la simple instruccions antes mensionada.

Acá en el foro hay un programador por puerto serie, que solo usa un par de diodos zeners + transistor y funciona muy bien con el ponyprog, no se necesita ningún PIC ni nada raro.

El problema es que el puerto serie se esta extinguiendo por eso tube que construir lazarux, por cierto el hecho de que el codigo fuente no este publicado no deberia detenerles en armar el programador, ya que suficiente hace la persona que lo desarrolla con el hecho de compartir su creacion "mi punto de vista" A curiosamente en mi pais es mas barato el pic18f2550 que un atmega8 ¿porque? no sabria decirte
 
Última edición:
Siempre tube problemas con esa frace, que alguien me explique :unsure::unsure::unsure:

Simple, no todo lo que funciona necesariamente está bien. Por ej. uno puede llegar a solucionar un problema de insectos en una casa simplemente volando la casa.... como verás la solución es perfecta, no queda nada.... ni la propia casa :LOL:.

A lo que iba, si te fijas en el código asm que publiqué, en la solución no recomendada antes de llamar a la función con "call", aparece inesperadamente la instrucción "in" en el puerto B :eek: en vez de guardar los argumentos Datos + Puerto como si lo hace la otra instrucción.

Eso puede funcionarte o NO y a la vez darte más de un dolor de cabezas, ya que entra a la función con cualquier verdura de argumentos.

Y no te enojes son opiniones y puntos de vista diferente, en lo personal no me quejo de avr, bueno solamente al trabajar con los fuses del oscilador, de todo lo demas me gusta.

Para nada solo estamos dando puntos de vista diferentes, yo también creo que los AVR son muy buenos.
 
Atrás
Arriba