Foro de elhacker.net

Informática => Electrónica => Mensaje iniciado por: Tokes en 25 Agosto 2010, 01:48 am



Título: Mis pequeñas prácticas con microcontroladores
Publicado por: Tokes en 25 Agosto 2010, 01:48 am
Hola a todos:

Debido a la enorme falta de actividad en este subforo con respecto a los microcontroladores, he decidido abrir un nuevo tema en el cual mostraré prácticas sencillas realizadas por mí, para que las personas que no saben o apenas se están introduciendo al mundo de los microcontroladores tengan un apoyo en esta página. Espero, sinceramente, que se unan, si no para compartir, por lo menos para preguntar. Porque, lamentablemente, este foro de electrónica se está perdiendo en la oscuridad.

Como todo, debemos empezar por lo más sencillo; pero como por el momento no tengo nada sencillo que mostrar, me dedicaré a hacer un pequeño programa ilustrativo. Cuando lo acabe lo posteo.

              Por su atención, muchas gracias.

P.D.1: Si no les agrada la idea, por favor absténganse de poner comentarios ofensivos.

P.D.2: La programación de microcontroladores es bellísima... ¡¿QUÉ SUCEDE AQUÍIIIIIIIIIIII?!


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: Debci en 25 Agosto 2010, 15:20 pm
Hombre, pues esta muy pero que muy bien la iniciativa, yo tambien voy a cojerle actividad a esta secion, es algo que me gusta y quiero que haya aqui un mundillo :)

Saludos


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: andres_5 en 25 Agosto 2010, 16:21 pm
a mi tambien me interesa, actualmente estoy buscando info respecto a este tema...
saludos =D


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: Mr.Blue en 25 Agosto 2010, 16:28 pm
Estoy creando un pequeño tuto introductorio al tema cuando lo termino lo subo, esta buena la iniciativa y si esta teniendo poca actividad este subforo. Saludos.


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: Tokes en 25 Agosto 2010, 22:40 pm
Hola a todos:

Como dije anteriormente, empezaré por algo muy, pero muy sencillo: explicar la diferencia entre microprocesador y microcontrolador (aunque para algunos, es muy obvia). Trataré de ser lo más breve y menos aburrido posible.

Un microprocesador es el cerebro de cualquier sistema electrónico. Tiene la capacidad para realizar operaciones lógicas y aritméticas, y también puede comunicarse con otros dispositivos electrónicos.

Un microcontrolador es todo un sistema electrónico dentro de un solo chip, capaz de llevar a cabo el control de una tarea específica.

Claro está que para controlar un proceso se requiere inteligencia, entonces, un microcontrolador contiene un microprocesador dentro de su arquitectura.


(http://img828.imageshack.us/img828/7278/diagramadebloquesmicroc.jpg)
Figura 1. Diagrama de bloques resumido de un microcontrolador.

Es decir, un microprocesador por sí solo no puede hacer absolutamente nada. Pensemos por un momento: Si algún demente le hubiera sacado el cerebro a Einstein y lo hubiera puesto en un frasco con conservadores, ¿Qué habría hecho o producido ese cerebro?

A pesar de ser un cerebro potentísimo, no tendría los medios para comunicarse con el exterior, y por lo tanto, es completamente inútil.

Podemos considerar a un ser humano como un controlador. Un controlador que cambia, y a veces, destruye su entorno. Pero esto lo logra gracias a que dispone de un poderoso “procesador”, el cual puede interactuar con el exterior debido a sus “sensores” (la vista, el oído, el tacto, etc.) y a sus “actuadores” (los nervios, los músculos, etc.) que están conectados al “procesador” (el cerebro).

Como se puede observar en la figura 1, el microprocesador está conectado a una memoria de programa, porque sí, es cierto, el procesador puede realizar muchas operaciones; la pregunta es ¿Qué operaciones va a realizar?

Las operaciones que el microprocesador va a realizar dependen del proceso que debe controlarse. Esas instrucciones están guardadas todas en la memoria de programa, cada una en una dirección específica de dicha memoria. El microprocesador debe extraer las instrucciones una a una e irlas ejecutando. Para ello, primero pone en el bus de direcciones la dirección de la instrucción que se quiere extraer y mediante el bus de control le indica a la memoria de programa que se va efectuar una operación de lectura sobre ella. Acto seguido, la memoria de programa pone en el bus de datos la instrucción solicitada por el procesador, el cual, procede a ejecutarla.

Ahora, supongamos que la instrucción extraída por el procesador es: Sumar A + B. Surge ahora otra pregunta, ¿Qué son A y B? ¿En dónde se encuentran esos valores? La respuesta es: en la memoria de datos. Esta memoria cumple la función de contener datos temporalmente para auxiliar en el procesado de la información. Si a cualquiera de nosotros nos dijeran: multiplica 549823 x 468254, pero sin usar lápiz ni papel, ¡¿Qué hacemos?! Necesitamos lápiz y papel para ir escribiendo los datos hasta llegar al resultado final. Es más, aunque usáramos calculadora, voltearíamos y le diríamos a nuestro sinodal: ¿Me puedes repetir los números, por favor?

Pues bien, el procesador debe extraer los datos necesarios contenidos en la memoria de datos para llevar a cabo el control de un proceso.

Pero, un momento… ¿Cómo puedo controlar un proceso si yo mismo no soy parte del proceso? ¡Debo estar en contacto con el proceso!

Los puertos de Entrada/Salida cumplen la función de comunicar al sistema con el exterior. Mediante los puertos de E/S el procesador puede adquirir y enviar información a los dispositivos involucrados en una tarea determinada.

En fin, un microcontrolador es todo un sistema de control dentro de un solo paquetito; o como dijeran muchos, es un computador completo. Es verdad, un microcontrolador puede realizar las 4 operaciones básicas de una computadora:

-   Recibir información
-   Almacenar información
-   Procesar información
-   Enviar información

Bueno, por el momento es todo. Espero no haberles aburrido el día.

Saludos.



Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: andres_5 en 26 Agosto 2010, 15:28 pm
Muy interesante, ahora mismo estoy intentando conseguir un microcontrolador pic para programarlo y demas, me podrias aconsejar uno tipico y barato para empezar? no me gustaria gastarme una pasta por un componente que valla a poder quemar, :S
para programar un componente tengo que conseguir la "base", es decir el circuito que une el PIC con el PC, ¿Que me aconsejais por USB, Puerto Paralelo...?
saludos y sigue asi ;). ...


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: Tokes en 26 Agosto 2010, 16:54 pm
Mira, yo te recomiendo el microcontrolador PIC12F510. Tiene memoria de programa Flash, para que lo puedas grabar cuantas veces quieras, trae su oscilador interno, es de 8 patitas y cuesta $35 en Steren.

Con respecto al grabador para PIC te recomiendo que sea por USB, esos programadores son más rápidos y confiables. Te dejo el link de la página de Steren:

