Autor Tema: EJEMPLITOS DE BASCOM AVR... ATMEGA8..  (Leído 205792 veces)

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

Desconectado olotill

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 249
Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
« Respuesta #15 en: 13 de Abril de 2006, 17:09:23 »
Que tal compadres..

Aca sigo con los ejemplitos, esta vez con el boton de seleccion de funcion....AUTO FANTASTICO o JUEGO LUCES...

He estado tratando de hacer una especie de libreria para incluirla en el ejercicio, como lo hace VsZener, pero no lo he conseguido, sera que tengo que trabajar un poquitin mas y buscar mas info...

asi que esto de utilizar un include queda postergado para nuevo aviso  :D...

bueno aca el codigo de este ejemplito...


Código: [Seleccionar]
$crystal = 1000000



Config Portb = Output

Ddrc.0 = 0
Portc.0 = 1

Dim I As Byte

Do
   If Pinc.0 = 0 Then
      Portb = 1
      Waitms 150
      Gosub Auto
   Else
       Gosub Jueluces
   End If
Loop


Auto:
   For I = 1 To 7
      Rotate Portb , Left
      Waitms 150
   Next
   For I = 1 To 7
      Rotate Portb , Right
      Waitms 150
   Next
Return


Jueluces:
   For I = 0 To 3
      Portb = Lookup(i , Luces)
      Waitms 250
   Next
   For I = 2 To 1 Step -1
      Portb = Lookup(i , Luces)
      Waitms 250
   Next
Return


Luces:
Data &B10000001 , &B01000010 , &B00100100 , &B00011000




Aca tiene los archivos
« Última modificación: 14 de Abril de 2006, 00:34:25 por olotill »
"La imaginación es más importante que el conocimiento"  A. Einstein..

Desconectado olotill

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 249
Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
« Respuesta #16 en: 13 de Abril de 2006, 17:50:12 »
Bien compadres, ahora q ya sabemos manejar leds...

vamos a empezar con los contadores con displays de 7 seg de catodo comun.........

y aqui se viene el codigo de este contador de 0 a 9 cada segundo, es realmente sencillo...

Código: [Seleccionar]
$crystal = 1000000

Config Portb = Output

Dim I As Byte , Num(10) As Byte
For I = 0 To 9
   Num(i + 1) = Lookup(i , Datos)
Next

I = 1

Do
   Portb = Num(i)
   Wait 1
   Incr I
   If I > 10 Then
      I = 1
   End If
Loop

Datos:
Data &H3F , &H06 , &H5B , &H4F , &H66 , &H6D , &H7D , &H07 , &H7F , &H67

Muy bien, vamos avanzando...

Aunque por ahora voy a tomarme un descansito y luego continuo con los ejemplos...  :D




Aca los archivos de este ejemplo...

"La imaginación es más importante que el conocimiento"  A. Einstein..

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5552
    • Picmania by Redraven
Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
« Respuesta #17 en: 13 de Abril de 2006, 18:04:33 »
Compadreeeee, estás hecho un verdadero brazo de mar. (Aplausos de parte del Redpic)

Sigue así, Fabían, que los amigos Atmeleros tambien tienen su sitio bajo el sol.  :lol:

(Y por favor comenta tus programas pa que los mas novatos sepan que haces en ellos)



Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado olotill

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 249
Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
« Respuesta #18 en: 13 de Abril de 2006, 18:41:25 »
 :D   bueno tendre que irlos modificando donde vea que esten medio complejkos de entender... aunque son re facilitos jeje..

Bueno pues ya me he tomado el descanso de hoy y pues ahora a seguir adelante con los ejemplitos, espero llegar hoy hasta el LCD  :D...

Bien pues aqui el contador descendente de 0 a 9.... sencillo, solo cambian unas dos lineas en comparacion del codigo anterior......

Código: [Seleccionar]
$crystal = 1000000

Config Portb = Output

