TODOPIC

Otros Microcontroladores / Dispositivos programables => Microcontroladores 8 bits => Mensaje iniciado por: olotill en 05 de Abril de 2006, 15:01:04

Título: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: olotill en 05 de Abril de 2006, 15:01:04
QUE TAL COMPADRES...

PUES COMO CASA NUEVA... ESTRENO NUEVO  :D .. ME HE PROPUESTO RETORMAR EL HILO DE LA PROGRAMACION DE MICROS ATMEL, ESPECIFICAMENTE A TRABAJAR CON EL ATMEGA8... Y EL ELNGUAJE DE PROGRAMACION SERA EN BASIC.... ASI QUE EL SOFT ES EL BASCOM AVR...

A MI PARECER ES UN EXCELENTE SOFT (A PESAR QUE NO SOY EXPERTO EN SU MANEJO) PERO QUE ME HA SACADO DE LOS APUROS EN PEQUEÑOS PROYECTOS QUE HE TENIDO...

PUES BIEN... PARA EMPEZAR DECIR QUE ESPERO SU COLABORACION Y SU APOYO... Y SOBRE TODO SUS DUDAS PARA IR APRENDIENDO JUNTOS, PORQUE COMO LES DIJE EXPERTO NO SOY, MAS BIEN SOY UN NOVATO CON GANAS DE APRENDER BIEN... Y PUES QUE MEJOR SI APRENDEMOS A LLEVAR DE LA MANO LOS PIC CON LOS AVR  :lol:..

OK BASTA DE PALABRAS, Y PARA EMPEZAR LES DEJO EL LINK DE UNA PAGINA SOBRE BASCOM AVR... QUE TIENE BUENA INFO Y EN LA CUAL ME BASARE PARA IR HACIENDO LOS EJEMPLITOS...( TRATARE DE SEGUIR LA LINEA DEL MAESTRO VSZENER Y DE REDPIC EN CCS PARA PIC) ... DE IGUAL FORMA DAR LAS GRACIAS AL COMPADRE HERNAN DOPPEL POR LA AYUDA PARA CONSEGUIR INFO...

MUY BIEN.. PUES POR AHORA ESO ES Y A TRABAJAR EN EL PRIMER EJEMPLITOS...

ACA EL LINK...

http://web.inter.nl.net/users/cpotma/


LISTO ASI Q DESDE AHORA EMPEZAMOS LA CARRERA, HAY MUCHOS EJEMPLOS QUE IGUAL A VSZENER Y REDPIC  :D ...

UN ABRAZO DESDE MI QUERIDA TIERRA... EL ECUADOR..
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: RedPic en 05 de Abril de 2006, 15:47:06
¡¡¡ Bien por Olotill !!! Así se habla (o se escribe).

Te deseo mucha suerte en tu nueva singladura. Que usted lo postee bien, y yo que lo vea.  :D
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: LordLafebre en 05 de Abril de 2006, 15:51:35
Hola:

Pues felicitarte por la iniciativa Fabian por los ejemplos que vas a ir subiendo, debido a que ahora ya cuento con el programador para AVR y a la espera de que el Maestro Sisco lance su nueva version del winpic, me he dedicado a jugar con AVR y simularlo en proteus, el lenguaje que estaba utilizando es el Mikrobasic para AVR, me parece interesante que se de  a conocer mas sobre estos compiladoresya que son sencillos de utilizar.

Yo me animo a proponer lo siguiente:

Para ir aprendiendo entre todos los amantes del basic y gente que se quiera iniciar en este lenguaje, que les pareceria si se abriera un nuevo subforo como lo hay en microcontroladores pic, en ese caso el subforo se llama Pic basic pro y protón, ya que esos dos son solo para PIC, y para AVR pues un subforo como Bascom AVR y Microbasic para AVR.

Claro que solo es una sugerencia, y en definitiva quien tiene el poder para decidir eso es Norberto, pero me pareceria una buena opcion para los que querramos iniciarnos con AVR y Basic, a ver que les parece a ustedes.

Aunque me sali de "foco" con el tema del post original de Fabian, pero es algo que queria comentar. :mrgreen:
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: PAOLA09 en 05 de Abril de 2006, 16:18:47
HOLA:

que iniciativa tan interesante Fabian. veamos si te logro seguir el paso ya que hay si sabes mas tu  :lol:. yo apenas empezaría con la cosa.
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: vszener en 05 de Abril de 2006, 17:02:53
Pues felicitar al amigo Olotill por la iniciativa de postear ejemplos con dicho y micro!!!me parece que un foro como este, lleno de ejemplos en 'casi' todas sus categorias(ya sea en c, en basic, en atmel...) lo hace aun mas genial!!! mucha suerte y ha postear muchos ejemplos!!!

PD: Ya nos animaremos ha trabajar algo el basic tambien....jeje


Suerte!!! :wink:
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: olotill en 07 de Abril de 2006, 00:12:40
GRACIAS POR EL APOYO COMPADRES... ASI ES MAS FACIL SEGUIR ADELANTE

Pues bien ahora para retomar con fuerza el tema de AVR en BASIC con BASCOM AVR, vamos a empezar primero presentando a la estrella que sera usada como base de los ejemplos el micro ATMEL ATMEGA8… cuyo datasheets lo pueden descargar desde:

http://www.atmel.fi/dyn/resources/prod_documents/doc2486.pdf

Como caracteristicas rápidas…. El atmega8 posee 8kb de memoria flash, 512 bytes eçde EEPOM, y 1KB de SRAM, posee 2 timers, 2 de 8 bits y uno de 16 bits…Posee un reloj de tiempo real (RTC) con oscilador externo.. y 6 canales de ADC… y por supuesto comunicación serial…

Para realizar la programación del ATMEGA…. Vamos a utilizar por ahora el STK – 200 Programmer… que es un programador por puerto paralelo… en el help del BASCOM AVR, van a INDEX y luego buscan ISP Programmer, ahí les muestra el esquema del programador, que simplemente utiliza 5 lineas… la configuración del programador se las mostraré para futuros ejemplos…

Cuando tenga lista mis bases ZIF, y WINPIC800 tenga el soporte listo para el ATMEGA8 pues utilizare este programador que dicho sea de paso… es excelente tanto en funcionalidad como en acabados… Ya tengo el mio traido desde Argentina, gracias a Marcelo Marmatar, y no es por publicidad pero los animo a que hagan su inversión en este grandioso programador…

Ahora bien… empecemos con los ejemplitos sencillos, y el encendido de leds ..

Primero vamos a configurar el BASCOM AVR para trabajar con el ATMEGA 8...

