Mostrando entradas con la etiqueta usbasp. Mostrar todas las entradas
Mostrando entradas con la etiqueta usbasp. Mostrar todas las entradas

3 ago 2010

Cuando lo analogo se vuelve digital.

Bien, en esta entrada vamos a usar el ADC del Atmega8. ADC es el acronimo en inglés para Conversor Analogo Digital. Existen muchos elementos analogos que podemos usar a travez del ADC: Fotoceldas, termopares(para medir temperatura), sensores de presión, sensores de distancia, etc. En este caso vamos a usar una LDR (Resistencia Dependiente de la Luz) para saber si nuestro dia esta nublado (ok es medio inutil, pero algun ejemplo hay que dar). Para hacerlo mas interesante, vamos a agrega un boton para establecer el umbral de cambio.

Vamos a usar el mismo conexionado de Programus Interruptus. Con la excepción de que vamos a icluir una LDR y una resistencia de, digamos, 1Mohms.


Ahora vamos a elegir las opciones para nuestro Atmega8. Quedando asi:

Notemos que he dejado el bit 3 del puerto D como entrada con resistencia pull-up, de este modo no tenemos que agregar la resistencia de 10kohms externa.


El programa se encuentra aqui. Incluye las explicaciones.

Algunos ya se habran dado cuenta de que copiar el programa tal cual se los entrego sobreescribe todas las opciones que elegimos al generar el proyecto con el CodeWizard. No obstante sigo haciendolo por cuestiones didacticas.

En la siguiente entrada vamos a agregar una cosita mas. Algo llamado PWM.

Los quiero banda. Comenten.

2 ago 2010

A manera de Repaso.

Esta entrada puede parecer aburrida, sin embargo puede que sea la mas enriquecedora que hayamos escrito. A travez del tiempo que hemos pasado juntos he ido experimentando formas para poder comunicar la experiencia que yo he adquirido, tratando de evitar las partes donde me he dado de topes en la pared. Como se habran dado cuenta los programas escritos en C (ANSI C en este caso) confunden al sistema HTML que se usa en estos blogs y por tanto no se pueden simplemente pegar. Para tratar de que los programas pasen integros a sus manos, me encontre un sitio que alberga documentos de texto preformateado, asi que ahora pueden simplemente copiar y pegar la totalidad del programa.

Recordemos que el programa vacio nos lo genera el CodeVisionAVR a partir de la Herramienta CodeWizard:


Esta herramienta nos muestra una serie de etiquetas que nos permiten configurar los dispositvos internos del Atmega8 (o cualquier AVR de 32bits que muestre en la lista).

Hasta el momento hemos configurado lo siguiente.-

Chip:
En este caso elegimos la velocidad a la que esta corriendo el Atmega8 (ver "Fusibles. Jefa! ya llego la luz"). Obiamente escogeriamos el Chip Atmega8 u Atmega8L (practicamente es indiferente).



Puertos:

El Atmega8 tiene 3 puertos: B(8 bits) C(6bits) y D(8 bits).
Cada bit de cada puerto puede configurarse como salida, entrada (toogle) o entrada (con resistencia pull-up). Hasta este momento solo hemos usado salida y entrada (pull-up).


Interrupciones Externas:
Aqui elegimos alguno de los 2 pines de interrupciones externas. Éstas, al ser activado el pin establecido interrumpen el programa principal y ejecutan una rutina, dejando al programa continuar despues. El Atmega8 puede configurarse para 2 interrupciones externas INT0 e INT1 (patitas 4 y 5 respectivamente). El metodo de detección puede ser:

Low Level.- Se activa mientras el estado del pin se mantenga en 0 (bajo).
Any Change.- Se activa cada vez que el estado cambia de 0 a 1 o viceversa.
Falling Edge.- Se activa cuando el estado pasa de Alto a Bajo (o a 1).
Risin Edge.- Se activa cuando el estado pasa de Bajo a Alto (1 a 0).


LCD: Nuesto Atmega puede configurarse facilmente para escribir en un LCD de texto. En este caso se elige el puerto y el programa nos muestra que bit(patita en este caso) se conecta a que pin del LCD. Tambien se escoge la cantidad de caracteres del LCD.

























Ariba se muestra el paraesquematico de conexion. En este caso del puerto B.

Esas son las que hemos usado hasta el momento.

Ahora bien. Ya que hemos generado el programa "vacio" con el CodeWizard.

Me declaro ser incapaz de hacer un curso formal de ANSI C, asi que les dejo un vinculo con un curso muy amplio sobre ANSI C.

1 ene 2009

Pues resulta que me compre un Atmega8...

Esto habla un poco de mi y de porque de esta pagina.

Desde que el papá de un amigo me mostró (por ahi por 1985) una computadora que había construido con un kit basado en el Z-80 de Zilog, tuve la inquietud de poder adentrarme en ese mundo de las computadoras mínimas. Por supuesto nunca tuve una de esas cosas, en principio por que tenia yo 10 años en ese entonces y mi familia no andaba como para andar comprando cosas que no entendia. Poco después mi hermano me compro una Commodore 16. Era una maravilla, 16 kb de memoria ram, que después de cargar el lenguaje basic 3.0 dejaban como 12.34kb libres para programar todo aquello que tus sueños te permitieran. Si quería almacenar mis programas tenia una linda Datasette que guardaba en cassettes de audio lo que tu quisieras. Se conectaba a cualquier televisor y aceptaba cartuchos de juegos (que por cierto eran carisimos). Salto temporal.

Aprendí por mi cuenta Computación y Electrónica y hace unos años conocí los PIC. Casi de inmediato compre mi programador y un chip de carga flash y con toda emoción intente hacer prender y apagar un foquito LED. Frustración. El maldito programador no funcionaba con la señales del paralelo de mi pc. "Pruebe en otra computadora" dijeron, como si uno tuviera 2 o 3 maquinas en casa por si falla alguna (la verdad es que hoy en dia si tengo 2, pero eso es otra historia). Conseguí otro programador mas caro pero que tenia un buffer para aceptar cualquier puerto paralelo. Otra frustración. No conectaba con el MPLAB, o mandaba errores de comunicación. Me dispuse a olvidar todo y aparecieron los Picaxe. Son algo asi como PIC's pero con un interprete de basic (ok no es basic, pero dejenme soñar). Una interfaz muy simple te permite programar a travez de diagramas de flujo y además no requieren componentes externos (al menos el PICAXE18A no los requeria). Único problema, cuestan una barbaridad. Por ejemplo un PICAXE18X anda sobre $150.00 Pesos Mexicanotes.

Hace un par de semanas compre un kit para programar AVR's de 8 bits. Incluye Programador, Chip atmega8, software y cable usb. Lo pueden conseguir en ComunidadAtmel. Cuesta $310.00 MX al momento de esta publicación y no me están pagando nada por el comercial.

Estoy maravillado. Estos chips son la neta, cuestan desde $38.00 y se consiguen casi en todo México. Se programan relativamente con facilidad en lenguaje c usando el programa Code VisionAVR C compiler que además hace todos los settings del chip al elegir simples casillas. Posee resistencias pull-up internas switcheables y se programa fácilmente in situ.

Esta pagina plantea dedicarse a sacar el mayor provecho posible del atmega8 pero de la forma fácil. Todos los ejemplos y programas que incluya serán reales y comprobados.