Dim I As Byte , Num(10) As Byte
For I = 0 To 9
   Num(i + 1) = Lookup(i , Datos)
Next

Portb = &H3F
Wait 1

I = 10

Do
   Portb = Num(i)
   Wait 1
   Decr I
   If I < 1 Then
      I = 10
   End If
Loop

Datos:
Data &H3F , &H06 , &H5B , &H4F , &H66 , &H6D , &H7D , &H07 , &H7F , &H67



La simulacion en proteus pues nos sirve la anterior...

Aca los archivos para entrarle con fuerza ,...
"La imaginación es más importante que el conocimiento"  A. Einstein..

Desconectado rataro85

  • PIC10
  • *
  • Mensajes: 4
Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
« Respuesta #19 en: 13 de Abril de 2006, 19:07:48 »
hola a todos        :lol:

agradecer a olotill que es un super amigo por tanta colaboracion sobre todo a la hora de hacer proyectos, ayudar en programitas y en fin
en todo lo que el puede y sabe aca un amigo mas renatin o rataro85 para servirles y en lo que se pueda ir ayudando con ideas para seguir
adelante

saludos desde Ecuador[/b]
 :mrgreen: :)
"sigan siempre adelamte y veran los grandiosos resultados"

Desconectado olotill

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 249
Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
« Respuesta #20 en: 14 de Abril de 2006, 00:27:58 »
Que tal compadre Renato...

jeje bienvenido a nuestra nueva casa... y pues para que veas empezamos con pie firme... espero que pronto andes por aqui alardenado tu GTP USB +  :D asi como yo hago con el mio  :lol:...

Bueno que decir, me tome un descanso demasiado largo asi qeu ahora completo has ta el ejercicio 15... :D..

Aca viene el ejercicio correspondiente al contador ascendete o descendente con pulsador del maestro VSZENER...

Pues bien no mas palabras....

Código: [Seleccionar]
$crystal = 1000000                                          'CRISTAL INTERNO 1 mhz

Config Portb = Output                                       'PORTB COMO SALIDAS
Ddrc.0 = 0                                                  'PINC.0 COMO ENTRADA DEL PULSADOR
Portc.0 = 1

Boton Alias Pinc.0                                          ' RENOMBRAR PINC.0 AHORA SE LLAMARA BOTON


Dim I As Byte , Num(10) As Byte                             'DECLARACION DE VARIABLES Y CONTANTES DE NUMEROS 0 A 9
For I = 0 To 9
   Num(i + 1) = Lookup(i , Datos)
Next

Portb = &H3F                                                'MOSTRAR VALOR 0
Wait 1

If Boton = 0 Then
   I = 10
Else
   I = 1
End If


Do
   If Boton = 0 Then
      Gosub Subir
   Else
      Gosub Bajar
   End If
   Portb = Num(i)
   Waitms 500
Loop

Datos:
Data &H3F , &H06 , &H5B , &H4F , &H66 , &H6D , &H7D , &H07 , &H7F , &H67


Subir:
   Incr I
   If I > 10 Then
      I = 1
   End If
Return

Bajar:
   Decr I
   If I < 1 Then
      I = 10
   End If
Return




Y pues bien, como saben aca los archivos...

"La imaginación es más importante que el conocimiento"  A. Einstein..

Desconectado olotill

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 249
Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
« Respuesta #21 en: 14 de Abril de 2006, 15:53:53 »
Que tal compadres...

Pues no he podido subir los siguientes ejemplos porque tengo un problema de simulacion en el proteus, no se si es problema del soft o es algun bug en mi cabeza con todo voy a estar intentando simularlos, sino me tocara probarlos in real antes de subir el codigo...

Un abrazo compadres..
"La imaginación es más importante que el conocimiento"  A. Einstein..

Desconectado Vinho

  • PIC10
  • *
  • Mensajes: 42
Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
« Respuesta #22 en: 18 de Abril de 2006, 14:30:05 »
Hola gente!

Gracias por los ejemplos, me han servido mucho!

