Autor Tema: Curso Básico AVR AT90S1200 Ensamblador  (Leído 58927 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Curso Básico AVR AT90S1200 Ensamblador
« Respuesta #15 en: 26 de Noviembre de 2004, 14:11:00 »
Hey!!!

No sé quién lo haya hecho, pero ya me subieron a moderador. ¡¡Gracias!!

Espero poder seguir ayudando con lo poco que sé de los AVRs Rebotado Sonrisa Gigante Vacilando Sonrisa Sonrojado

Desconectado hjauregui

  • PIC10
  • *
  • Mensajes: 3
RE: Curso Básico AVR AT90S1200 Ensamblador
« Respuesta #16 en: 02 de Diciembre de 2004, 11:27:00 »
Amigo, de antemano gracias por la información, pero la verdad es que soy un neófito del tema, y la verdad es que llama mucho la atención los micros de AVR, primordialmente por el costo, en comparación con los PIC.

No tienes de casualidad, material explicito de cómo programarlos, tal como como declaro los puertos de entrada y salida, programas básicos explicados paso a paso.

Gracias por tu atención, si me mandas algo de información  a este correo harry_Jauregui@hotmail.com  te lo agradezco en el alma

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Curso Básico AVR AT90S1200 Ensamblador
« Respuesta #17 en: 02 de Diciembre de 2004, 12:48:00 »
Pues material explícito sobre la programación básica no tengo. Tal vez si lees un poquito más el tercer mensaje de este tema puedas entenderle a las entradas/salidas. Lo que he aprendido de AVR lo tengo en mis apuntes de la escuela y pues transcribirlos es medio pesado.

Si lo lees y todavía no le entiendes, puedes preguntar aquí, con gusto te ayudamos. Si necesitas un programa básico y sencillo, lo podemos resolver paso a paso para que le entiendas. Muchas risas

Desconectado pikman

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 679
RE: Curso Básico AVR AT90S1200 Ensamblador
« Respuesta #18 en: 06 de Diciembre de 2004, 20:18:00 »
Hola, migsantiago, una consulta, instale el AVR STUDIO 4.0 y no hay forma de simular el tyn12l, en la version 3.5 si es posible, que version estas usando, muy interesante los AVR, es mas como comente en un post me parecen una buena alternativa para quienes usamos PIC.

He realizado algunos trabajos en ASM, que en algunos aspectos es mas sencillo que el de los PIC, y muy familiar para los que estan acostumbrados a los INTEL, pero he bajado la version de ICCAVR de imagecraft de compilador de C y creo que es una alternativa al ASM de programacion avanzada de estos hermosos microcontroladores, mi idea es justamente manejar un display LCD.

un saludo
PIKMAN
saludos
PikMan

Desconectado pikman

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 679
RE: Curso Básico AVR AT90S1200 Ensamblador
« Respuesta #19 en: 07 de Diciembre de 2004, 11:25:00 »
OK, el tiny12L es uno de los menores de la familia, pero por lo que veo el 1200 es muy parecido, claro en el AVR 4.0 no esta el tiny12L, asi que voy a bajar la nueva version, aunque el 3.5 no esta mal. con respecto al C yo he probado el codevision pero me parece mas practico el de imagecraft el ICCAVR, tambien hay uno libre pero de ICCAVR inclusive tiene muchas librerias y drivers ya hechos, como somos muchos los que empezamos con estos micros seria bueno adoptar un compilador solamente como es el CCS en los PIC, se me ocurre no como para poder habalr el mismo idioma, es buena la idea de crear un maletin para ATMEL, espero poder armar una placa para experimantar,

un saludo

PIKMAN.
saludos
PikMan

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Curso Básico AVR AT90S1200 Ensamblador
« Respuesta #20 en: 15 de Diciembre de 2004, 12:14:00 »
Bueno, ya que están medio familiarizados con las interrupciones les dejo un programa que genera una salida binaria cada segundo usando interrupciones:


;Programa que incrementa conteo binario
;en PtoB cada segundo usando interrupción
;por timer
;migsantiago@tutopia.com

;CK/64 tiempo mínimo=16us
;4ms/16us=250 conteos
;256-250=6 -> TCNT0
;4ms x 250conteos= 1s

.include "1200def.inc"
            rjmp main
            nop
            rjmp timer
main:         clr r17         ;pone a cero salida a ptoB
            clr r25         ;pone a cero contador 4ms
            ser r16
            out ddrb,r16   ;ptoB de salida
            out timsk,r16   ;habilita int. por timer
            ldi r16,6
            out tcnt0,r16   ;manda el 6 a timer
            sei            ;habilita I en SREG
            ldi r16,$03
            out tccr0,r16   ;011 en escala: CK/64
ciclo:         nop            ;pasa el tiempo
            rjmp ciclo

timer:         inc r25         ;inc. conteo de 4ms
            cpi r25,$fa      ;250d = fah
            breq increm      ;se va a inc. ptoB
pon_conteo:      ldi r16,$06
            out tcnt0,r16   ;comienza tiempo 4ms otra vez
            reti         ;regresa de interrupción
                        ;habilitando I en SREG

increm:         inc r17         ;inc conteo en ptoB
            out portb,r17   ;saca conteo
            clr r25         ;borra conteo de 4ms
            rjmp pon_conteo





Les explico los registros del TIMER:

TIMSK - Habilita la interrupción por sobreflujo del contador TCNT0
TIFR - Es la bandera que dice si hubo sobreflujo del TCNT0
TCCR0 - Aquí uno da las escalas de división de TCNT0
TCNT0 - Aquí se lleva la cuenta

En TCCR0 Se tiene CS02, CS01 y CS00 los cuales indican la escala y el funcionamiento del Timer, los datos que llevan son CS02, CS01 y CS00 respectivamente:

*Cristal de 4MHz
000 - stop, no cuenta
001 - CK, la escala es igual al cristal que uno le ponga (0.25us por conteo y 4MHz)
010 - CK/8 (2us)
011 - CK/64 (16us)
100 - CK/256 (64us)
101 - CK/1024 (256us)
110 - Flanco derecho en patita T0 PD4
111 - Flanco izquierdo en T0

R25 va a contar 250 veces el desbordamiento del timer. El timer se va a desbordar cada 4ms ya que se usó CK/64. R16 lleva un 6 para que el conteo se haga 250 veces.

16us x 250 (r16) = 4ms
4ms x 250 (r25) = 1000ms

Ahora para los fans de los PICs, les dejo un programa idéntico pero hecho con el 16f84a. Compárenlos. :]