http://www.steren.com.mx/catalogo/interior2.asp?NumeroDePaginaActual=2&PaginaAnterior=True&texto_busqueda=microcontrolador&CuantosXPagina=5&OrdenarX= (http://www.steren.com.mx/catalogo/interior2.asp?NumeroDePaginaActual=2&PaginaAnterior=True&texto_busqueda=microcontrolador&CuantosXPagina=5&OrdenarX=)

Cuidado con los micros de memoria OTP, esos sólo los puedes grabar una vez.

Aquí el link de la página de Pictrónico:

http://www.pictronico.com/shop/osc/index.php?cPath=33 (http://www.pictronico.com/shop/osc/index.php?cPath=33)

             Eso es todo por el momento. Saludos.


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: Mr.Blue en 26 Agosto 2010, 19:00 pm
Aca en este link podes encontrar el quemador pic por puerto DB-45

http://www.megaupload.com/?d=NRBHEVYM

Funciona esta probado.

algunos ejemplos simples.

Código
  1. ;ejercico 1
  2. ;encender un led en rb0
  3. ;pic 16f84
  4. ;oscilador 4MHz (Xtal)
  5. ;TTP Montaje
  6. ;10/09/2007
  7. ;Autor: Sr.blanco
  8.  
  9. status equ 03
  10. porta equ 05
  11. portb equ 06
  12. trisa equ 85
  13. trisb equ 86
  14.  
  15. list p= pic 16f84
  16.  
  17. reset org 0 ;saltar vector de ingreso
  18. goto inicio
  19. org 5
  20.  
  21. inicio bsf status,5 ;pasar a banco de memoria 1
  22. movlw b'00000' ;caragr en w palabra de configuracion trisa
  23. movwf trisa ;cargar en w palabra de configuracion tris
  24. movlw b'00000000' ;cargar en w palabra de configuracion trisb
  25. movwf trisb ;cargar en w pqalabra de configuracion trisb
  26. bcf status,5 ;pasar a banco de memoria
  27.  
  28. limpio clrf porta ;limpio puerto a
  29. clrf portb ;limpio puerto b
  30.  
  31. comenzar movlw b'00000001'
  32. movwf portb
  33. end

Código
  1. ;ejercico 8
  2. ;control de sentido de giro de motor de cc
  3. ;pic 16f84
  4. ;oscilador 4MHz (Xtal)
  5. ;TTP Montaje
  6. ;09/10/2007
  7. ;Autor: Sr.Blanco
  8.  
  9. status equ 03
  10. porta equ 05
  11. portb equ 06
  12. trisa equ 85
  13. trisb equ 86
  14. dato equ 0d
  15.  
  16. list p= pic 16f84
  17.  
  18. reset org 0
  19. goto inicio
  20. org 5
  21.  
  22. inicio bsf status,5
  23. movlw b'00001'
  24. movwf trisa
  25. movlw b'00000000'
  26. movwf trisb
  27. bcf status,5
  28.  
  29. limpio clrf porta
  30. clrf portb
  31.  
  32.  
  33. leo movf porta,w
  34. movwf dato
  35. btfss dato,0
  36. goto leo
  37.  
  38.  
  39. prendo1 movlw b'00001100'
  40. movwf portb
  41. movlw b'00000110'
  42. movwf portb
  43. movlw b'00000011'
  44. movwf portb
  45. movlw b'00001011'
  46. movwf portb
  47. movlw b'00001001'
  48.  
  49. prendo2 movlw b'00001001'
  50. movwf portb
  51. movlw b'00001011'
  52. movwf portb
  53. movlw b'00000011'
  54. movwf portb
  55. movlw b'00000110'
  56. movwf portb
  57. movlw b'00001100'
  58. goto prendo1|
  59.  
  60. end


Código
  1. ;ejercico 12
  2. ;Efecto de luces
  3. ;pic 16f84
  4. ;oscilador 4MHz (Xtal)
  5. ;TTP Montaje
  6. ;Autor: Sr.Blanco
  7. [hr]
  8. lee movf porta,w
  9. movwf dato
  10. btfss dato,0
  11. goto lee1
  12. goto lee2
  13.  
  14. lee1 btfss dato,0
  15. goto lee3
  16. goto lee4
  17.  
  18. lee2 btfss dato,1
  19. goto lee5
  20. goto lee6
  21.  
  22. lee3 btfss dato,1
  23. goto luces1
  24. goto luces2
  25.  
  26. lee4 btfss dato,2
  27. goto luces3
  28. goto luces4
  29.  
  30. lee5 btfss dato,2
  31. goto luces5
  32. goto luces6
  33.  
  34. lee6 btfss dato,2
  35. goto luces7
  36. goto luces8
  37.  
  38.  
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45. luces1 movlw b'10000001'
  46. movwf portb
  47. call tiempo
  48. movlw b'11000011'
  49. movwf portb
  50. call tiempo
  51. movlw b'11100111'
  52. movwf portb
  53. call tiempo
  54. movlw b'11111111'
  55. movwf portb
  56. call tiempo
  57. movlw b'11100111'
  58. movwf portb
  59. call tiempo
  60. movlw b'11000011'
  61. movwf portb
  62. call tiempo
  63. goto lee
  64.  
  65.  
  66.  
  67.  
  68.  
  69. luces2 movlw b'10000001'
  70. movwf portb
  71. call tiempo
  72. movlw b'01000010'
  73. movwf portb
  74. call tiempo
  75. movlw b'00100100'
  76. movwf portb
  77. call tiempo
  78. movlw b'00011000'
  79. movwf portb
  80. call tiempo
  81. movlw b'00100100'
  82. movwf portb
  83. call tiempo
  84. movlw b'01000010'
  85. movwf portb
  86. call tiempo
  87. goto lee
  88.  
  89.  
  90. luces3 movlw b'00000001'
  91. movwf portb
  92. call tiempo
  93. movlw b'00000010'
  94. movwf portb
  95. call tiempo
  96. movlw b'00000100'
  97. movwf portb
  98. call tiempo
  99. movlw b'00001000'
  100. movwf portb
  101. call tiempo
  102. movlw b'00010000'
  103. movwf portb
  104. call tiempo
  105. movlw b'00100000'
  106. movwf portb
  107. call tiempo
  108. movlw b'01000000'
  109. movwf portb
  110. call tiempo
  111. movlw b'10000000'
  112. movwf portb
  113. call tiempo
  114. movlw b'01000000'
  115. movwf portb
  116. call tiempo
  117. movlw b'00100000'
  118. movwf portb
  119. call tiempo
  120. movlw b'00010000'
  121. movwf portb
  122. call tiempo
  123. movlw b'00001000'
  124. movwf portb
  125. call tiempo
  126. movlw b'00000100'
  127. movwf portb
  128. call tiempo
  129. movlw b'00000010'
  130. movwf portb
  131. call tiempo
  132. goto lee
  133.  
  134.  
  135.  
  136. luces4 movlw b'11111111'
  137. movwf portb
  138. call tiempo
  139. clrf portb
  140. call tiempo
  141. goto lee
  142.  
  143.  
  144. luces5 movlw b'00000001'
  145. movwf portb
  146. call tiempo
  147. movlw b'00000010'
  148. movwf portb
  149. call tiempo
  150. movlw b'00000100'
  151. movwf portb
  152. call tiempo
  153. movlw b'00001000'
  154. movwf portb
  155. call tiempo
  156. movlw b'00010000'
  157. movwf portb
  158. call tiempo
  159. movlw b'00100000'
  160. movwf portb
  161. call tiempo
  162. movlw b'01000000'
  163. movwf portb
  164. call tiempo
  165. movlw b'10000000'
  166. movwf portb
  167. call tiempo
  168. goto lee
  169.  
  170.  
  171.  
  172. luces6 movlw b'10101010'
  173. movwf portb
  174. call tiempo
  175. movlw b'01010101'
  176. movwf portb
  177. call tiempo
  178. goto lee
  179.  
  180.  
  181.  
  182. luces7 movlw b'11000011'
  183. movwf portb
  184. call tiempo
  185. movlw b'00111100'
  186. movwf portb
  187. call tiempo
  188. goto lee
  189.  
  190.  
  191.  
  192.  
  193. luces8 movlw b'11110000'
  194. movwf portb
  195. call tiempo
  196. movlw b'00001111'
  197. movwf portb
  198. call tiempo
  199. goto lee
  200.  
  201.  
  202.  
  203. luces9 movlw b'11001100'
  204. movwf portb
  205. call tiempo
  206. movlw b'00110011'
  207. movwf portb
  208. call tiempo
  209. goto lee
  210.  
  211.  
  212.  
  213. luces10 movlw b'10101010'
  214. movwf portb
  215. call tiempo
  216. movlw b'00000000'
  217. movwf portb
  218. call tiempo
  219. movlw b'01010101'
  220. movwf portb
  221. call tiempo
  222. goto lee
  223.  
  224.  
  225.  
  226. luces11 movlw b'11100000'
  227. movwf portb
  228. call tiempo
  229. movlw b'01110000'
  230. movwf portb
  231. call tiempo
  232. movlw b'00111000'
  233. movwf portb
  234. call tiempo
  235. movlw b'00011100'
  236. movwf portb
  237. call tiempo
  238. movlw b'00010000'
  239. movwf portb
  240. call tiempo
  241. movlw b'00100000'
  242. movwf portb
  243. call tiempo
  244. movlw b'01000000'
  245. movwf portb
  246. call tiempo
  247. movlw b'10000000'
  248. movwf portb
  249. call tiempo
  250. goto lee


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: andres_5 en 26 Agosto 2010, 21:35 pm
Mira, yo te recomiendo el microcontrolador PIC12F510. Tiene memoria de programa Flash, para que lo puedas grabar cuantas veces quieras, trae su oscilador interno, es de 8 patitas y cuesta $35 en Steren.