Olotill, podrías indicarnos cómo conectaste el pulsador en el último ejemplo?

Sobre ese crystal interno... ¿cómo calculo la velocidad a la q se realiza cada instrucción con él? ¿es esa la única frecuencia a la q trabaja o sino q otras podrían ser configuradas?
¿Cuanta corriente manejan los pines del mega8 como entrada y como salida?
Finalmente, ¿cómo hago un circuito de reset?

Gracias por su ayuda!

Desconectado olotill

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 249
Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
« Respuesta #23 en: 19 de Abril de 2006, 01:00:36 »
Que tal Compadre Vinho...

Pues bien, vamos por partes...

El pulsador esta conectado al pin C.0 del atmega8... ahora si te refieres a como lo conecte pues directamente del pin, al pulsador y del pulsador a tierra... ahora porque??  Una de las ventajas que tienen los micros de ATMEL es que cada uno de los pines de cada puerto puede ser configurado como entrada /salida.. y al ser configurado como entrada tiene la opcion de activar una Pull Up interna para cada pin (de ser necesario).... entonces eso es lo que hacen las instrucciones...

Código: [Seleccionar]
Ddrc.0=0
Portc.0=1

Con estas lìneas ordeno que el pin c.0 sea una entrada pull up.. por lo que solo tengo que conectar el pulsador a tierra..... Ahora bien, si notas la linea siguiente dice
Código: [Seleccionar]
Boton Alias Pinc.0 

pues bien, ahi lo que hago es renombrar al pinc.0 y lo llamare boton dentro del programa...

una cosa que se me habia olvidado manifestar en los ejemplos anteriores es que si un pin es de salida, el ALIAS debera ser nombrado como Port...  y si el pin es de entrada el ALIAS debera ser nombrado como PIN...

Ejemplo:

Código: [Seleccionar]
Ddrc.0=0  ' pin c.0 como entrada
Portc.0=1
Ddrc.1=1  ' pin c.1 como salida
Portc.1=0

Boton Alias Pinc.0      ' alias para entrada = Pin
led alias Portc.1         ' alias para salida = port


Muy bien... Ahora vamos con la siguiente pregunta...

Con el cristal estamos hablando de 1 MHz, asi que la velocidad a la que se realiza cada instruccion seria 1 us (1/1000000)......

Ahora bien, aqui viene otra de las ventajas que tienen los ATMEL sobre los PIC, y es que la frecuencia a la que trabajan es con la del valor del cristal, es decir que no se debe dividir la frecuencia del cristal para 4..... por ejemplo el ATMEGA8 que es el atmel que yo utilizo puede trabajar hasta con un cristal de 16 MHz... velocidad muy superior a un pic que trabaje a 20 MHz, puesto que la velocidad en el pic seria de 5MHz (20Mhz/4)... Ahora sobre la configuracion del micro para funcionar con un cristal externo, pues prometo subir prontico un ejemplo en donde explique como hacerlo....

La tercera pregunta...  cada pin del atmega8 maneja hasta 25 mA como entrada/salida... en esto es similar al PIC.... las versiones anteriores del ATMEL el AT89c51 segun tengo entiendido no tenian ni la capacidad de encender un led con un pin,... pues ahora los ATMEGA son otra cosa, mucho mas potentes...

Finalmente la ultima pregunta... para el circuito de reset, pues es similar a cualquier reset de un micro.... al pin RST una resistencia pull up (yo coloco una de 470 K) y un pulsador a tierra...

Bueno compadre, espero que vayas bien con los ejemplitos, y listo que estos dias empiezo a subir mas
"La imaginación es más importante que el conocimiento"  A. Einstein..