;Int. por timer 1 segundo en PIC16f84a
;saca conteo binario cada segundo por portb
LIST P=16f84
include "p16f84a.inc"

;Registros
contador4ms   equ   0x0c

org 0x00
   goto inicio

org 0x04
   goto timer      ;Vector de interrupción

org 0x05
inicio         bsf STATUS,RP0      ;banco 1
            clrf TRISB         ;todo B salida
            movlw 0x03         ;00000011
            movwf OPTION_REG   ;1:16 escala
            bcf STATUS,RP0      ;banco 0
            clrf PORTB
            clrf contador4ms   ;borra conteo de 4ms
            movlw 0x06         ;256-250=6
            movwf TMR0
            movlw 0xa0         ;10100000
            movwf INTCON      ;habilita GIE y T0IE

ciclo         nop
            goto ciclo

timer         btfss INTCON,T0IF   ;por si hubo otra interrupción
            retfie
            incf contador4ms,F
            movf contador4ms,W   ;pasa contador4ms a w
            sublw 0xfa         ;compara con 250
            btfss STATUS,Z      ;brinca si Z=1
            goto pon_conteo
            clrf contador4ms
            incf PORTB,F
pon_conteo      movlw 0x06         ;regresa conteo
            movwf TMR0
            bcf INTCON,T0IF      ;borra bandera int. tmr
            bsf INTCON,T0IE      ;rehabilita int. por timer
            retfie

end


Desconectado FirmSoft

  • PIC16
  • ***
  • Mensajes: 118
RE: Curso Básico AVR AT90S1200 Ensamblador
« Respuesta #21 en: 03 de Marzo de 2005, 15:41:00 »
Quisiera hacerte una pregunta, estoy estudiando a full todo esto y ya comprendo cada una de las instrucciones... la duda es.. los registros de proposito general, creo que son 32.. son como el registro W (Work) de los pics ??? ... hay instrucciones que no trabajansobre esos registros? o lei mal?. Gracias y perdon por una pregunta tan tonta. Suerte!

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Curso Básico AVR AT90S1200 Ensamblador
« Respuesta #22 en: 05 de Marzo de 2005, 18:30:00 »
Salu2

Antes de explicarte, por favor baja este archivo de Atmel:

http://www.atmel.com/dyn/resources/prod_documents/DOC0856.PDF

Este archivo trae las explicaciones de cada código de operación de la familia de 8bit de AVRs. Trae instrucciones que los AT90S1200 no incluyen, pero a esas no les hagas caso, sólo estudia las que trabaja el 1200.

Ya que tengas el archivo checa la página 16 por ejemplo. Ahí viene explicada bien la instrucción ADC (Suma con acarreo) por ejemplo. Abajo dice que los registros que maneja esta instrucción son 0 < d < 31, 0 < r < 31 (menor o igual)

Ahora checa la página 20. Ahí se explica la operación ANDI (AND inmediata). Los registros que ella trabaja son 16 < d < 31, 0 < K < 255 (K es el número a poner en la AND)