Con respecto al grabador para PIC te recomiendo que sea por USB, esos programadores son más rápidos y confiables. Te dejo el link de la página de Steren:

http://www.steren.com.mx/catalogo/interior2.asp?NumeroDePaginaActual=2&PaginaAnterior=True&texto_busqueda=microcontrolador&CuantosXPagina=5&OrdenarX= (http://www.steren.com.mx/catalogo/interior2.asp?NumeroDePaginaActual=2&PaginaAnterior=True&texto_busqueda=microcontrolador&CuantosXPagina=5&OrdenarX=)

Cuidado con los micros de memoria OTP, esos sólo los puedes grabar una vez.

Aquí el link de la página de Pictrónico:

http://www.pictronico.com/shop/osc/index.php?cPath=33 (http://www.pictronico.com/shop/osc/index.php?cPath=33)

             Eso es todo por el momento. Saludos.
Dios, no hay microcontroladores que sea mas barato, porque en ese caso prefiero hacerme con un arduino que mas o menos me sale unos 10€, ya que para empezar prefiero con lo mas barato, seria muy frustrante que quemase ese microcontrolador con mi inexperiencia...
saludos .


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: Mr.Blue en 27 Agosto 2010, 02:50 am
@andres_5
Dependiendo que quieras hacer vas a comprar uno y otro pic si queres hacer practicas simples, como los codigos que puse te recomiendo el 16f84 no son caros, y podes hacer varias cosas con ellos.


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: Tokes en 27 Agosto 2010, 03:21 am
Mi buen amigo andres_5, me parece que malinterpretaste las cosas (o tal vez no): el microcontrolador que te recomendé (PIC12F510) cuesta 35 pesos mexicanos, aproximadamente 3 dólares de US. Lo que sí cuesta caro es el grabador (300 pesos mexicanos, aprox.), pero ese te sirve para programar casi todos los microcontroladores de Microchip.

Claro, el PIC12F510 te lo recomendé por barato, pero sin duda, el más popular de todos los PIC es el famosísimo PIC16F84A, que cuesta aproximadamente 100 pesos mexicanos (10 dólares). Te dejo un enlace a mercado libre, chécalo:

http://articulo.mercadolibre.com.pe/MPE-11780541-_JM (http://articulo.mercadolibre.com.pe/MPE-11780541-_JM)

Mi estimado Sr. Blanco, voy a estar ocupado durante 1 hora, más o menos, y regreso para comentarle algo.

          Saludos y muchas gracias por participar.


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: Tokes en 27 Agosto 2010, 04:46 am
Ahora sí Sr Blanco:

He probado su primer programa, "Encender un led", y sí funciona, pero lo mejor es que cuando un programa realiza un determinado proceso y después ya no tiene nada más que hacer (como es el caso de tu primer programa) entre en un ciclo infinito o entre en modo de bajo consumo.

Aquí le dejo su primer programa, pero con el final modificado:

Código
  1. ;ejercico 1
  2. ;encender un led en rb0
  3. ;pic 16f84
  4. ;oscilador 4MHz (Xtal)
  5. ;TTP Montaje
  6. ;10/09/2007
  7. ;Autor: Sr.blanco
  8.  
  9. status equ 03
  10. porta equ 05
  11. portb equ 06
  12. trisa equ 85
  13. trisb equ 86
  14.  
  15. list p= pic 16f84
  16.  
  17. reset org 0 ;saltar vector de ingreso
  18. goto inicio
  19.  
  20. org 5
  21. inicio bsf status,5 ;pasar a banco de memoria 1
  22. movlw b'00000' ;cargar en W palabra de configuracion trisa
  23. movwf trisa ;carga el trisa con el contenido de W.
  24. movlw b'00000000' ;cargar en W palabra de configuracion trisb
  25. movwf trisb ;cargar en trisb el contenido de W.
  26. bcf status,5 ;pasar a banco de memoria 0.
  27.  
  28. limpio clrf porta ;limpio puerto a
  29. clrf portb ;limpio puerto b
  30.  
  31. comenzar                movlw       b'00000001'
  32. movwf portb
  33. duerme sleep ; Entra en modo de bajo consumo.
  34. goto          duerme
  35.  
  36. end
  37.  

        Gracias por tu aporte. Estaré echándole un vistazo a tus otros proramas.
        ¡¡Buen día!!


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: andres_5 en 27 Agosto 2010, 05:14 am
Creo que empezasteis un poco lento, pero acabais de dar un aceleron que casi casi me he perdio :S.
Aun no tengo el pic pero sabiendo que no es tan caro en unos dias me lo pillo en alguna tiendo de electronica...
mas o menos comprendo que eso que estais publicando es el codigo fuente para programar un PIC, hace 2 dias empece C, y eso no me parece que sea C, aunque lo puede ser... que lenguaje de programacion es?, ahora para linux que programa permite programar un pic.
Bueno en breves me comprare un PIC supongo el de $35, al menos para empezar, y ya os ire comentando aqui mismo las dudas que me vallan surgiendo.
Saludos Y muy util este POST ;)


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: Meta en 27 Agosto 2010, 08:54 am
Los programadores de USB son caros, y eso que cada vez sacan algunos nuevos. Este es el más nuevo que han sacado.