Desconectado olotill

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 249
Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
« Respuesta #24 en: 19 de Abril de 2006, 01:21:34 »
Bueno pues bien, luego de una lucha sangrienta entre el proto, el proteus y los bugs que mi cabeza.... pues a la final he seguido el consejo de mi compadre Lord_Lafebre, y me he montado un circuito en proto para ver si mis dudas sobre el manejo del timer0 del atmeg8 eran sobre mala programacion o fallas del simulador........ y pues por suerte compadres.... es falla del simulador  :D :D :-/ :-/

Asi que pues bien, creo que no soy tan malo programando como ya lo habia pensado  :lol: :lol:...

Ahora bien, aca vamos a continuar con los ejemplitos que habiamos dejado a la espera debido a la falta de ayuda del proteus.......

Bien siguiendo el orden descrito por el maestro VSZENER, el ejemplito de hoy trata sobre un contador de 00 a 99, utilizando el tiemr0 para contar cada segundo.... y pues la programacion es sencilla.... asi q ya saben a montar en un circuito pequeño y a probar... con todo aca les dejo el .bas y el .hex...

Para montar el circuito pues solamente se seguirian los esquemas de los ejemplos anteriores en proteus...

OK, aca el codigo del ej...

Código: [Seleccionar]
$crystal = 1000000                                          'CRISTAL INTERNO 1 mhz

'***************************************************************************
'     CONFIGURACION DE LOS TIMER 0
'***************************************************************************
Config Timer0 = Timer , Prescale = 8                        'configuracion timer0
Stop Timer0
On Timer0 Over0                                             'subrutina de interrupcion del timer0

Config Portb = Output                                       'PORTB COMO SALIDAS
Config Portc = Output

Portc = 255
Dim I As Byte , J As Byte , Flagtmr0 As Integer , Num(10) As Byte       'DECLARACION DE VARIABLES Y CONTANTES DE NUMEROS 0 A 9
For I = 0 To 9
   Num(i + 1) = Lookup(i , Datos)
Next

I = 1 : J = 1 : Flagtmr0 = 1

Timer0 = 0                                                  'cargo valor incial del timer0

Enable Timer0                                               'habilito timers e interrupciones
Enable Interrupts
Start Timer0
                                                              'bucle para mostrar nuemros por los displays de 7 seg
Do
   Portc = &B11111110
   Portb = Num(i)
   Waitms 5
   Portc = &B11111101
   Portb = Num(j)
   Waitms 5
Loop

Datos:
Data &H3F , &H06 , &H5B , &H4F , &H66 , &H6D , &H7D , &H07 , &H7F , &H67



Over0:
   If Flagtmr0 > 487 Then                                   'AJUSTE FINO A 1 SEGUNDO
      Timer0 = 184
      If Flagtmr0 > 488 Then
         Incr I
         If I > 10 Then
            Incr J
            I = 1
            If J > 10 Then
               J = 1
            End If
         End If
      End If
   End If
   Incr Flagtmr0
   If Flagtmr0 < 487 Then
      Timer0 = 0
   End If
Return


Listo compadres.... aca los archivos
 

"La imaginación es más importante que el conocimiento"  A. Einstein..

Desconectado Vinho

  • PIC10
  • *
  • Mensajes: 42
Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
« Respuesta #25 en: 28 de Abril de 2006, 19:47:15 »
Hola!

Podria alguien postar algún ejemplo de interrupciones tiempo por favor?? Cómo se setea el tiempo exacto en que uno quiere que ocurra la interrupción?? Por cierto, tengo problemas con la instrucción RETURN, se supone que debe regresar a la instrucción en que estaba antes de una interrupción, pero siempre regresa al inicio del programa... Q estoy haciendo mal?

Saludos!!

Desconectado JCAK

  • PIC18
  • ****
  • Mensajes: 325
Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
« Respuesta #26 en: 17 de Mayo de 2006, 14:49:05 »
Me parece bueno el aporte de Olotil y ayudar a todos a dar unos pasos con el BASCOM, no cualquiera tiene alma docente y se toma un tiempito para hacer su aporte.
Yo estoy probando hace unos dias el BASCOM y hasta ahora me resulta muy amigable, aunque el archivo de ayuda que tiene es de terror, incluso puedo contarles, que aún no se que fué lo que toqué en el programador desde sonde se programa los fuses y mi chip dejó de responder por completo, asi que me vi obligado a comprar otro por no saber como revivirlo. O sea que, OJO con lo que tocan.