ABRIMOS EL BASCOM AVR :
(http://img103.imageshack.us/img103/5311/bascomidechip4ez.th.gif) (http://img103.imageshack.us/my.php?image=bascomidechip4ez.gif)

VAMOS AL MENU OPTION / COMPILER / CHIP PARA SELECCIONAR EL MICRO A TRABAJAR... EN ESTE CASO EL ATMEGA8
(http://img108.imageshack.us/img108/7431/chip6mq.th.gif) (http://img108.imageshack.us/my.php?image=chip6mq.gif)

SELECCIONAMOS EL MICRO A UTILIZAR:
(http://img46.imageshack.us/img46/9277/configchip6ax.th.gif) (http://img46.imageshack.us/my.php?image=configchip6ax.gif)


Bien, bien ahora si... pues vamos a escribir un pequeñito codigo... el cual esta expicado para su facil comprension...

PROGRAMA LED-FLASH
Código: [Seleccionar]
$crystal = 1000000                                          'CRISTAL INTERNO DE  1 MHZ

Config Portb = Output                                       'CONFIGURAR PORTB COMO SALIDAS EN 0 LOGICO

Do                                                          'LAZO INFINITO
   Portb = 255                                              'ENCENIENDO LOS LEDS EN EL PORTB
   Waitms 150                                               'ESPERA DE 150 MS
   Portb = 0                                                'APAGO LOS LEDS EN EL PORTB
   Waitms 150                                               ' ESPERA 150 MS
Loop

End                                                         ' FIN DEL PROGRAMA


Muy bien, para compilar y obtener el HEX de este archivo pues simplemente con F7...

Ahora, este ejemplito solo lo voy a simular en Proteus los proyectos un poquito màs complejos los iremos probando in real...

Aca el esquema en Proteus....

(http://img86.imageshack.us/img86/5411/ej1ledflash6yy.th.gif) (http://img86.imageshack.us/my.php?image=ej1ledflash6yy.gif)

Y pues para mayor facilidad aca los archivos necesarios para este ejercicio..



Ok compadres espero que les sirva y les guste el primer y sencilllo ejemplito... aun tengo mucho por aprender con uds... asi que llevaremos de la mano al PIC CCS con el AVR BASIC  :lol:...

Nos vemos en el proximo ejemplito







Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: doppel en 07 de Abril de 2006, 00:52:59
Ke Grande FABIAN! buenisimo lo que estás haciendo! me parece que voy a tener que aprender varias cosas!!jejjee  de donde bajo la demo de BASCOM?

saludos

Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: olotill en 07 de Abril de 2006, 01:14:28
QUE TAL BROTHER HERNAN...

PUES POR ACA PUEDEN CONSEGUIR LA VERSION DEMO DE BASCOM AVR, QUE NOS PERMITE CREAR HASTA 2K DE CODIGO QUE PUES VA BIEN...

http://www.mcselec.com/index.php?option=com_docman&task=cat_view&gid=99&Itemid=54


CON TODO PARA LOS AMIGOTES.. PUES YA SABEN PONGANSE EN CONTACTO VIA MAIL... PARA PASARLES LA VERSION DEMO  :wink: 8)  :lol:  :mrgreen:

UN ABRAZO COMPADRES... MAÑANA OTRO EJEMPLITO MAS
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: migsantiago en 11 de Abril de 2006, 15:15:53
Pondré una chincheta en este tema para que sea una guía más con la que cuenta el subforo Atmel.

Buen trabajo olotill.  :)
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: olotill en 11 de Abril de 2006, 22:16:50
Compadre Migsantiago...

Gracias por el apoyo, y perdon a los compadres por no subir ejemplitos estos dias pero es que he estado modificando los modulos de mi entrenador para tener un modulo para AVR tambien  :lol: ....  En estos dias me pongo al filo con los ejemplitos que aunque sencillos pueden ser utiles para queines iniciamos

Un abrazo compadres
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: olotill en 13 de Abril de 2006, 11:49:49
Que tal compadres...

Pues bien ahora que estoy un poquito mas libre, retomo mis ejemplitos y pues veamos si llego a los diez en estos dias,...  :D..

El ejemplo de hoy se basa en el EJ1, ya que hace lo mismo pero utilizando un control mas preciso del puerto de salida, ya que nos explica como podemos configurar Bit a Bit los pines de un puerto...

Decir que como dije antes los ejemplos se basaran en la metodologia seguida por el gran maestro VsZener en sus grandes ejemplos de pic en C..

Bueno vamos al ejemplo...

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

'*******************************************************************
'*** ENE STE EJEMPLO VAMOS A REALIZAR EL PARPADEO DE LOS LEDS... PERO VAMOS
'*** VAMOS A VER COMO SE PUEDE CONFIGURAR BIT A BIT EL I/O DE UN PUERTO....
'*** PARA ESTO VAMOS A USAR EL COMANDO DDR.... EL CUAL DEBE IR ACOMPAÑADO DEL
'*** COMANDO PORT......
'*** ACA UNA BREVE DESCRIPCION DE ESTOS COMANDOS..


'*** DDBn   PORTBn     I/O    Pull up        Comment
'*** 0         0     Input       No       Tri-state    (Hi-Z)
'*** 0         1     Input       Yes      PBn will source current if ext. pulled low.
'*** 1         0     Output      No       Push-Pull Zero Output
'*** 1         1     Output      No       Push-Pull One Output

'*** DECIR BREVEMENTO QUE DEPENDIENDO DE LOS VALORES QUE DEMOS A ESTOS PARAMETROS
'*** OBTENDREMOS SALIDAS O ENTRADAS EN UN PUERTO...
'*** PARA ESTE EJEMPLO VAMOS A CONFIGURAR BIT A BIT EL PORTB PARA QUE SEAN SALIDAS EN 0 LOGICO
'*** POR LO QUE LOS VALORES DEBEN SER DDRn 1 Y PORTn 0..


Ddrb.0 = 1
Portb.0 = 0
Ddrb.1 = 1
Portb.1 = 0
Ddrb.2 = 1
Portb.2 = 0
Ddrb.3 = 1
Portb.3 = 0
Ddrb.4 = 1
Portb.4 = 0
Ddrb.5 = 1
Portb.5 = 0
Ddrb.6 = 1
Portb.6 = 0
Ddrb.7 = 1
Portb.7 = 0

Dim Count As Byte

Count = 0

Do                                                          'LAZO INFINITO
   Portb = 255                                              'ENCENIENDO LOS LEDS EN EL PORTB
   Waitms 300                                               'ESPERA DE 150 MS
   Portb = 0                                                'APAGO LOS LEDS EN EL PORTB
   Waitms 300
   Incr Count                                               ' ESPERA 150 MS
Loop Until Count = 255

End



Recordar q para la congifuracoin del micro a usar en bascom se siguen los pasos del ejemplo 1...

Una breve explicacion adicional sobre el comando DDr...

Asi como vemos se puede especificar bit a bit el control pero la manera como esta hecha el ejemplo no es la mas practica, lo mejor seria especificar en valores decimales, hexadecimales o binarios las salidas aqui un ejemplo de cada uno...

Por ejemplo

DECIMAL:

Ddrb = 255
Portb = 0

HEXADECIMAL:

Ddrb = &HFF
Portb = &H00

BINARIO:  LA Q MAS ME GUSTA

Ddrb = &B11111111
Portb = &B00000000


DE ESTA MANERA AHORAMOS ESPACIO..

OK ACA LOS ARCHIVOS DEL EJEMPLO..
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: olotill en 13 de Abril de 2006, 12:31:27
Que tal brothers...

Pues bien ya que hoy tengo dia libre.... pues voy a trabajar en mis ejemplitos... veamos hasta donde llego...

Bien una vez entendido el manejo y configuracion de puertos... hoy vamos a hacer el ejemplito de las luces del auto fantastico......

Este tercer ejemplo usara un comando interno del Bascom (como muchos otros lo tienen) que sirve para rotar bit a bit el valor de una variable....

El Comando tiene la estructura:

ROTATE var , LEFT/RIGHT[ , shifts]

en la cual se pone la variable y la direccion hacia donde se quiere rotar los valores de los bits...

Una explicacion rapida del comando, pues por ejemplo si tengo una variable A, cuyo valor es 8 (1000 en binario) al colocar una sentencia ROTATE A, LEFT
lo que obtendria seria 16.... si se rotara asi ROTATE A, RIGHT el valor que obtendriamos seria 4...

Pues bien aqui el ejemplito...


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


'*** DDBn   PORTBn     I/O    Pull up        Comment
'*** 0         0     Input       No       Tri-state    (Hi-Z)
'*** 0         1     Input       Yes      PBn will source current if ext. pulled low.
'*** 1         0     Output      No       Push-Pull Zero Output
'*** 1         1     Output      No       Push-Pull One Output

'*** DECIR BREVEMENTO QUE DEPENDIENDO DE LOS VALORES QUE DEMOS A ESTOS PARAMETROS
'*** OBTENDREMOS SALIDAS O ENTRADAS EN UN PUERTO...
'*** PARA ESTE EJEMPLO VAMOS A CONFIGURAR BIT A BIT EL PORTB PARA QUE SEAN SALIDAS EN 0 LOGICO
'*** POR LO QUE LOS VALORES DEBEN SER DDRn 1 Y PORTn 0..

Config Portb = Output

Dim I As Byte

Portb = 1
Waitms 300

Do                                                          'LAZO INFINITO
   For I = 1 To 7                                           'ESTRUCTURA FOR
      Rotate Portb , Left                                   'SENTENCIA ROTATE QUE MUEVE BIT A BIT
      Waitms 300                                            'IZQUIERDA COMO PORTB INICIA EN 1 DESPUES DE O VECES
   Next                                                     ' SU VALOR SERA 128
   For I = 1 To 7                                           'VICEVERSA A KA ESTRUCTURA ANTERIOR
      Rotate Portb , Right
      Waitms 300
   Next
Loop                                                        'LAZO INFINITO

End


Muy bien compadres, aca los archivos y se viene otro configuracion para hacer las luces del autofantastico...

Aca una imagen de la simulacion..

(http://img134.imageshack.us/img134/5351/auto2mm.th.gif) (http://img134.imageshack.us/my.php?image=auto2mm.gif)



Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: olotill en 13 de Abril de 2006, 13:10:04
Que hay brothers

Pues bien aca jugando con las subrutinas de bascom podemos ver lo sencillo que se va haciendo programar como si se tratase de un flujograma...

Muy bien... este ejemplito aunque hace los mismo que el anterior, es de una confuguracion diferente y nos permite ver como usar Subrutinas dentro de Bascom.... en este caso son subrutinas vacias, en ejemplos posteriores utilizaremos parametros y luego trambien funciones....

En este ejemplo una forma no tan practica de hacer las luces del autofantantisco pero para aprender va bien.....


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

Config Portb = Output

Dim I As Byte

Declare Sub Izq()                                           'declaracion subrutinas
Declare Sub Dere()


Do                                                          'LAZO INFINITO
   Call Izq()                                               'ir a subrutina izquierda
   Call Dere()                                              'ir a subrutina derecha
Loop                                                        'LAZO INFINITO


Sub Izq()
   Portb = 1
   Waitms 150
   Portb = 2
   Waitms 150
   Portb = 4
   Waitms 150
   Portb = 8
   Waitms 150
   Portb = 16
   Waitms 150
   Portb = 32
   Waitms 150
   Portb = 64
   Waitms 150
   Portb = 128
   Waitms 150
End Sub

Sub Dere()
   Portb = 64
   Waitms 150
   Portb = 32
   Waitms 150
   Portb = 16
   Waitms 150
   Portb = 8
   Waitms 150
   Portb = 4
   Waitms 150
   Portb = 2
   Waitms 150
End Sub

End                                                         ' FIN DEL PROGRAMA



Decir que aca estan los archivos de este ejemplo...

Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: olotill en 13 de Abril de 2006, 13:38:53
QUE TAL COMPADRES, PUES BIEN ACA LA VERSION FINAL DE LAS LUCES DEL AUTO FANTASTICO...

QUE NO ES MAS QUE LA UNION DE LAS PRACTICAS ANTERIORES PARA OBTENER UN CODIGO REDUCIDO (NO SE SI EN MEMORIA PERO SI EN LINEAS DE PROGRAMACION  :D )...

BUENO SIN MAS PREAMBULOS ACA EL CODIGO Y LOS ARCHIVOS..

Código: [Seleccionar]

$crystal = 1000000                                          'CRISTAL INTERNO DE  1 MHZ

Config Portb = Output

Declare Sub Izq()                                           'declaracion subrutinas
Declare Sub Dere()

Portb = 1
Waitms 150

Do                                                          'LAZO INFINITO
   Call Izq()                                               'ir a subrutina izquierda
   Call Dere()                                              'ir a subrutina derecha
Loop                                                        'LAZO INFINITO


Sub Izq()
   Local I As Byte
   For I = 1 To 7
      Rotate Portb , Left
      Waitms 150
   Next
End Sub

Sub Dere()
   Local J As Byte
   For J = 1 To 7
      Rotate Portb , Right
      Waitms 150
   Next

End Sub

End                                                         ' FIN DEL PROGRAMA




ACA LOS ARCHIVOS...

Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: olotill en 13 de Abril de 2006, 14:40:03
Pues bien...

Luego de luchar contra Bascom buscando una manera nueva (no tipica) de usar arreglos y eso, me he encontrado con los manejos de etiquetas Data que ahorran el espacio al no consumir memoria RAM...... que por lo que veo me va a ser muy util..

bien aca dejarles el ejemplo del juego de LUCES del ejemplo del maestro VSZener...

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

Config Portb = Output

Dim I As Byte

Do
   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

Loop

End                                                         ' FIN DEL PROGRAMA


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


Aca una imagen lo lo obtenido..

(http://img139.imageshack.us/img139/4373/juegoluces6jj.gif) (http://imageshack.us)

Y pues aca los archivos...

Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: olotill 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
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: olotill 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

(http://img72.imageshack.us/img72/9927/ej82as.gif) (http://imageshack.us)


Aca los archivos de este ejemplo...

Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: RedPic 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)



Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: olotill 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 ,...
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: rataro85 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: :)
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: olotill 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...

Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: olotill 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..
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: Vinho 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!
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: olotill 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
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: olotill 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
 

Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: Vinho 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!!
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: JCAK 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  :-)
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: starfire9 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

Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: migsantiago 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.
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: starfire9 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:
(http://f3.yahoofs.com/users/41b5b061zdb83de26/19dcscd/__sr_/738dscd.jpg?phoBnfEBLyig2LCg)

o en esta otra:
(http://f3.yahoofs.com/users/41b5b061zdb83de26/19dcscd/__sr_/ea06scd.jpg?phAymfEB6hNa92kI)


Pero me imagino que por aqui esta el error.


Gracias.
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: migsantiago en 01 de Junio de 2006, 01:30:51
Uff, no sé cómo estés trabajando el Proteus. Te recomiendo que pases al foro de Simuladores y allá publiques tu pregunta. Yo no puedo ayudarte.  :(
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: vszener en 01 de Junio de 2006, 10:06:57
Bueno, las imagenes no se ven.....el fallo que te da es de la extension del archivo que debes cargar, no simula porque no tiene cargado ningun archivo, como bien te indican, debes cargarle al microcontrolador el archivo .hex generado por tu compilador.

PD: Como bien dice el amigo migsantiago, esta duda es mejor que la postees en el subforo de simuladores, asi dejamos este magnifico post creado por el amigo olotill con sus ejemplos y preguntas de los mismos



Suerte!!! :wink:
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: Drankos en 06 de Junio de 2006, 04:41:24
Hey olotill, que paso? te has tomado unrespiro que mas que respirodeben haberte saltado los pulmones, XD. te falta tiempo ? Deseas que te eche una mano ? Bien soy un burrito mas en este gran mundo de la programacion, pero por ganas que no sea.
Gracias y un saludo.
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: olotill en 06 de Junio de 2006, 19:58:35
Compadre Drankos..

Pues tenes toda la razon, mas que descanso parece asma....  :D :D pasa que he estado con trabajo y montando mis modulitos de entrenamiento para PIC`s y ATMEL, q en estos dias los compartire aca en el foro...

Y como te decia el problema que no he seguido con los ejemplos es que Proteus a momentos no simula bien, por lo prefiero probar los ejemplos in real con mis modulitos  :mrgreen:

Ahora lo que necesito es una pequeña guia para saber como enchufo el BASCOM AVR con la maestria de SISCO el GTP USB +, ya que ya lo probe reconociendo ATMEL y va de pelos  :-/ :-/ :-/  gracias SISCO...


Bien eso por ahora, poquito de paciencia.... o porque no proponemos ejemplitos y los vamos desarrollando...

Recuerden que 2 o 7000 cabezas piensan mejor que 1.... y la mia no puiensa mucho  :D :D

Listo entonces espero sugerencias, y pues veran q ando de vuelta prontico por el foro

Una abrazo compadres
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: Vinho en 10 de Junio de 2006, 13:29:59
Hola gente!

Soy novato en esto de los AVR, pero aquí les dejo un ejemplo de interrupción de timer1.
Se trata de un ejemplo sencillo con display de 7seg de ánodo común, un pulsador como control, un led como testigo y el Mega 8.

El ejemplo consiste en contar del 0 al 9 cada segundo (aproximadamente)...  Primero se inicializa en 0 y espera la orden de inicio del pulsador, luego empieza el conteo y al llegar a 9 comienza otra vez, si se vuelve a presionar el pulsador, regresa a cero y espera por una nueva orden de inicio.

El cálculo del tiempo de interrupción es así: Xtal = 4Mhz, Prescale = 64, timer 1 = 16 bits (65535)
64/4000000 = 0.000016; 0.000016*65535 = 1.04856 seg. Al menos eso dice la teoría  :mrgreen:

Este es el código:

' Prueba de Interrupciones de Timer
' Trabaja con el circuito TimerInt2 de Proteus
' Display en Pb
' Control  en Pd.1
' Testigo en Pd.0


'$sim
$crystal = 4000000
Config Portb = Output
Config Timer1 = Timer , Prescale = 64
Enable Interrupts
On Timer1 Refres

Ddrd.0 = 1                                                  ' d0 como salida
Portd.0 = 1
Ddrd.1 = 0                                                  ' d1 como entrada
Portd.1 = 1


Disp Alias Portb
Ctrl Alias Pind.1
Test Alias Portd.0

Dim Aux As Byte

Inicio:
Disable Timer1
Disp = &H40                                                 'Presenta 0 en el display
Set Test                                                        'Apaga el led
Waitms 250                                                  'No es necesario, solo para estabilización y antirebote además del debounce
Aux = 0
Bitwait Ctrl , Reset                                         'Espera a que se presione el pulsador
Reset Test                                                     'Prende el led
Enable Timer1
Do
Debounce Ctrl , 0 , Inicio                                'Si se presiona el pusldador, salta a Inicio
Loop

Refres:
Incr Aux
If Aux = 10 Then
   Aux = 0
End If
Disp = Lookup(aux , Tabla)                           'Busca en la tabla el dato en la posición Aux y lo presenta en el Display
Return


Tabla:
Data &H40 , &H79 , &H24 , &H30 , &H19 , &H12 , &H02 , &H78 , &H00 , &H10



Saludos!
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: Vinho en 10 de Junio de 2006, 13:56:10
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!!

Sobre esto me faltó explicar que estaba usando la sentencia "Debounce"... Y para variar, no leí bien el manual  :mrgreen:
Mi error era que con la opción Debounce, el programa saltaba a una subrutina, de la cual quería regresar. Para hacer eso hay que añadir un ",sub" al final de la instrucción porque sino es un simple salto (lo mismo ocurre con Gosub y Goto).
Ej: Debounce Pinb.3, 0, Rutina, Sub

Saludos!
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: Vinho en 15 de Junio de 2006, 19:44:19
Hola gente!
Aqui les dejo un ejemplo de uso de LCD y de ADC interno del Mega8...
No lo he construido aún, en el simulador de Bascom funciona muy bien, pero en Isis presenta algunos problemas (http://www.todopic.com.ar/foros/index.php?topic=1197.0 )
El ejemplo consiste en un voltímetro de cc q mide de 0 a 5V, la lectura es presentada en un LCD 2*16
Él código es:

' Voltímetro con ADC interno, LCD y Mega8
' Mide de 0 - 5 Vdc

$crystal = 4000000

Dim Volt As Single
Dim V As String * 4
Dim Aux1 As Word

Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2

Config Adc = Single , Prescaler = Auto , Reference = Avcc   'config ADC

Config Lcd = 16 * 2

Start Adc
Do
   Aux1 = Getadc(0)
   Volt = Aux1 * 5
   Volt = Volt / 1024
   V = Fusing(volt , "#.##")          'Redondea los decimales de un dato tipo single y lo transforma en string
   Lcd "V = " ; V
   Waitms 200
   Cls
Loop


Si alguien se anima a simularlo o construirlo, espero que publique los resultados  :-)

Saludos!
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: Vinho en 29 de Junio de 2006, 20:17:25
Hola gente

He hecho algunos experimentos con PWM en Proteus y hasta ahora no logro que funcionen bien, estoy casi seguro que es prblema del simulador, pero hasta que no los arme prefiero no postearlos... Sin embargo les dejo este ejemplo básico de PWM con Bascom...  Se trata de sacar una señal PWM por 1a (pin 15 del mega8) al 20% y por 1b (pin 16) al 80%. Como se muestra en el circuito, es fácil llevar esta señal a un motor por ejemplo.

El código es:

$regfile = "m8def.dat"
$crystal = 4000000

Config Pinb.1 = Output
Config Pinb.2 = Output

Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Compare B Pwm = Clear Up , Prescale = 1

Do
 Compare1a = 205
 Compare1b = 51
Loop

End

Como ven, 1a se carga con 205 (80%) y 1b(20%) con 51, la suma de ambos es 256 (100%). Esto es así porque elegimos Pwm=8 o sea de 8 bits, pero el comando Comapre A Pwm = Clear Up, es una especia de negación. Pwm también puede cargarse con 9 0 10 bits, para obtener un control más fino (mayor número de pasos).

La configuración de pines me parece que está de más, porque creo que es autmática cuando se configura el Tmer como PWM.

Saludos!

Título: Hermano acolitate con la conexion para el atmega8
Publicado por: Fabro en 27 de Noviembre de 2006, 15:12:37
Lo que pasa es que no se muy bien como conectar los pines del programador ISP para el atmega8 porque en el diagrama que tiene Bascom me indica un Clock que de seguro es un emporizador y ademas la fuentes no se como conectar y tambien que es eso de STK200 y STK 300, en si necesito tu ayuda Mastro de Maestros... El problema de la programacion esta superado...
Fabricio Pillajo (UP Salesiana)
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: Blanca Sánchez en 18 de Febrero de 2008, 04:51:36
WUAW!

Me encanta este hilo. Gracias a él he podido aprender mucho sobre AVR's y BASCOM. Aunque estoy empezando, he podido hacer algunas cosas sencillas que ya podía hacer con los pics... Pero otras no.... Por ejemplo, Una herramienta muy valiosa cuando se trabajan con LCD's es la creación de caracteres especiales. BASCOM te permite crear el caracter que desees con solo dibujarlo dentro de la ventana LCD Designer:

(http://img264.imageshack.us/img264/6017/dibujoiv4.png)

Una vez que terminas el diseño, le das clic en Ok e inmediatamente inserta la instrucción en tu programa. Debes recordar que despúes de crear un nuevo caracter, debes insertar la instrucción CLS.

WUAW!

P.D. Lo irónico es que nunca entendí como hacerlo con los pics...  :shock: :D
P.D.2. Si también estás aprendiendo a programar en BASCOM, checa los programas que vienen en el propio BASCOM-AVR Help. Muy buenos!!!
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: stk500 en 18 de Febrero de 2008, 05:00:23
asi mismo Srta Blaanca!
con Bascom puede diseñar tu LCD muy facil sin tener que usar programa complicado como otros Mcu,
y debo decirte que yo uso Bascom y cualquier cosas que podamos ayudarte aqui estamos
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: Meta en 18 de Febrero de 2008, 05:14:35
LCD STUIDO

Programa gratuito de diseños de gráficos para los GLCD (LCD Gráfico). Se puede aumentar sus funciones mediante plugins.

Si encuentran programa para LCD de 2x16 gratuito,mejor que mejor.

(http://www.tweakers.net/ext/i.dsp/1052561032.jpg)

(http://scr.softonic.com/s2/61000/61865/4_3.jpg)


http://www.lcdstudio.com/
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: Blanca Sánchez en 18 de Febrero de 2008, 05:23:09
Hola:

Esa es otra de las cosas que no he hecho con los pics... el manejo de GLCD... WUAW!


Gracias stk500 por tus comentarios... siempre es bueno saberlo.

Para agregar otro detalle muy interesante al manejo de LCD con BASCOM, es que puedes asignar a cada pin del LCD cualquier pin de cualquier puerto del AVR!!!. Esto te permite simplificar MUCHO tu PCB pues te ofrece la posibilidad de conectarlo de acuerdo a los pines libres que tengas.

(http://img517.imageshack.us/img517/9854/dibujo2zq7.png)

Algo que me gustaría hacer que no he hecho con los pics es leer y escribir en una memoria... espero agregar algo a este mensaje poniendo un programita...
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: stk500 en 18 de Febrero de 2008, 07:35:37
aqui os pongo diversos Ej. de Bascom con LCD
http://www.qsl.net/pa3ckr/bascom%20and%20avr/using%20an%20lcd/index.html
http://www.avrprojects.net/articles.php?lng=en&pg=70
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: migsantiago en 18 de Febrero de 2008, 20:27:40
Hola

Blanca, aquí en el foro el amigo Palitroquez diseñó un software muy bueno para dibujar en la LCD con código asm o con lenguaje C usando PICs...

(http://img49.imageshack.us/img49/1848/asm2apx8.jpg)

Aquí el tema en donde publica gratis su programa, con todo y código  :mrgreen:

http://www.todopic.com.ar/foros/index.php?topic=14552.0
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: stk500 en 04 de Julio de 2008, 03:14:17
Un Saludo a las gente de AVR Bascom, esto por aqui esta algo abandonados y estoy abriendo mi Baul donde tengo muchas cosas para hacer con Bascom, esperando que nuestros amigo Olotill venga por aqui y me aclare muchas dudas, de momento estoy haciendo un teclado con LCD y es un Ejempo demo integrado en Bascom pero no consigo simularlo bien para que me salga los display
aqui esta el ejemplo
$regfile "m32def.dat"
 
$crystal = 8000000

$lib "Lcd_i2c.lib"                                          'Mi controlador para el LCD
$lib "Key_i2c.lib"                                          'Mi i2c teclados
$external _key_scan                                         'activa la routina

Config I2cdelay = 1

Const Pcf8574_lcd = &H40                                    'Define la direciones de los I/O expander para LCD
Const Pcf8574_kbd = &H42                                    'Define la direcion de los I/O expander para KBD
!rcall _Key_Init                                            'llamamos la inicializacion de la routina (necesario si int controla)

Config Scl = Portd.6                                        'Configura i2c SCL
Config Sda = Portd.7                                        'Configura i2c SDA
Dim _lcd_e As Byte                                          'Necesario para control de 4 line del LCD
Dim _key_scan As Byte                                       'Volvemos a la Tecla desde tecla Scan

Enable Interrupts
Config Int0 = Falling                                       'Int señal para PCF8574_KBD esta connectedo en INT0
'Enable Int0                                                 'Don't enable until it should be used (after LCD-test)
On Int0 _int0_label                                         'Procedure to call upon interrupt

'_lcd_e = 128 select E1, 64 select E2, 192 select both (for CLS or DefLCDChar etc.)
_lcd_e = 128                                                'Upper half of 4-line display is selected

'Here the LCD test program that is included in BASCOM follows
'and at the end there is a demo of the keyboard scan routine

Dim A As Byte
'Config Lcd = 40 * 4                                         'configure lcd screen
'other options are 16 * 4 and 20 * 4, 20 * 2 , 16 * 1a
'When you dont include this option 16 * 2 is assumed
'16 * 1a is intended for 16 character displays with split addresses over 2 lines

'$LCD = address will turn LCD into 8-bit databus mode
'       use this with uP with external RAM and/or ROM
'       because it aint need the port pins !
' Put your own strings here
Cls                                                         'clear the LCD display
Lcd "Hello world."                                          'display this at the top line
Wait 1
Lowerline                                                   'select the lower line
Wait 1
Lcd "Shift this."                                           'display this at the lower line
Wait 1
For A = 1 To 10
   Shiftlcd Right                                           'mover el texto a la derecha
   Waitms 250                                               'esperar un momento
Next

For A = 1 To 10
   Shiftlcd Left                                            'mover texto a la izquierdad
   Waitms 250                                               'esperar un momento
Next


Locate 2 , 1                                                'ponemos el Cursor en posicion set cursor position
Lcd "*"                                                     'display esta en
Wait 1                                                      'eperar un momento

Shiftcursor Right                                           'mover el cursor del display
Lcd "@"                                                     'display esta en
Wait 1                                                      'esperar un momento

Home Upper                                                  'selecionamos linea 1 y retornamos a home
Lcd "Replaced."                                             'replace el texto
Wait 1                                                      'esperamos un momento

Cursor Off Noblink                                          'escondemos el curso
Wait 1                                                      'esperamos un momento
Cursor On Blink                                             'mostramos el cursor
Wait 1                                                      'esperamos un momentos
Display Off                                                 'apagamos el cursor
Wait 1                                                      'esperamos un momentos
Display On                                                  'encendemos el cursor
'-----------------Support for line 3 and 4 is controlled via _lcd_e
_lcd_e = 64
Lcd "Line 3"
Lowerline
Lcd "Line 4"
Wait 1
_lcd_e = 192                                                'select both halfs for defining characters
'Now lets build a special character
'the first number is the characternumber (0-7)
'The other numbers are the rowvalues
'Use the LCD tool to insert this line
Deflcdchar 2 , 32 , 10 , 32 , 14 , 17 , 17 , 17 , 14        ' replace ? with number (0-7)
Deflcdchar 0 , 32 , 4 , 32 , 14 , 18 , 18 , 18 , 13         ' replace ? with number (0-7)
Deflcdchar 1 , 32 , 10 , 32 , 14 , 18 , 18 , 18 , 13        ' replace ? with number (0-7)
_lcd_e = 128
Cls                                                         'select data RAM
Rem it is important that a CLS is following the deflcdchar statements because it will set the controller back in datamode
Lcd Chr(0) ; Chr(1)                                         'print the special character

'----------------- Now use an internal routine ------------
_temp1 = 2                                                  'value into ACC
!rCall _write_lcd                                           'put it on LCD



'Display pressed key value on LCD

Do

Enable Int0                                                 'Now I could accept input from Keyboard
If _key_scan > 0 Then                                       'As the keyboard is interupt driven I could do like this!
   Disable Int0                                             'Disable Int0 during LCD output due to the fact
   Locate 2 , 10                                            'that _Key_Scan also uses i2c (garbled output is likely)
   Lcd _key_scan ; " "
   Enable Int0
End If

Loop
End

_int0_label:
!rcall _Key_Scan
Return
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: K4NON en 07 de Marzo de 2009, 18:27:10
una pregunta respecto al programa que usan

que diferencia existe entre avr- bascom y el avr studio
las instrucciones son las mismas ?
es lo mismo programar en uno que en otro
cabe resaltar que estoy iniciando en esto y estoy
en etapa de recolectando conocimiendo de micros

gracias
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: stk500 en 08 de Marzo de 2009, 09:13:16
una pregunta respecto al programa que usan

que diferencia existe entre avr- bascom y el avr studio
las instrucciones son las mismas ?
es lo mismo programar en uno que en otro
cabe resaltar que estoy iniciando en esto y estoy
en etapa de recolectando conocimiendo de micros

gracias
No, no es los mismo, Bascom es Basic y AVRstudio es Assembla.

Saludo
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: mixi en 31 de Agosto de 2009, 13:30:28
ke paja jeje yo solo he programado atmega8 con assembler ahora me ha dado mucha curisosidad hacerlo en basic jejje diganme por favor  donde puedo encuentro mas infomacion y ejemplos  acerca de la programacion en basic para el micro atmeg8
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: stk500 en 31 de Agosto de 2009, 13:33:53
Hola Mixi y Bienvenido al Foro todopic!
Si comienza desde el principios todos los mensaje te dara cuenta de muchas cosas
en bascom tambien se puede programar con Assembler.
Saludo
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: mixi en 31 de Agosto de 2009, 14:03:17
jeje gracias rafa,bueno ahora ire chekeando los progrmas ke pongan en basic.. dime en el bascom hay algun menu de ayuda que te explike las instrucciones bacic  ke se usan???   eske solo se assembler y  hace mucho tiempo ke no practiko c o basic
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: stk500 en 31 de Agosto de 2009, 14:56:22
jeje gracias rafa,bueno ahora ire chekeando los progrmas ke pongan en basic.. dime en el bascom hay algun menu de ayuda que te explike las instrucciones bacic  ke se usan???   eske solo se assembler y  hace mucho tiempo ke no practiko c o basic
Pues claro que en Ayuda te explica todos, con la version DEMO puede programar micro hasta 4Kbi, por ejemplo el attiny2313, y hay muchos ejemplo en la web de bascom con el attiny2313.http://www.mcselec.com/
Saludos
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: egofrn en 15 de Noviembre de 2009, 20:57:48
Hola a todos.... estoy iniciandome en la programacion de microcontroladores atmega.
Actualmente me encuentro realizando un termometron digital... La programacion la realice en basic y uso el Bascom-AVR..
Hasta el momento realizo el sensamiento con el sensor LM35, los datos los convierto internamente en el atmega48 usando el ADC y visualizo los datos en displays de 7 segmentos.
Ahora, lo que yo quiero es saber como puedo enviar la informacion de la temperatura del micro al computador usando el puerto serial DB9.
ya tengo la parte del hardware, uso el max232 y el conector db9...
Lo que no se es como programar al micro (Que instruccion usar) para enviar la informacion...
Les agradezco toda su ayuda..
Saludos
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: stk500 en 16 de Noviembre de 2009, 05:28:06
Hay varias forma de implementarlo, si pusiera tu codigo aqui talvez te pueda ayudar en lo que pueda, no olvide que puede implementar los dos lenguaje con el Bascom (Basic y Assembler) .
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: egofrn en 16 de Noviembre de 2009, 15:54:35
Hola esta es la programacion del atmega.... Solo necesito la instruccion para enviar los datos por el db9
tengo entendido que puedo usar el print pero no se como espicificar el dato a enviar
Espero me puedan ayudar

$regfile = "m48def.dat"                                    
$crystal = 8000000                                        
$baud = 19200                                              
$hwstack = 32                                              
$swstack = 10                                              
$framesize = 40                                          

Config Portb = Output                                      
Config Portd.2 = Output                                  
Config Portd.3 = Output                                    
Config Portd.4 = Output                                    
Config Portd.5 = Output                                    
Config Adc = Single , Prescaler = Auto , Reference = Avcc   'configuracion ADC 10bits

Dim Lectura As Word                                         'variable guarda la lectura del ADC
Dim Temperatura As Single                                   'conversion a milivoltios de la lectura (10mV/ºC)
Dim Temp_entero As Integer                                  'valor entero de la temperatura
Dim Temp_decenas As Word                                    'decenas de la temp a mostrar
Dim Temp_unidades As Word                                   'unidades de la temp a mostrar
Dim Temp_simbolo As Byte                                  
Dim Digito As Byte                                          
Dim Indice As Byte                                        


Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Config Serialout = Buffered , Size = 254



Start Adc                                              

Do



   Lectura = Getadc(0)                                      'leer el ADC canal 0 pin 23 sensor de temperatura
   Temperatura = Lectura * 0.49                             'convertir a milivoltios
   Temp_entero = Temperatura                                'convertir a entero
   Temp_decenas = Temp_entero / 10                          'calcular las decenas
   Temp_unidades = Temp_entero Mod 10                       'calcular las unidades


   Temp_simbolo = &H46                                    

   For Indice = 1 To 64                                     'enviar los digitos a los display usando multiplexacion
      Portd.2 = 0                                        
      Portd.3 = 0
      Digito = Lookup(temp_decenas , Patrones)            
      Portb = Digito                                        
      Portd.4 = 1
      Waitus 600

      Digito = Lookup(temp_unidades , Patrones)          
      Portd.4 = 0
      Portd.2 = 0
      Portb = Digito
      Portd.3 = 1                                          
      Waitus 600

      Portd.3 = 0
      Portd.4 = 0
      Portb = Temp_simbolo                                
      Portd.2 = 1                                          
      Waitus 500
      Portd.2 = 1
   Next Indice





Loop                                                        

Patrones:                                                   'tabla con los patrones que forman los numeros del 1 al 9
Data &H40 , &H79 , &H24 , &H30 , &H19 , &H12 , &H02 , &H78 , &H00 , &H10
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: stk500 en 16 de Noviembre de 2009, 18:45:25
pues bien he estado buscando en mis archivo una forma facil y que lo comprenda, primero deberia Dimensionar las variables que va usar, aqui te dejo una pagina de ejemplo como se podria hacer  http://www.qsl.net/pa3ckr/bascom%20and%20avr/multitemp/index.html        ahi trae su correspondiente codigo.
cualquier cosas que no comprenda estaremos en contacto.
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: egofrn en 17 de Noviembre de 2009, 01:20:32
Hola, gracias por la informacion, pero lastimosamente no me sirve... En esa pagina solo habla de la funcion que realiza cada componente del circuito, mas no de programacion.
Ademas, si te fijas en la programacion que publique, ya tengo dimensionadas las variables (Temperatura)
Lo que quiero saber es como enviar la informacion al PC y que programa utilizar para ver los datos en forma grafica...
Segun la ayuda que posee el bascom, me dice que se envian los datos usando la instruccion "Print", pero no se como usarla especificamente para enviar los datos del adc (temperatura)
Saludos
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: stk500 en 17 de Noviembre de 2009, 04:01:55
hay no solamente habla de cada funcion sino el codigo como esta hecho, yo ahora mismo no estoy trabajando con serial, pero si usara la ayuda que pone en bascom y viendo que si tu realizaste ese programa tambien lo puede realizar con la ayuda, para ver los datos puede usar el Terminal de window y claro deberia hacer tu mismo el programa con Visual Basic, pero te aconsejo, que si instala la platina y el sensor a larga distancia va a tener problema, hay varios factores que debe tener en cuenta al enviar datos por la UART ,  claro si lo que quiere solo es leer la temperatura no te serviria programar nada en Visual basic, solo te serviria configurar tu la Uart de tu PC (Baudrate)
aqui te pongo otros link mas claro http://members.home.nl/bzijlstra/software/examples/AVRIO.htm
me gustaria ayudarte pero yo no tengo ningun sensor de temperatura para ayudarte, aunque pensandolo bien puede servir cualquier ejemplo de explicacion que trabaje con la Uart de envio de datos. en este mismo hilo escribi yo algo sobre envio de la Uart , mejor que te lo lea tambien.
Saludos
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: cristian_elect en 18 de Noviembre de 2009, 14:29:19
Aqui tengo un ejemplo pequeño de LM35 salida por UART en un atmega8.

$regfile = "M8DEF.DAT"
$crystal = 8000000
$baud = 9600
$hwstack = 32
$swstack = 10
$framesize = 40

Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0

Dim Temp_adc As Word , Valor_temp As Single , Valor As String * 5
Config Adc = Single , Prescaler = Auto
Start Adc
do
Temp_adc = Getadc(1)
Valor_temp = Temp_adc * 0.49
Valor = Fusing(valor_temp , "###.##")
Print Valor
loop
end

En bascom siempre el print finalisa en "ENTER" 10 y 13 al final de la cadena.
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: Jesulin en 09 de Marzo de 2010, 14:29:47
Hola foreros!

Una pregunta, necesito hacer la conexion entre un ATMEGA2560 y un MMC card, pero no tengo idea de como se hace la programacion! Alguien ha visto algun ejemplo en BASCOM?

Muchas gracias!
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: stk500 en 09 de Marzo de 2010, 15:13:54
Hola, si usara el google lo encuentra, mira aqui http://staff.ltam.lu/feljc/electronics/bascom/Speicherkarten_Low_Level.pdf
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: CoreMain en 16 de Abril de 2010, 02:09:36
Hola a todos!!!!

Ojalá me puedan ayudar. Necesito aprender a manejar un GLCD con Bascom, para empezar, me podrían recomendar el GLCD mas comun (de 240*128 sería suficiente) como el controlador que utiliza, lo que me confunde es es uso de las librerias y fuentes... (En fin ni para atras ni para adelante con eso xD)...
Si pudieran subir un ejemplo básico, se los agradecería un monton!!!!!
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: stk500 en 16 de Abril de 2010, 03:07:39
Hola a todos!!!!

Ojalá me puedan ayudar. Necesito aprender a manejar un GLCD con Bascom, para empezar, me podrían recomendar el GLCD mas comun (de 240*128 sería suficiente) como el controlador que utiliza, lo que me confunde es es uso de las librerias y fuentes... (En fin ni para atras ni para adelante con eso xD)...
Si pudieran subir un ejemplo básico, se los agradecería un monton!!!!!
Hola no te aconsejo un 240x128 porque no lo conozco, pero si entra a la pagina de AVR BASCOM Aqui  (http://www.mcselec.com/index.php?option=com_content&task=category&sectionid=7&id=79&Itemid=57) y buscara entre la Aplicaciones encontrara este AN #148, estudiatelo y cualquier cosas nos comenta. lo que no estoy seguro si esta la libreria en la Version DEMO. ejemplo de Bascom es dificil de subir ya que las libreria son Copyright, lo que se podia es comentar parte de la libreria o poner alguna parte como comentario, nada mas.
Título: Problemas para manejar servos con bascom avr
Publicado por: Gus-Mar en 25 de Abril de 2010, 20:11:18
Queria comentarles el problema que tengo tanto para manejar servos con attiny2313 como con atme48:
Utilizo en el atmega48 su reloj interno de 8mhz. La funcion pulseout cada 20ms, enviando pulsos de entre 1000 a 3000. El servo si bien es digital (e-sky) en sus especificaciones concuerda con el manejo de un analogico.
El problema que tengo que en proteus funciona bien, pero al volcarlo a la practica, sin utilizar cristal externo dado que utiliza el interno, no funciona bien, es muy erratico. Probe de muchas maneras pero sin tener resultados.
Copie programas para menejar servos con identicos resultados.
La verdad que ya no tengo idea de que puede estar pasando. Uso los fuses de origen.
Dada la experiencia de ustedes, me pueden orientar de que error estoy cometiendo? Seran los fuses, el clock, algun componente que no ponga en la placa?
Lo mismo me pasa si en vez de un servo coloco en bec(control de motores brushless).

Desde ya gracias
Gustavo
Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: cabritillo en 15 de Octubre de 2010, 23:11:44
 Los programas test del BASCOM con el ATMEGA8 me han ido bien en CASI todo:
 + Manejando LCDs Hitachi 2*16 muy bien.
 + Midiendo voltages via con el conversor ADC
 + Comunicacion RS232 con el PC.

 Y ha sido bastante facil traducir el software de PICBASIC (donde empecé a trabajar) a BASCOM (donde migré ante la espectacular bajada de precio del Mega8 via eBay)

 Sin embargo, donde he notado un vacío ENORME respecto a PICBASIC es en la carencia de la funcion PWM sin mas.

 BASCOM produce la PWM mediante la funcion CONFIG TIMER dado que se adapta al ensamblador Atmel que
usa el PWM actuando sobre los 3 Timers de hardware.
 
 He visto en estos post algun ejemplo aclaratorio que me ha parecido muy bueno sobre PWM de 8 bit.

 Sugiero alguno más sobre este tema, si es posible de 10 bit , aprovechando asi la máxima capacidad
en lo que a precision se refiere del Mega 8.

 El motivo es que los ejemplos de la ayuda del Bascom en este terreno son muy oscuros y nada aclaratorios.

 Y no digamos ya las explicaciones de Atmel en el PDF del chip que son UNA VERDADERA PESADILLA.
 
 Animo muchach@s, que no falten ejemplos, que son la sal de la vida  :P

 Y la pimienta la competencia.
 En donde BASCOM ha fallado ha aparecido otro pisando fuerte:
http://www.mikroe.com/pdf/mikrobasic_avr/mikrobasic_avr_manual.pdf

 Dentro hay otro lenguaje BASIC para AVR, pero donde se incluye una librería ESPECIAL para PWM que ya quisiera BASCOM.

 Con ella se puede programar el PWM con absoluta claridad y potencia.
 Pero ojo, hablo solo en teoría.
 La práctica y el tiempo dirá si en fiabilidad o en confianza de sus usuarios, MikroBasic llega al nivel de BASCOM.
 
 

Título: Re: EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: cristian_elect en 15 de Octubre de 2010, 23:40:58
Claro que hay en bascom pwm 10bits depende del timer que uses. Tambien pwm de 16bits.
Un ejemplito.

$regfile = "m8def.dat"                                      
$crystal = 8000000
$baud = 9600
$hwstack = 32
$swstack = 8
$framesize = 24

Config Timer1 = Pwm , Prescale = 1 , Pwm = 10 , Compare A Pwm = Clear Down , Compare B Pwm = Clear Down
Config Adc = Single , Prescaler = Auto
Dim W As Word
Ddrb = 6
Start Adc
Do
W = Getadc(0)
Compare1a = W
W = Getadc(1)
Compare1b = W
Loop

End
Título: BASCOM ATMEGA8 SEMÁFORO
Publicado por: juanpy18 en 11 de Abril de 2016, 14:52:27
Código: [Seleccionar]
regfile = "m8def.dat"
$crystal = 8000000

Config Portb = Output

Semaforo Alias Portb
Semaforo = &B00000000

Declare Sub Parpadeo1()
Declare Sub Parpadeo2()

Dim X As Byte

Do

Semaforo = &B10000100

   Wait 5

      Gosub Parpadeo1

Semaforo = &B01000100

   Wait 3

Semaforo = &B00110000

Wait 5

      Gosub Parpadeo2

Semaforo = &B00101000

Wait 3

Loop
Sub Parpadeo1()
For X = 1 To 4
 Semaforo = &B00000100
   Waitms 200
   Semaforo = &B10000100
   Waitms 200
Next
   End Sub
   Return
Sub Parpadeo2()

For X = 1 To 4
   Semaforo = &B00100000
   Waitms 200
   Semaforo = &B00110000
   Waitms 200

Next
   End Sub
   Return


 End
Título: Re:EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: Genaro Miranda en 19 de Abril de 2016, 00:32:03
Hola!! pero cuales son los colores rojo,verde y amarillo? ((:-))
Título: Re:EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: Genaro Miranda en 24 de Julio de 2016, 20:32:07
Hola!! Amigo forero Bascom AVR!!!
Buenos ya corregi hoy mismo los hice en media hora. :-/ :-/ :-/

Código: [Seleccionar]
$regfile = "m16adef.dat"
$crystal = 4000000
$hwstack = 40
$swstack = 16
$framesize = 32

Config Portb = Output

Semaforo Alias Portb
Semaforo = &B00000000

Declare Sub Parpadeo1()
Declare Sub Parpadeo2()

Dim X As Byte

Do

   Semaforo = &B11111011

   Wait 5

   Gosub Parpadeo1

   Semaforo = &B11111101

   Wait 3

   Semaforo = &B11111111

   Wait 1


   Semaforo = &B11111110

   Wait 5

   Gosub Parpadeo2

   Semaforo = &B11111101

   Wait 3

   Semaforo = &B11111111

   Wait 1




Loop

  Sub Parpadeo1()
    For X = 1 To 4
     Semaforo = &B11111011
     Waitms 200
     Semaforo = &B11111111
     Waitms 200
    Next
    End Sub
    Return
  Sub Parpadeo2()

   For X = 1 To 4
    Semaforo = &B11111110
    Waitms 200
    Semaforo = &B11111111
    Waitms 200
   Next

   End Sub

   Return

End

Algun mas ejemplo? :D :-) ((:-))

Saludos!!
Título: Re:EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: cosmic en 25 de Marzo de 2017, 22:57:56
Hola amigos. :)
Al trabajar con bascom avr o Atmel studio, ya sea con Atmega328-pu, de 28 pines O Attiny45.
Configurando el modulo adc, y creando un PWM por cualquiera de sus salidas apta para esto
Veo que con todos los canales adc de alguno de los dos micros, el PWM trabaja perfecto
Menos con el CANAL0 adc.
El cual al llegar el voltaje de la entrada ADC0, A 2.0 voltios la salida PWM se apaga.
no barre de 0 a 5 voltios como lo hace con los otros canales, repito esto pasa sólo con la entrada ADC0.
Aun asi, haciendo la simulación en proteus, esta si lo hace bien, mas no en montaje real.
Hay algo sobre este pin que deba habilitar para que trabaje bien, la conversión.
estoy usando voltaje de referencia 0 A VCC 5 VOLTIOS., con el que trabaja el micro, sin referencia externa. :(
Título: Re:EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: stk500 en 26 de Marzo de 2017, 12:16:10
Hola cosmic,
el adc0 deberia funcionar como los otros cuatro, primeramente leerte el datasheet del Atmega8 sobre el ADC, porque creo que hay 2 o 3 ADC que trabajan a 16bit, no estoy seguro, habia que ver como tiene configurado tu codigo..
ojo no uso Proteus porque no confio en sus Simulacion..  yo te aconsejo , si esta aprendiendo a programar con BascomAVR que te haga una PCB de esperimento y asi saldra´de muchas dudas a la hora de simular tus codigo...
y como decia, sin ver tu codigo va ser dificil tus errores... y sobre el circuito..

Saludos
Título: Re:EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: cosmic en 26 de Marzo de 2017, 12:33:30
Hola amigo STK500.
Me estoy apoyando sobre el datasheet, en este momento trabajo el attiny45.
Claramente dice que el conversor ADC para este chip es de 10 bits de aproximaciones sucesivas.
El montaje, si lo tengo en protoboard y así hago la comparación en proteus, lógico que proteus obvia muchas cosas. Lo curioso es que los tres ADC restantes trabajan bien y barren de 0   A 5voltios, mientras que el ADC0, no lo hace.
No tengo el código a mano, pero te lo subo después.
Título: Re:EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: stk500 en 27 de Marzo de 2017, 16:42:40
Hola amigo STK500.
Me estoy apoyando sobre el datasheet, en este momento trabajo el attiny45.
Claramente dice que el conversor ADC para este chip es de 10 bits de aproximaciones sucesivas.
El montaje, si lo tengo en protoboard y así hago la comparación en proteus, lógico que proteus obvia muchas cosas. Lo curioso es que los tres ADC restantes trabajan bien y barren de 0   A 5voltios, mientras que el ADC0, no lo hace.
No tengo el código a mano, pero te lo subo después.

Ojo! que el ADC0 es el pin de RESET y para programarlo debe activarlo con los Fuses, pero OJO si porgrama el ADC0 como ADC va a tener problema para programarlo otra vez, yo uso muchos el ATTiny45 y cuando uso el ADC solo uso dos pines, asi que si quiere tener mas ADC y sin complicaciones mejor el Atmega8 que tiene 6 ADC en 10bit modo... 

Saludos

Título: Re:EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: cosmic en 27 de Marzo de 2017, 17:09:14
Hola amigo STK500.
Por ahí si es la cosa, y me estaba preguntando, como programar este pin como I/O, pues en los PICs, se puede usar reset interno, y dejar el pin como I/O
No necesito mas entradas ADC, era sólo la curiosidad de que pasaba. Tu respuesta es muy lógica. ((:-)).
Aunque según he leido, el micro se puede seguir programando con un programador HV, por puerto serie.
Ahora si estoy empezando con los AVR, pues me aburrieron los PICs, molestan mucho.
Título: Re:EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: cosmic en 28 de Marzo de 2017, 01:42:08
Saludos a todos.
Estoy tratando de usar lectura de teclado matricial con la librería de Bascom.
pero al conectar el teclado de N mil formas no logro que funcione, he hecho conexiones como lo sugiere  la ayuda del bascom, peo nada, solo logro ver códigos repetidos para diferentes teclas, y en la mayoría de ejemplos, veo que usan de otra manera el teclado, programando y leyendo pin a pin del puerto, lo cual se me hace muy largo y engorroso.
Ahí dejo el código a ver que tengo mal.

'**************************************
Código: [Seleccionar]
$regfile = "m328pdef.dat"
 $crystal = 8000000

 $baud = 9600
 $hwstack = 40
 $swstack = 16
 $framesize = 32


 Dim Volt As Single
 Dim V As String * 4
 Dim Aux1 As Word
 Dim B As Byte


 Config Portc = Output

 Config Kbd = Portb



 Do

 B = Getkbd()
 If B < 16 Then
 Print B
 End If


Loop

Título: Re:EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: stk500 en 28 de Marzo de 2017, 03:37:33
Creo que te esta liando, deberia comenzar con la Uart haciendo ejemplo pequeños,
tambien comenta que esta' usando la Libreia del teclado de bascom  y en tu codigo no aparece ninguna Libreria,

Dime que version de Bascom usa y si es la version Demo

Saludos
Título: Re:EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: cosmic en 28 de Marzo de 2017, 10:56:23
Curioso lo que me dices, éste código lo saqué de la ayuda de bascom AVR, sólo que viene para un Atmega 168 ,y lo cambie al 328p, pues es el que tengo.
La versión de bascom, pues ahora mismo no
Estoy en eso, pero es 2.xx.
Ya hice ejemplos Uart, LCD , Display 7s, ADC.
Pulsadores, interrupciones, y todo anda bien
Ahora quiero combinar Uart, con teclado y LCD.
Título: Re:EJEMPLITOS DE BASCOM AVR... ATMEGA8..
Publicado por: duverin en 04 de Marzo de 2018, 16:05:58
estimados quien podria ayudarme en hacer un programa en bascom para saber el tiempo de muestreo de un sensor  :-/ :-/ :-/