(http://www.msebilbao.com/tienda/images/USBPICBurner.jpg)

Citar
Ingeniería de Microsistemas Programados presenta el nuevo grabador Universal USB-Pic'Burner. Consiste en un grabador de última generación y bajo coste que admite los dispositivos PIC mas representativos de 8, 18, 28 y 40 patillas, de las familias 12F, 16F, 18F, que se insertan sobre un zócalo ZIF de fuerza de inserción nula.

Su interface con el PC (de sobremesa o portátil) se realiza a través de un puerto USB desde donde también se toma la alimentación. Se trata por tanto de un grabador de reducidas dimensiones, potente, económico y totalmente portátil que se controla directamente desde el conocido entorno de desarrollo MPLAB-IDE y/o desde el software
de grabación PICKit-2. Ambas herramientas software son originales de Microchip y se pueden descargar sin costo alguno desde www.microchip.com

Sus características más relevantes son:

    * Reducidas dimensiones de 77x 62mm
    * Interface USB con el PC mediante cable USB tipo A a tipo B (incluido)
    * Alimentación desde el propio puerto USB del PC; consumo de 35mA en standby y 55mA en actividad
    * Compatible a nievel de hardware con el PICkit-2 de Microchip
    * Compatible a nivel de software con MPLAB-IDE y PICkit-2 de Microchip.
    * Se puede configurar para proceder automáticamente a la grabación cada vez que se realiza el ensamblado/compilado de un programa
    * Zócalo ZIF de inserción nula que admite dispositivos PICde 0.3" y 0.6" de 8, 18, 28 y 40 patillas de las familias PIC12, PIC16 y PIC18
    * Selección mediante jumper del dispositivo de 8, 18, 28/40 patillas a grabar
    * Dispone de conexión ICSP compatible con PICKit-2 que transporta las señales de grabación
    * Esas señales ICSP es posible conectarlas a múltiples dispositivos PIC de otras familias y encapsulados soportados por MPLAB-IDE y PICkit-2


Ver el programdor y sus características en PDF. (http://www.msebilbao.com/notas/downloads/USB-PIC%27Burner%20Manual%20de%20usuario.pdf)

Fuente:
http://www.msebilbao.com/tienda/product_info.php?products_id=582


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: Mr.Blue en 27 Agosto 2010, 13:38 pm
Hola a todos, bueno, creo q adelante y tire codigo muy rapido jaja, pero son algunos ejemplos muy sencillos como veran, los pic se programan en lenguaje assambler para pic, diferente al assembler de maquina, si quieren puedo subir una pequeña introduccion, a lo largo del dia ya que en estos momentos no puedo.


Pd: Ahi en mi anterior post subi a megaupload un quemado barato de armar alrededor de unos 30 a 40$ (Argentina) dependiendo de donde vivan. En dolares seran 10dolares masomenos.

Edit.
Un ejemplo de un pic seria el siguiente 16f84
(http://r.i.elhacker.net/cache?url=http://i952.photobucket.com/albums/ae3/eeprom46/Pines_PIC16F84.jpg)
RA0 a RA4 RA es un puerto bidireccional. Eso quiere decir que puede ser configurado como entrada o como salida. El número que hay después de RA indica el numero de bit (0 a 4). Por tanto, tenemos un puerto bidireccional de 5 bits donde cada bit puede ser configurado como entrada o como salida.

RB0 a RB7 RB es un segundo puerto bidireccional. Se comporta exactamente de la misma manera que RA, excepto que este tiene 8 bits.

VSS y VDD Estos son los pins de alimentación. VDD es la alimentación positiva, y VSS es el negativo de la alimentación, o 0 Voltios. La tensión máxima de alimentación que puedes utilizar son 6 Voltios, y el mínimo son 2 Voltios.


OSC1/CLK IN y OSC2/CLKOUT
Estos pines son donde conectaremos el reloj externo, para que el microcontrolador disponga de algún tipo de temporización.

MCLR  Este pin se utiliza para borrar las posiciones de memoria dentro del PIC (p.ej. cuando quiero reprogramarlo). Durante el funcionamiento normal está conectado a la alimentación positiva.


INT Este es un pin de entrada que puede ser monitorizado. Si el pin se pone a nivel alto, podemos hacer que el programa se reinicie, se pare o cualquier otra función de deseemos. No lo utilizaremos mucho.

 
TOCK1 Esta es otra entrada de reloj, que opera con un temporizador interno. Opera aisladamente del reloj principal. De nuevo, este tampoco lo utilizaremos mucho.


Como programar
(http://r.i.elhacker.net/cache?url=http://i952.photobucket.com/albums/ae3/eeprom46/Tutorial_Assembler_Proceso_de_programacion_de_PICs.jpg)

Comentario: Esta imagen creo que lo dice todo


Bueno en primer lugar se programa en assembler el programa que queremos realizar, existen editores o simplemente un bloc de notas con una extensión .asm.
El paso siguiente es tomar ese fichero .asm y pasarlo a .Hex para poder grabarlo en el pic y que este entienda las intrucciones que debe realizar, para esto podemos usar el MASN para dar el mismo ejemplo, pero existen otros.
Cuando tenemos el  fichero .ASM lo que resta es quemarlo en el pic, para esto utilizamos el IC-Prog, en este programa debemos indicar que pic vamos a usar de una lista que tenemos en el mismo. Y listo ya tenemos el pic programado.

Circuito Con un pic
(http://r.i.elhacker.net/cache?url=http://i952.photobucket.com/albums/ae3/eeprom46/PlacaEntrenamiento_basica.jpg)

Aca tenemos un circuito sencillo con un pic

Fuente: http://wiki.webdearde.com/index.php/Tutorial:_Programaci%C3%B3n_de_PICs_en_Ensamblador

PD: De esta misma fuente, se explica como programar en en assembler para pic.

Ahi pueden encontrar como programar un pic explicado detalladamente, cualquier duda pregunten, no doy una explicacion propia porq hay mucha info en internet que seguramente lo expliquien mejor que yo. Esta web que paso es una. :xD



Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: Tokes en 27 Agosto 2010, 20:40 pm
Hola nuevamente:

Citar
OSC1/CLK IN y OSC2/CLKOUT Estos pines son donde conectaremos el reloj externo, para que el microcontrolador disponga de algún tipo de temporización.

Bueno, debido a que Sr.Blanco mencionó algo sobre las terminales OSC1 y OSC2 daré un breve resumen sobre los osciladores más usados en los microcontroladores.

Tema: Osciladores típicos de los microcontroladores.

Estos son:

-   Oscilador RC. Este oscilador está compuesto por una red RC simple. Su ventaja es que es económico. Su desventaja es que no tiene mucha precisión en su temporizado.

(http://img441.imageshack.us/img441/3966/osciladorrc.jpg)
Figura 2. Ejemplo de oscilador RC.

-   Oscilador basado en cristal de cuarzo o en resonador cerámico. Son muy estables y pueden ser de baja potencia (32 KHz) o de alta velocidad (4 MHz, 8 MHz, 12 MHz, etc.).

(http://img831.imageshack.us/img831/6522/osciladoracristal.jpg)
Figura 3. Conexión de un cristal de cuarzo a un microcontrolador.

-   Reloj externo. De este modo, la señal de sincronía del microcontrolador es brindada por un dispositivo externo (por ejemplo, un ne555).

(http://img844.imageshack.us/img844/5909/relojexterno.jpg)
Figura 4. Ejemplo de reloj externo.

Cabe aclarar que algunos microcontroladores tienen su oscilador interno integrado, además de la posibilidad de conectarles un oscilador externo.

Para el caso de los PIC, los osciladores a cristal de cuarzo y los resonadores cerámicos adquieren un determinado nombre según la frecuencia a la que se trabaje, de la siguiente manera:

Oscilador LP --> 32 KHz – 200 kHz
Oscilador XT --> 100 KHz – 4 MHz
Oscilador HS --> 4 MHz – 20 MHz

Y algo que también es muy importante aclarar es que la frecuencia de oscilación no es la misma que la frecuencia de las instrucciones. Para los PIC de la gama base y la gama media, y algunos de la gama alta, cada instrucción se ejecuta en 4 ciclos de reloj. Es decir, la frecuencia de las instrucciones es igual a ¼ de la frecuencia del oscilador. Así, si utilizamos un cristal de 4 MHz, la frecuencia de las instrucciones será igual a 1 MHz, por lo cual el ciclo de máquina es igual a 1 / 1 MHz = 1 microsegundo. Cada instrucción se ejecuta en 1 microsegundo.

Para lograr que el dispositivo a grabar trabaje con un determinado oscilador, hay que especificar dicho oscilador en la palabra de configuración. En lenguaje ensamblador esto se hace así:

   __CONFIG  _XT

Noten que __CONFIG lleva dos guiones bajos consecutivos. Esta directiva le indica al software ensamblador que debe grabarse una palabra en la zona de configuración del dispositivo. El argumento _XT indica que el microcontrolador va a trabajar con un oscilador de tipo XT (4 MHz). De manera similar para los otros tipos de osciladores.

En el compilador PCWH, de la compañía CCS, esto se especifica así:

   #fuses    XT

La directiva #fuses es equivalente a __config del ensamblador. En este caso también se indica un oscilador XT (noten que XT ya no lleva guión bajo).

Por el momento es todo. Saludos.


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: andres_5 en 27 Agosto 2010, 21:01 pm
Hola de nuevo, acabo de comprarme el (pic16f84A-04/P), pero el programador mas barato me sale a 35€ desmontado :S, sabeis si es posible hacerlo manualmente, osea comprar los materiales por separado y crear yo mismo el circuito, Claro con un patron ...
saludos y espero vuestras respuestas ;)


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: Tokes en 27 Agosto 2010, 21:18 pm
Para el buen andres_5:

Lamentablemente, las herramientas que yo conozco para programar microcontroladores trabajan en SO Windows.

Aquí un enlace a Microchip.com para descargar MPLAB IDE:

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en019469&part=SW007002 (http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en019469&part=SW007002)

Te dejo un link de taringa que trae buenas descargas:

http://www.taringa.net/posts/downloads/833909/Ccs-PCWH-Compiler---Programar-PICs-en-C.html (http://www.taringa.net/posts/downloads/833909/Ccs-PCWH-Compiler---Programar-PICs-en-C.html)

Allí puedes descargar:

- PCWH - Es un compilador en lenguaje C para PICs. Aquí se editan los programas para PIC en lenguaje C y, para simularlos, se establece una conexión con MPLAB IDE a través del CCS ADDON.

- CCS ADDON - Este software establece una conexión entre MPLAB IDE y PCWH.

Con respecto a tu petición del grabador (la construcción) déjame ver si puedo conseguirte algo.

        Espero que te sirva. Nos vemos.


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: andres_5 en 27 Agosto 2010, 21:22 pm
Ok no importa, tambien tengo windows 7, pero me siento mas comodo en ubuntu... ;)
Muchas Gracias, tanta ayuda se agradece ;)


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: Mr.Blue en 27 Agosto 2010, 22:05 pm
@andres_5

Quemador PIC Circuito

http://www.megaupload.com/?d=NRBHEVYM

Ahi habia dejado uno, el circuito es completamente funcicional, no es muy caro armarlo si no me equivoco 10dolares saldra o menos.
Solo necesitas un par de transistores, diodos, diodo zener, algunas resistencias, dos leds, y socalos para pic de 8; 18; 28, y 40 a y un conector hembra DB-9

El circuito es sencillo y facil de armar.

hasta ahi el hardware, abria que ver ahora el software, no conozco ninguno para linux, pero estoy seguro de debe haber, habria que buscar en google haber q hay, cualquier cosa te aviso si encuentro algo.
Si no podes en una maquina virtual instalar un SO para hacer el quemado.

Saludos

Pegate una vuelta por esa pag no lei muy bien pero creo q es un quemador (software) para linux
http://pikdev.free.fr/

Sino aca podes ver que onda tmb
http://pic-linux.foroactivo.net/programadores-f12/enlaces-a-paginas-de-programadores-t4.htm


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: andres_5 en 27 Agosto 2010, 22:37 pm
hola, conector hembra de DB-9? que seria mediante puerto de serie, no?
lo unico negativo es, que mi pc no tiene puerto de serie...
no importa del todo, voy a visualizarme el circuito que me as pasado y ya buscare uno por usb o por puerto paralelo ... ;)
Gracias por todo ...


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: Tokes en 27 Agosto 2010, 22:56 pm
andres_5:

Por si no viste los links del comentario anterior:

Aquí un enlace a Microchip.com para descargar MPLAB IDE:

http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en019469&part=SW007002 (http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en019469&part=SW007002)

Te dejo un link de taringa que trae buenas descargas:

http://www.taringa.net/posts/downloads/833909/Ccs-PCWH-Compiler---Programar-PICs-en-C.html (http://www.taringa.net/posts/downloads/833909/Ccs-PCWH-Compiler---Programar-PICs-en-C.html)

Allí puedes descargar:

- PCWH - Es un compilador en lenguaje C para PICs. Aquí se editan los programas para PIC en lenguaje C y, para simularlos, se establece una conexión con MPLAB IDE a través del CCS ADDON.

- CCS ADDON - Este software establece una conexión entre MPLAB IDE y PCWH.

         Nos vemos.


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: andres_5 en 27 Agosto 2010, 23:17 pm
si si me sera muy util muchas Gracias pero aun no tengo el quemador del pic, estoy intentando buscarlo casero.
Saludos


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: Tokes en 28 Agosto 2010, 00:28 am
Aquí está un enlace para descargar Proteus 7.1, simulador de circuitos electrónicos:

http://rapidshare.com/files/415535086/Proteus_7.1.rar (http://rapidshare.com/files/415535086/Proteus_7.1.rar)


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: andres_5 en 28 Agosto 2010, 03:56 am
@andres_5

Quemador PIC Circuito

http://www.megaupload.com/?d=NRBHEVYM

Ahi habia dejado uno, el circuito es completamente funcicional, no es muy caro armarlo si no me equivoco 10dolares saldra o menos.
Solo necesitas un par de transistores, diodos, diodo zener, algunas resistencias, dos leds, y socalos para pic de 8; 18; 28, y 40 a y un conector hembra DB-9

El circuito es sencillo y facil de armar.

hasta ahi el hardware, abria que ver ahora el software, no conozco ninguno para linux, pero estoy seguro de debe haber, habria que buscar en google haber q hay, cualquier cosa te aviso si encuentro algo.
Si no podes en una maquina virtual instalar un SO para hacer el quemado.

Saludos

Pegate una vuelta por esa pag no lei muy bien pero creo q es un quemador (software) para linux
http://pikdev.free.fr/

Sino aca podes ver que onda tmb
http://pic-linux.foroactivo.net/programadores-f12/enlaces-a-paginas-de-programadores-t4.htm

Acabo de encontrar este esquema en otro programador...
(http://r.i.elhacker.net/cache?url=http://r-luis.xbot.es/project/imagen/pic_port.gif)
Sabiais si funciona esa conversion en el circuito que me has pasado??
PD: he ncontrado este otro, sabeis si me valdria : http://blog.bricogeek.com/noticias/electronica/construye-tu-propio-grabador-de-pics/#more
Saludos


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: Tokes en 28 Agosto 2010, 05:58 am
andres_5:

A mí esa conversión me parece muy extraña. Yo le voy más a ésta:

(http://img267.imageshack.us/img267/6233/db925converter.png)

      Eso es todo. Saludos.

P.D.1: Checa este enlace:

        http://www.planetronic.es/cables-adaptadores-serie-cable-serie-db9-db25-c-407_473_480.html (http://www.planetronic.es/cables-adaptadores-serie-cable-serie-db9-db25-c-407_473_480.html)

P.D.2: Asegúrate que tu puerto de 25 pines realmente sea serie.


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: andres_5 en 28 Agosto 2010, 15:08 pm
Pero podria poner envez de un cabezal de puerto de 9 pin sino el de 25 pin, no? sin embargo nose si el software enviara los datos por el puerto paralelo, en vez del puerto de serie...
saludos y gracias
PD: este finde me voy al campo, por lo tanto no podre seguir vuestros avances, ya me pondre al dia en lunes en cuanto llegue...


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: Tokes en 29 Agosto 2010, 17:15 pm
El software enviará la información por el puerto serie.

      Saludos.


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: Tokes en 29 Agosto 2010, 17:28 pm
¡Qué tal a todos!:

Hoy hablaremos de un tema necesario para poder comunicar a un microcontrolador con el exterior.

Tema: Los puertos de Entrada/Salida.

Bien, es muy usual que los microcontroladores llamen PORT a los puertos de entrada/salida, aunque no siempre es así.

Para los microcontroladores PIC, los puertos toman los nombres: PORTA, PORTB, PORTC, etc.

Para los microcontroladores AVR, los puertos se llaman: PORTA, PORTB, PORTC, etc. cuando se utilizan como salida, y toman los nombres PINA, PINB, PINC, etc. cuando se comportan como entradas.

En algunos microcontroladores, como es el caso de los PIC, los puertos de E/S se encuentran mapeados en la memoria de datos RAM. ¿Qué quiere decir esto? Pues que, simple y sencillamente, algunas direcciones de la memoria de datos están conectadas a los puertos de E/S. Cuando el microprocesador desea enviar datos a un puerto, lo que hace es enviar esa información a una dirección de la memoria de datos RAM que está conectada con ese puerto. La ventaja de esto es que se pueden manejar los puertos con las mismas instrucciones que operan sobre la memoria de datos.

Por ejemplo, para el PIC16F84A:

         clrf   5

Esta instrucción borra el contenido de la dirección 5 de la memoria de datos. Pero resulta ser que la dirección 5 de la memoria de datos está conectada al puerto A, por lo tanto, lo que esta instrucción está haciendo es borrar los bits del puerto A.

Ahora, bien, estos puertos de E/S son bidireccionales, esto quiere decir que pueden funcionar como entradas y/o salidas. Para determinar el sentido que tomarán las terminales de cada puerto (entradas o salidas) existen registros especiales, llamados TRIS en el caso de los microcontroladores PIC. Para otros microcontroladores estos registros se llaman DDR (Data Direction Register)

Enfoquémonos en los microcontroladores PIC.

El registro TRISx controla la dirección de PORTx de la siguiente manera:

-   Si un bit del registro TRISx se encuentra a ‘0’, el correspondiente bit de PORTx funciona como salida.
-   Si un bit del registro TRISx se encuentra a ‘1’, el correspondiente bit de PORTx funciona como entrada.

Para ejemplificar veamos la siguiente figura:

(http://r.i.elhacker.net/cache?url=http://img64.imageshack.us/img64/2532/ejemploconfigpuertos.jpg)
Figura 5. Ejemplo de conexiones entre microcontrolador y periféricos externos.

Antes que nada, haremos un convenio: los bits no utilizados de los puertos los configuraremos como salidas (¿Por qué? No pregunten, lo entenderán más tarde).

Podemos ver que el puerto A del PIC16F84A tiene 5 bits, desde RA0 hasta RA4. Veamos que conexiones tenemos en el PORTA.

En RA0 tenemos conectada la base de un transistor NPN, cuyo colector queda conectado a un relevador. Como ya sabemos, la base de un transistor controla el funcionamiento del mismo, llevándolo a corte o a saturación, según sea el caso. Por tanto, el microcontrolador decidirá cuándo se activará o desactivará el relevador enviándole información a la base del transistor. Ello quiere decir que el bit RA0 debe ser salida. Para ello, el bit 0 del registro TRISA debe estar en ‘0’.

En la terminal RA1 está conectado un buzzer, el cual puede funcionar como una pequeña alarma. Para activar o desactivar el buzzer, el microcontrolador debe enviarle información a través de RA1, por lo cual, este bit debe ser salida. Esto se logra poniendo a ‘0’ el bit 1 del registro TRISA.

La terminal RA4 está conectada a un interruptor, SW1. Al cerrarse, el interruptor le envía un ‘0’ al microcontrolador. Al abrirse, le envía un ‘1’. Por lo tanto, la terminal RA4 debe ser configurada como entrada. Poniendo a ‘1’ el bit 4 del registro TRISA se logra esto.

Las terminales RA2 y RA3 no están conectadas a dispositivo alguno, ya quedamos que serán configuradas como salidas.

El PORTA, entonces, debe quedar configurado así:

(http://r.i.elhacker.net/cache?url=http://img291.imageshack.us/img291/2508/ejemploporta.jpg)

El registro TRISA debe contener para ello:

(http://r.i.elhacker.net/cache?url=http://img829.imageshack.us/img829/2108/ejemplotrisa.jpg)

Ahora vamos a analizar el PORTB.

La terminal RB0 está conectada a la salida de un OPAMP que funciona como detector de cruce por cero. El OPAMP le informa al microcontrolador si la señal de alterna se encuentra en el semiciclo positivo o en el negativo. Por tanto, la terminal RB0 debe ser entrada.

No hay que ser genios para darnos cuenta que las terminales RB1 y RB2, conectadas cada una a un led, deben ser salidas.

RB6 y RB7 están conectadas cada una a un pulsador. Cuando un pulsador está abierto envía un ‘1’ a la respectiva terminal. Cuando un pulsador está cerrado envía un ‘0’ a la respectiva terminal. Ello quiere decir que RB6 y RB7 deben ser configuradas como entradas.

Las terminales RB3, RB4 y RB5 no están conectadas a dispositivo alguno; quedarán configuradas como salidas.

El PORTB debe quedar configurado de la siguiente manera:

(http://r.i.elhacker.net/cache?url=http://img820.imageshack.us/img820/5902/ejemploportb.jpg)

Para ello, el TRISB debe contener:

(http://r.i.elhacker.net/cache?url=http://img831.imageshack.us/img831/5241/ejemplotrisb.jpg)

Pues bien, por el momento es todo. Que se la pasen bien.


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: andres_5 en 31 Agosto 2010, 01:38 am
Hola ya estoy aqui de nuevo, ya me he comprado una placa virgen para hacer el grabador del PIC, al final que circuito me aconsejais, podria adaptar el circuito para que funcionase por puerto paralelo...
Alternativas:
http://blog.bricogeek.com/noticias/electronica/construye-tu-propio-grabador-de-pics/
y la de sr.blanco:
http://www.megaupload.com/?d=NRBHEVYM
no tengo mas alternativas por el momento... en cuanto me aconsejeis alguno de los dos esquemas o alguno alternativo, me pongo manos a la obra y a praticar con vosotros..
Saludos ;)


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: Tokes en 31 Agosto 2010, 03:46 am
andres_5:

Checa este enlace:

http://www.todopic.com.ar/foros/index.php?topic=1732.0 (http://www.todopic.com.ar/foros/index.php?topic=1732.0)

Es para hacer un grabador de PIC con puerto paralelo.
 

          Saludos.


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: Mr.Blue en 31 Agosto 2010, 04:54 am
El que te pase yo es el que uso, y funciona bien, lo de la corvencion no se si estara bien o no, lo tendria q ver, cuando pueda te digo, el programa tiene para seleccionar por que puerto se manda la informacion, sea DB9 o LPT1 o 2.


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: Tokes en 1 Septiembre 2010, 19:13 pm
¡Ya llegué de nuevo!

Ahora les traigo otro tema que es importantísimo aprender (a los novatos les da mucho dolor de cabeza al ver que sus programas no funcionan).

Tema: La palabra de configuración.

A muchos principiantes les ha sucedido esto: editan su programa, lo compilan o ensamblan, lo revisan en algún simulador y, finalmente, lo graban en el microcontrolador. Pero ¡Oh sorpresa! El microcontrolador no hace nada. ¿Qué sucede? La simulación indicaba que todo estaba bien. ¡¿Por qué no funciona el micro?!

Lo que sucede es que muchas veces olvidamos especificar la palabra de configuración del dispositivo. Esta palabra de configuración, que reside en algún lugar de la memoria de programa, habilita/deshabilita ciertos mecanismos del microcontrolador que tendrán efecto significativo en su funcionamiento. A continuación se explicarán algunos de los mecanismos controlados por la palabra de configuración.

-   Oscilador. Es necesario siempre especificar el tipo de oscilador con el que va a operar el dispositivo. Si el oscilador que se conecta al microcontrolador es diferente del especificado en la palabra de configuración, adivinen ¿qué sucede? Para el caso de los PIC, si queremos que nuestro dispositivo funcione con un cristal de 4 MHz, en la palabra de configuración debemos especificar XT. Si deseamos que trabaje con un cristal de 12 MHz, en la palabra de configuración debemos especificar HS, y de manera similar para los otros osciladores.

Cabe señalar que si no especifica el tipo de oscilador, el oscilador por defecto para los PIC es del tipo RC.

-   Detector de Brown-Out. Un Brown-Out es una baja en la tensión de alimentación del dispositivo. Todos los microcontroladores tienen un rango de voltaje de operación. Si la tensión de alimentación rebasa el límite superior el microcontrolador podría averiarse. Si la tensión de alimentación está por debajo del límite inferior, el microcontrolador trabaja, pero seguramente operará de manera inadecuada. Aquí está el detalle:

Si la tensión de alimentación del dispositivo está por debajo de lo especificado por el fabricante, el microcontrolador puede operar sin riesgo de averías, pero no es seguro que funcione correctamente; podríamos decir que el microcontrolador está “ebrio”.

El usuario tiene dos opciones:

1.   Permitir que el microcontrolador opere aún cuando la tensión de alimentación esté por debajo de lo mínimo especificado. Para este caso se inhabilita el detector de Brown-Out.
2.   Impedir que el microcontrolador opere cuando la tensión está por debajo del mínimo especificado. Esto se logra activando el detector de Brown-Out.

Claro está que la activación/desactivación del detector de Brown-Out debe especificarse en la palabra de configuración.

-   Temporizador de arranque. Este temporizador, si está habilitado, inicia su ciclo de tiempo al ser conectada la alimentación y durante su temporizado mantiene al microcontrolador en estado de reset (impide la ejecución del código). Esto es con el objetivo de que el microcontrolador empiece a funcionar cuando el nivel de la tensión de alimentación sea adecuado.

-   Temporizador perro guardián (Watchdog Timer). Este temporizador comienza su temporización una vez que el microcontrolador está correctamente alimentado. Cuando dicho temporizador llega al final de la cuenta resetea al sistema, de manera que el código vuelve a ejecutarse desde el principio. Esto es muy útil para los casos en los que el programa entra en un ciclo infinito esperando que se cumpla una condición que no llega.

Al utilizar el Watchdog Timer hay que refrescar su contenido (ponerlo a 0) en el programa periódicamente para evitar que se desborde y resetee al sistema.

¿Dónde no hay que refrescar el contenido del Watchdog? En las partes de la programación donde el sistema pueda quedar atrapado en un ciclo infinito. Es ahí donde el Watchdog  se desbordará y reiniciará al sistema, sacándolo así del bucle infinito en el que estaba atrapado.

-   Protección de código. Antiguamente, y en algunos casos actuales, los diseñadores de circuitos electrónicos solían raspar la parte superior de los circuitos integrados con el objetivo de borrar la identificación del chip y así evitar que otras personas plagiaran su diseño.

No es necesario hacer esto con los dispositivos que tienen sistema de protección de código. Activando la protección de código, las instrucciones grabadas en la memoria de programa del dispositivo no pueden ser leídas por ningún dispositivo externo. El chip seguirá siendo funcional, se le puede grabar un nuevo programa, pero nunca se sabrá que programa tenía anteriormente.

-   Modo de depuración. Al activar el modo de depuración el dispositivo dedica unas cuantas de sus terminales para comunicarse con el dispositivo depurador, por lo cual estas terminales no pueden funcionar como entrada/salida.

En el modo de depuración el usuario puede controlar la velocidad con la que el microcontrolador ejecuta las instrucciones, puede ver el contenido de las memorias de programa y de datos, entre otras cosas.

-   Programación con bajo voltaje. Los microcontroladores PIC tienen dos modos de grabación:
o   Programación con voltaje alto. En este modo ocurre lo siguiente:
      I.   Si la terminal MCLR recibe un voltaje de 0 V el microcontrolador entra en estado de reset y no ejecuta instrucciones.
      II.   Si la terminal MCLR recibe un voltaje de 5 V el microcontrolador ejecuta instrucciones normalmente.
      III.   Si la terminal MCLR recibe un voltaje de 12 V el microcontrolador entra en modo de grabación y recibe las instrucciones que han de grabarse en su memoria de programa.
o   Programación con voltaje bajo. En este modo de grabación ocurre lo siguiente:
      I.   Si la terminal RB3/PGM recibe un ‘0’ lógico el microcontrolador opera de manera normal.
      II.   Si la terminal RB3/PGM recibe un ‘1’ lógico el microcontrolador entra en modo de grabación.

Cuando el microcontrolador está en modo de grabación las terminales RB7 y RB6 soportan los datos y el reloj, respectivamente.

- Detector de fallas de reloj. Cuando los microcontroladores operan con una señal de reloj externa hay el riesgo de perder conexión con dicha señal (por averías en la pista, porque el dispositivo que brindaba la señal dejó de funcionar, etc.).

Algunos microcontroladores tienen integrado un detector de fallas de reloj, el cual detecta si se ha perdido la señal de sincronía externa, momento en el cual realiza un switcheo hacia el reloj interno. Esto quizá requiera hacer ajustes en el programa, ya que posiblemente el reloj externo operaba a una velocidad diferente del interno.

- Protección de datos. Esto es algo similar a la protección de código. Activando la protección de datos la memoria EEPROM no puede ser leída por ningún dispositivo externo (aunque sí puede ser escrita).

Bien, eston son algunos de los mecanismos que pueden activarse o desactivarse mediante la palabra de configuración.

Ahora ¿Cómo especifico la palabra de configuración en el programa? Esto depende del software ensamblador/compilador que se utilice.

En el software MPASM del MPLAB IDE la palabra de configuración se especifica mediante la directiva __CONFIG (notar que lleva dos guiones bajos) seguida de ciertos parámetros que especifican los mecanismos a configurarse.

Pongamos como ejemplo al PIC16F84A. Los mecanismos de este microcontrolador que pueden configurarse mediante la palabra de configuración son:

- Temporizador de arranque (Power Up Timer).
- Tipo de oscilador.
- Watchdog Timer.
- Protección de código.

Supongamos que deseamos que nuestro microcontrolador:

- Opere con un cristal de 20 MHz (Oscilador HS).
- El Watchdog Timer se desactive (para que no reinicie nuestro programa a cada rato).
-  el Power Up Timer encienda (para que el micro no funcione hasta que el nivel de alimentación se estabilice).
- El código en su memoria de programa quede protegido para que nadie pueda leer el programa guardado en el dispositivo.

Esto se especifica así en el MPASM de MPLAB IDE:

   __CONFIG   _HS_OSC & _WDT_OFF & _PWRTE_ON & _CP_ON

En el compilador PCWH de la empresa CCS se especifica así:

   #fuses   HS, NOWDT, PUT, CP

Bueno, aquí acaba este tema. Nos vemos luego.


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: meneraing en 17 Septiembre 2010, 03:49 am
se me a quebrado una patita de un micro... como hago para arreglarla?

se puede?


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: snakewather en 2 Noviembre 2010, 20:54 pm
se me a quebrado una patita de un micro... como hago para arreglarla?

se puede?


Hola si tienes un diodo como el 1N4007 le puedes cortar un pedasito de las patitas del largo de la patilla de un pic despues se la soldas al pin con mucho cuidado y tratando de no calentar demasiado el pic.


Título: Re: Mis pequeñas prácticas con microcontroladores
Publicado por: Nork en 8 Noviembre 2010, 20:13 pm
Buena iniciativa!. Aquí dejo como encender un led por interrupciones.

Código
  1. #include<p18F4550.h>
  2. #define freq 8   // Frequencia de la CPU
  3.  
  4. void Delay_ms(unsigned int t)
  5.    {
  6. unsigned long n,i;
  7. n=t*freq;
  8. n=n*25/2;
  9.    for(i=0;i<n;i++);
  10.    return;
  11.    }
  12.  
  13. void encender_led();
  14.  
  15. #pragma code high_vector = 0x08
  16. void high_interrupt(void)
  17. {
  18. _asm
  19. goto encender_led
  20. _endasm
  21. }
  22.  
  23. #pragma code
  24. #pragma interrupt encender_led
  25. void encender_led()
  26. {
  27. INTCON3bits.INT1IE = 0;
  28. }
  29.  
  30. void main()
  31. {
  32. TRISA = 0xF0;
  33. TRISB = 0x0F;
  34. PORTA = 0x00;
  35.  
  36. RCONbits.IPEN = 1;
  37. INTCON2bits.RBIP = 1;
  38. INTCONbits.GIEH = 1;
  39. INTCON3bits.INT1IP = 1;
  40. INTCON3bits.INT1IE = 1;
  41.  
  42. while(1)
  43.       {
  44.              if(INTCON3bits.INT1IF){
  45.                   INTCON3bits.INT1IF = 0;
  46.            if (LATA) PORTA = 0x00;
  47.            else PORTA = 0x01;
  48.              }
  49.              Delay_ms(10);
  50.      INTCON3bits.INT1IE = 1;
  51.      Delay_ms(10);
  52. }
  53. }

El microcontolador, como se puede ver en las librerias, es un P18F4550. Yo lo tengo sobre una EASYPIC.

Saludos!