Además de todo esto que les contaba, particularmente me interesan los siguientes temas:

- TIMERS
- PWM
- COMPARADORES.

Ahora me voy a meter con eso, pero si Olotil o alguien quiere hacer su aporte, sepan que yo estaré gustoso de leerlo.

Un saludo grande a todos  :-)
Julio - Argentina

Desconectado starfire9

  • PIC10
  • *
  • Mensajes: 2
Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
« Respuesta #27 en: 31 de Mayo de 2006, 01:22:50 »
Hola a todos los integrantes del foro:

Despues del saludo, me gustaria, si es posible me despejaran una duda que tengo,  bueno pero antes que nada tengo que decirles que soy nuevo en esto de la electronica, y apenas estoy aprendiendo a utilizar bascom y proteus, ademas, pero no se como configurar Proteus para que me simule los archivos *.bas que genera bascom avr, alguna alma caritativa que me ayude, o me de un link para poder configurar proteus
 de antemano gracias


Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
« Respuesta #28 en: 31 de Mayo de 2006, 23:09:15 »
Hola starfire

En proteus no cargas los archivos .bas; lo que cargas es el hex compilado. Compila tu .bas y ve a proteus. Da click derecho al avr que tengas en el diagrama, luego click izquierdo. En program file, carga el .hex.

Desconectado starfire9

  • PIC10
  • *
  • Mensajes: 2
Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
« Respuesta #29 en: 01 de Junio de 2006, 01:16:51 »
Hola migsantiago:

Gracias por contestar mi pregunta, hice lo que me dices, pero sigo sin poder compilar me manda un un mensaje de error que es el siguiente:

SIMULATION LOG
==============
Design:   UNTITLED.DSN
Doc. no.: <NONE>
Revision: <NONE>
Author:   <NONE>
Created:  31/05/06
Modified: 31/05/06

Compiling source files...
Build completed OK.
Compiling netlist...
Linking netlist...
Partition analysis...

Simulating partition 1
Animation started sucessfully...
PROSPICE Release 6.5 SP2 (C) Labcenter Electronics 1993-2002.
SPICE Kernel Version 3f5. (C) Berkeley University ERL.

Reading netlist...
Reading SPICE models...
Loading library 'ANALOGD.SML'
Loading library 'APEX.SML'
Loading library 'BURRBROWN.SML'
Loading library 'ELANTEC.SML'
Loading library 'FAIRCHLD.SML'
Loading library 'INTERSIL.SML'
Loading library 'LINTEC.SML'
Loading library 'NATOA.SML'
Loading library 'SUPERTEX.SML'
Loading library 'TECCOR.SML'
Loading library 'TEX101.SML'
Loading library 'TEX301.SML'
Loading library 'TEX3_1.SML'
Loading library 'TEX401.SML'
Loading library 'TEX5_1.SML'
Loading library 'VALVES.SML'
Loading library 'ZETEX.SML'
Building circuit...
Added GEARTH resistor for net #00023.
Added GEARTH resistor for net #00024.
Instantiating SPICE models...
[U1] AVR model release 6.4 SP0.
[U1] Loaded 512 bytes of persistent EEPROM data.
ERROR: [U1] Must specify file extension for PROGRAM property.
Warning: [U1] No program code loaded.
[DSIM] BOOT Error.
Real Time Simulation failed to start

Real Time Simulation FAILED.


Simulation FAILED due to fatal simulator errors.





y no se que es lo que esta fallando, perdona mi ignorancia, no se si me puedas orientar.

no se que que valores debo poner en esta ventana:


o en esta otra:



Pero me imagino que por aqui esta el error.


Gracias.