¿Porqué? No te puedo dar una respuesta exacta, pero tiene que ver con el modo de direccionamiento del AVR. Cada instrucción tiene límites de trabajo con los registros, siempre hay que checarlas. Avergonzado

Te recomiendo que leas las instrucciones en las que estés interesado, porque a mi a veces me confundía que el maestro siempre trabajaba del registro 16 en adelante.

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
RE: Curso Básico AVR AT90S1200 Ensamblador
« Respuesta #23 en: 16 de Junio de 2005, 14:44:00 »
Hola,

Para comodidad de ustedes, subí este curso básico a mi página de internet.

Ahí viene todo el curso y le agregué unas imágenes para explicar la conexión de algunos de los programas que aquí les puse.

http://www.migsantiago.com/index.php?option=com_content&view=article&id=3&Itemid=4
« Última modificación: 21 de Marzo de 2009, 15:12:37 por migsantiago »

Desconectado diego_castano01

  • PIC10
  • *
  • Mensajes: 21
Re: Curso Básico AVR AT90S1200 Ensamblador
« Respuesta #24 en: 22 de Agosto de 2006, 00:03:46 »
HOLA, estoy programando un AT89S52 y estoy realizando una rutina en la que muevo un motorreudctor por variaccion de pulso (velocidad PWM) y verifico su posicion mediante un poteciometro unido a un ADC, ahora me pasa este problema, cuando el motor está trabajando, yo analizo una serie de teclas de vale la redundancia, un teclado de 4x4, ahora cheque a A y C pero como este esta unido a un encoder 74C922 de fairchild este megenera una Interrupccion cada vez que pulso una tecla, ahora retomo, cuando el motor esta trabajando y yo pulso una tecla diferente a A o C el software me tomo esto como una interrupccion y de hecho deberia hacerlo, pero el detalle esta en que el motor pierde su configuracion de trabajo,

Ya que hablaron de aspectos sobre teclados de 4X4, alguien me podria ayudar en como abrca rle problema gracias, AAAhhhhh sin afectar a la interrupccion 

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Curso Básico AVR AT90S1200 Ensamblador
« Respuesta #25 en: 22 de Agosto de 2006, 10:49:48 »
Si subes tu programa talvez se te pueda ayudar. Es mejor que abras un nuevo tema para tu pregunta, en este se habla del at90s1200 =).

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1685
    • winpic800
Re: Curso Básico AVR AT90S1200 Ensamblador
« Respuesta #26 en: 28 de Septiembre de 2007, 06:46:14 »
Estoy implementando un desensamblador para WinPic800 y tengo algunas preguntillas para los maestros avr .

He bajado el AVR Studio  + 4.13.557  Service Pack 1

veo que para iniciar la eeprom es asi :

.ESEG
.db "Hello"

y al compilar crea un archivo .eep
Osea no va todo en un mismo archivo hex como en los pics .

No hay manera que  ponga el programa y eeprom todo junto ?
ö es que hay que abrir los dos HEX para programar cada vez ?

y los bits de config ? , no veo por donde se cofiguran y que salgan en el HEX .

un saludo

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Curso Básico AVR AT90S1200 Ensamblador
« Respuesta #27 en: 28 de Septiembre de 2007, 10:39:27 »
Hola Sispic

No tengo la respuesta a tu pregunta. Sería mejor que abras un tema nuevo para que más gente la vea.  :mrgreen:

Desconectado Belgitaes

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 215
Re: Curso Básico AVR AT90S1200 Ensamblador
« Respuesta #28 en: 29 de Septiembre de 2007, 12:34:15 »
Código: [Seleccionar]
No hay manera que  ponga el programa y eeprom todo junto ?

Preuba Eso
1º abre tu programa con el AVRStudio
le das a Run y despues tica en DEBUG
abajo del todo veras UP/DOWNLOAD MEMORY
tica ahi y se te abrira un menu
en HEX FILES busca la ruta de tu fichero eeprom .hex
buscandolo a traves de un cuadrito con tres puntito donde
se te abrira otro menu y desde ahi ve en busca de la carpeta
donde tengas guardado ese fichero eeprom.hex
lo ticas y despues ticas en LOAD FROM FILE y luego cierralo a traves
de la X en el cuadrito rojo NO LE VAYAS A DAR A SAVE TO FILE
sino te sobrescribira tu fichero eeprom .hex a 0000000
ya que es el que tienes en este momento en el AVRStudio
ahora tica en VIEW en el menu de arriba y busca en EEprom
se tiene que ver reflejado en el tu eeprom y ya odras simular
tu programa en conjunto con la eeprom
eso lo tendras que hacer cada vez que vuelva a cerrar el AVRSTUDIO
 

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1685
    • winpic800
Re: Curso Básico AVR AT90S1200 Ensamblador
« Respuesta #29 en: 01 de Octubre de 2007, 04:09:15 »
Thankius , ya boy viendo como va eso .