Autor Tema: Mis primeros pasos con el 18F4550  (Leído 169714 veces)

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

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Mis primeros pasos con el 18F4550
« Respuesta #60 en: 17 de Marzo de 2007, 11:17:32 »
Slalen yo creo que una forma de despejar esta duda, es cambiando la versión en el código fuente y recompilar la DLL de nuevo y ver que sale.

repetir esto varias veces para estar seguro.

Salu2
Pedro
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado poncho1479

  • PIC10
  • *
  • Mensajes: 14
Re: Mis primeros pasos con el 18F4550
« Respuesta #61 en: 20 de Marzo de 2007, 04:47:24 »
hola compañeros se me hace interesante este tema, les tengo una pregunta se podria comunicar este pic con un celular via usb??
en especifico mandar codigos at al telefono??
saludos

Desconectado elmasvital

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 1713
Re: Mis primeros pasos con el 18F4550
« Respuesta #62 en: 20 de Marzo de 2007, 11:23:09 »
Palitroquez usa los adjuntos del foro para las fotos que tienes pegadas... que los servicios gratuitos los borran con el tiempo. Entiendo que los pusiste así para evitar cargar el foro pero las imágenes y el post son lo suficientemente interesantes para conservarlas aquí.

1 saludo

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Mis primeros pasos con el 18F4550
« Respuesta #63 en: 21 de Marzo de 2007, 13:37:05 »
hola compañeros se me hace interesante este tema, les tengo una pregunta se podria comunicar este pic con un celular via usb??
en especifico mandar codigos at al telefono??
saludos

Hola poncho1479. no me he metido con la comunicación hacia un celular, sería cuestión de estudiar el protocolo del mismo y ver la forma de hacerlo interactuar con un pic.

también habría que averiguar si el celular puede actuar en modo HOST, porque en la arquitectura USB debe haber un HOST y al menos un dispositivo

---------------------------------------------------------------------------------------

Palitroquez usa los adjuntos del foro para las fotos que tienes pegadas... que los servicios gratuitos los borran con el tiempo. Entiendo que los pusiste así para evitar cargar el foro pero las imágenes y el post son lo suficientemente interesantes para conservarlas aquí.

1 saludo

elmasvital ya me acostumbré al imageshacks  :D. trataré de hacer lo que me dices para la próxima.

de todas maneras aquí está un compacto en chm que complementa a la primera que colgué, se llama:


Mis_primeros_pasos_con_el_18F4550_parte2.rar

son 22 Mb porque allí está todo, los videos, imagenes, adjuntos y es lo mismo publicado pero mejor arreglado y con la mención de los autores de los códigos y fuentes respectivas




La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Mis primeros pasos con el 18F4550
« Respuesta #64 en: 22 de Marzo de 2007, 11:36:07 »
Hola Amig@s.

como ya le dimos bastante rosca al lenguaje C, ahora vamos hacer el estudio en ensamblador sobre todo para conocer las nuevas instrucciones que trae la familia 18.

El primer estudio será el como manejar tablas ROM de datos constantes.

para manejar tablas ROM en PIC18 se usa 2 formas:

- Computed GOTO
- Table Reads

ver pág 62 39632D.pdf

el método computed goto es la acostumbrada tabla que hemos usado, el addwf PCL,F
el cuál consiste en sumar un valor a la dirección de la memoria de programa para caer en un
retlw k y así obtener la constante deseada.
pero tiene un incoveniente, solo llega hasta el ancho de PCL que son 8 bits y vendrian siendo 2^8 = 256 constantes entonces si queremos continuar la tabla hay que aplicar otras tecnicas haciendo engorrosa la programación.

la otra es Table Reads y consta de usar un par de SFR llamados TBLRD para lectura y TBLWT para escribir en la ROM

con este método podemos direccionar el ancho de la memoria de programa (21 bits) y leer datos de 1 byte, es decir, que esto nos viene como anillo al dedo porque podemos almacenar datos contiguos en UNA SOLA tabla, (dependiendo de la memoria disponible en el PIC18F4550 la memoria llega hasta 0x3FFF)



según la figura 6-1 pag 81 se observa que para acceder a la ROM se usan 3 registros de 8 bits


TBLPTRU:TBLPTRH:TBLPTRL

y el dato almacenado se guardará en TABLAT

el TABLAT hay que usarlo mediante un puntero que es el intermediario entre la dirección de la ROM y TABLAT, este puntero es un SFR llamado TBLPTR (ver página 84)



noten que tenemos hasta la opción de incrementar/decrementar el puntero para hacer una lectura en secuencia

notas:
- me voy a enfocar solo en la lectura de datos para darle aplicación al manejo de tablas (TBLRD)

- el término ROM es mejor adaptarlo a Flash ROM ya que es evidente que se puede grabar en tiempo  de ejecución del PIC

vamos a ver el ejemplo que trae la datasheet



la explicación es la siguiente:

- se carga el valor de la dirección de la Flash ROM donde está nuestro dato a buscar.

- se llama al puntero TBLPTR para que cargue el dato en TABLAT

- luego procedemos a usar el contenido de TABLAT para usarlo en nuestra aplicación.

ahora viene una pregunta: ¿y como se crea la tabla?

investigando en la fuente de abajo, vemos que usan 2 directivas: ORG y DB

ORG n: indica que todo las lineas que esté por debajo se alojaran a partir de la dirección n

DB:  Reserva valores de 8 bits en la memoria de programa

(ver en la ayuda de MPASM Assembler Help)

si tomamos el ejemplo del link de abajo:

Código: ASM
  1. org 0x100 ; Starting address of table (any valid address)
  2. DB 0x01, 0x02 ; stored as 0x0201 at location 101:100


claro este método tiene su inconveniente:
- si la dirección del dato no es la correcta entonces el dato será errado, entonces hay que estar pendiente con la asignación.

- es el detalle que le encuentro a primera vista, con los ejemplos veremos si existen otros.

vamos hacer un ejemplito para comprobar lo dicho.

vamos a crear una tabla con la cadena "Hola TodoPic"

Código: ASM
  1. ; se hace uso del TBLRD para el manejo de tablas
  2. ; se crea un tabla con "Hola TodoPic"  y se vá llamando
  3. ; un carácter a la vez que se guarda en dato
  4. ;
  5. ; Pedro - PalitroqueZ     21-Mar-2006   05:03PM
  6.  
  7.     LIST P=18F4550   ;directive to define processor
  8.     #include <P18F4550.INC> ;processor specific variable definitions
  9.  
  10.  CBLOCK 0x0
  11.  dato
  12.  ENDC
  13.  
  14.  org 0
  15.  goto inicio
  16.  
  17. inicio:
  18.  MOVLW 0       ; limpia TBLPTRU
  19.  MOVWF TBLPTRU
  20.  MOVLW 0
  21.  MOVWF TBLPTRH ; limpia TBLPTRU
  22.  MOVLW 0x82
  23.  MOVWF TBLPTRL  ; carga a 82 en TBLPTRL
  24.  
  25. ciclo:
  26.  TBLRD*+        ; TABLAT++
  27.  MOVF TABLAT, W ; W <- TABLAT
  28.  movwf dato     ; dato <- W
  29.  goto ciclo     ; bucle eterno
  30.  
  31.  ; se crea la tabla
  32.  org 0x82
  33.  db "Hola TodoPic"
  34.  
  35.  end

un video de demostración:

usando tablas1.wmv

bueno al menos funciona la simulación de la teoría planteada.

nota: con este uC pic estoy aprendiendo cosas que no llegué a estudiar con el 16F

el adjunto

fuente consultada:

Storing lookup table data in PIC18 devices using Assembly Language
« Última modificación: 30 de Octubre de 2007, 19:03:01 por PalitroqueZ »
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado manuelroin24

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 665
Re: Mis primeros pasos con el 18F4550
« Respuesta #65 en: 22 de Marzo de 2007, 13:21:44 »
Q bien!!! ahora si me conecto aqui el assembler es lo mio jejejeje gracias
El conocimiento se consigue a base de esfuerzo...

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Mis primeros pasos con el 18F4550
« Respuesta #66 en: 22 de Marzo de 2007, 14:14:18 »
Hola manuel. ¡que bueno!, ya he visto varias instrucciones que valen la pena mencionarlas.



continuando con esto de las tablillas en la flash ROM...

vamos a crear una tabla que pase de los 255 datos a ver que sucede:

como los datos a guardar serán nibbles (ya les diré), entonces debemos usar los db con 8 datos.
¿porque?

porque se guardan en la flash en espacios de 2 bytes contiguos, entonces para que no leer ceros de por medio se deben introducir datos que sean multiplos de 2

y en este ejemplo cada db tendrá 4 bytes = 8 nibbles

Código: ASM
  1. ; se hace uso del TBLRD para el manejo de tablas
  2. ; se crea un tabla > 255 datos y se vá llamando
  3. ; de a un nibble a la vez que se guarda en dato
  4. ;
  5. ; Pedro - PalitroqueZ     21-Mar-2006   08:23PM
  6.  
  7.     LIST P=18F4550   ;directive to define processor
  8.     #include <P18F4550.INC> ;processor specific variable definitions
  9.  
  10.  CBLOCK 0x0
  11.  dato
  12.  ENDC
  13.  
  14.  org 0
  15.  goto inicio
  16.  
  17. inicio:
  18.  clrf dato
  19.  MOVLW 0       ; limpia TBLPTRU
  20.  MOVWF TBLPTRU
  21.  MOVLW 0
  22.  MOVWF TBLPTRH ; limpia TBLPTRU
  23.  MOVLW 0x82
  24.  MOVWF TBLPTRL  ; carga a 82 en TBLPTRL
  25.  
  26. ciclo:
  27.  TBLRD*+        ; TABLAT++
  28.  MOVF TABLAT, W ; W <- TABLAT
  29.  movwf dato     ; dato <- W
  30.  goto ciclo     ; bucle eterno
  31.  
  32.  ; se crea la tabla
  33.  org 0x82
  34.  db  0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8
  35.  db  0x9,0x1,0x2,0x3,0x4,0x5,0x6,0x7
  36.  db  0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8
  37.  db  0x9,0x1,0x2,0x3,0x4,0x5,0x6,0x7
  38.  db  0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8
  39.  db  0x9,0x1,0x2,0x3,0x4,0x5,0x6,0x7
  40.  db  0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8
  41.  db  0x9,0x1,0x2,0x3,0x4,0x5,0x6,0x7
  42.  db  0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8
  43.  db  0x9,0x1,0x2,0x3,0x4,0x5,0x6,0x7
  44.  db  0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8
  45.  db  0x9,0x1,0x2,0x3,0x4,0x5,0x6,0x7
  46.  db  0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8
  47.  db  0x9,0x1,0x2,0x3,0x4,0x5,0x6,0x7
  48.  db  0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8
  49.  db  0x9,0x1,0x2,0x3,0x4,0x5,0x6,0x7
  50.  db  0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8
  51.  db  0x9,0x1,0x2,0x3,0x4,0x5,0x6,0x7
  52.  db  0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8
  53.  db  0x9,0x1,0x2,0x3,0x4,0x5,0x6,0x7
  54.  db  0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8
  55.  db  0x9,0x1,0x2,0x3,0x4,0x5,0x6,0x7
  56.  db  0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8
  57.  db  0x9,0x1,0x2,0x3,0x4,0x5,0x6,0x7
  58.  db  0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8
  59.  db  0x9,0x1,0x2,0x3,0x4,0x5,0x6,0x7
  60.  db  0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8
  61.  db  0x9,0x1,0x2,0x3,0x4,0x5,0x6,0x7
  62.  db  0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8
  63.  db  0x9,0x1,0x2,0x3,0x4,0x5,0x6,0x7
  64.  db  0x1,0x2,0x3,0x4,0x5,0x6,0x7,0x8
  65.  db  0x9,0x1,0x2,0x3,0x4,0x5,0x6,0x7
  66.  
  67. ; offset= 256
  68.  db  "llego"
  69.  end

si la tabla se creó a partir de 0x82 entonces cuando TBLPTR = 0x82 + 0xFF + 1 = 0x182 habrá
llegado a 256 datos. y después.. se desborda...  -ahh- ¿se lo creyeron? ..  :mrgreen: jaja. por supuesto que el contador continuuua (y NO se desborda)...

un video

ejemplo9_parte2v1.wmv

La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Mis primeros pasos con el 18F4550
« Respuesta #67 en: 22 de Marzo de 2007, 23:04:36 »
Caramba pedro que bueno todo este trabajo tuyo. Te felicito mucho por ello.

El pasarte al asm, seria pelearte con el monstrico PIC18F4550 con solo palos y piedras.  :D

Suerte amigo y mucho animo que en asm es muchotototote lo que hay que estudiar.

Saludos!

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Mis primeros pasos con el 18F4550
« Respuesta #68 en: 23 de Marzo de 2007, 13:32:27 »
Gracias Ernesto, yo voy a llegar hasta donde se pueda, sobre todo quiero entender ciertas instrucciones, para darle aplicaciones cuando tenga inconvenientes en C
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado txiku

  • PIC10
  • *
  • Mensajes: 9
pasos con el 18F4550 driver microchip
« Respuesta #69 en: 23 de Marzo de 2007, 15:30:08 »
Hola palitroquez, mi nombre es javier y soy un estudiante de electronica de santander y llevo ya un par de meses siguiendo tus pasos en el mundo del usb, asi como los de Redpic.
Estoy desarrollando un proyecto sobre esta comunicacion usb-cdc y tengo una serie de problemas con los que quizas me podrias ayudar, si tienes tiempo claro esta.
1. El primero, es que he estado programando el prototipo que utiliza Redpic en su pagina con el ICD2 de microchip. Al principio no he tenido problemas para trabajar desde Mplab. En el pc estoy trabajando con VB5 y el objeto Mscomm. He instalado el driver que nos suministra microchip "mchpcdc.inf" y ha llegado un momento en el cual el PC me deja de reconocer mi placa, eliminando toda posibilidad de comunicacion usb.
  He comprobado que el pic18f4455 esta correctamente
  He comprobado las conexiones del pequeño prototipo
  He vuelto a instalar el driver de microchip con la opcion del boton derecho
  He cambiado de PC
  He cambiado de cable usb
No encuentro la forma de que mi host vuelva a reconocer mi placa prototipo. Por ello te pido desde mi posicion de alumno, que si tienes alguna idea para echar a andar de nuevo mi placa, me contestes.
Gracias por todo y un cordial saludo.
javier

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Mis primeros pasos con el 18F4550
« Respuesta #70 en: 23 de Marzo de 2007, 16:42:15 »
txiku, ante tan formal peticion de ayuda, no hay un por que no ayudarte, se que la pregunta es para pedro, pero permisito me meto.

La mejor forma de ayudarte es de esta forma:

1.) intenta quitando todo al programa y solo dejale la parte de comunicacion USB en CDC.

2.) Monta el codigo para revisarlo.

3.) Mira si es el cristal el que esta malo.

4.) Verifica que estas configurando bien el PLL interno del PIC.

4.)Prueba programado en el PIC que tienes el siguiente programa que te paso y me dices si te conecta. Si lo hace, descartas, PIc, Impreso y demas y solo quedamos en que el problema es el programa. Colocale al pic un cristal de 20MHz

Saludos!


Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: Mis primeros pasos con el 18F4550
« Respuesta #71 en: 23 de Marzo de 2007, 17:55:54 »
eso mismo que dice PICmouse  :mrgreen:

txiku también quiero preguntarte :

el programa CDC en VB que usas, ¿es el último que colgué?

si es así te diré que en ese programa, yo usé 2 timer con un intervalo muy pequeño y determiné que después de cierto tiempo el programa puede colgarse, la solución es quitarle el timer que sensa el estado del dispositivo. ( este es en comunicación CDC, el otro corre perfectamente)
« Última modificación: 23 de Marzo de 2007, 17:57:39 por PalitroqueZ »
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado txiku

  • PIC10
  • *
  • Mensajes: 9
Re: Mis primeros pasos con el 18F4550
« Respuesta #72 en: 25 de Marzo de 2007, 17:23:01 »
Hola amigos!! joder, me alegro un monton de que ustedes me hayan contestado.Gracias de nuevo por su ayuda.
Palitroquez, mi programa de VB5 lo confeccione yo, no es de los que has colgado tu, pero pienso que el error esta mucho antes de abrir el visual basic ya que para poder establecer una conexion, el dispositivo debe de ser reconocido por el host y para ello solo hay que conectar el cable usb.
Esto me lleva a pensar que el driver de microchip no esta funcionando correctamente o que mi programa tiene algo que impide que se produzca esta conexion usb.
Picmouse, voy a intentar hacer lo que me dices, pero antes decirte que el cristal que uso es de 20 MHz y con otro pequeño programa ajeno a la conexion usb he comprobado que oscila yque el pic18f4455 funciona.
En los fuses tengo habilitado el modulo HSPLL y configurado a PLL5 ya que mi cristal es de 20MHz.
No estoy seguro de poder probar tu archivo *.HEX porque mi herramienta de programacion es ICD2 via usb y no tengo en mi placa mas puertos.¿como puedo hacerlo?
Mañana seguire con las pruebas y ya os voy comentando.
saludos
javi

Desconectado LABmouse

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3575
    • Juntos es mejor
Re: Mis primeros pasos con el 18F4550
« Respuesta #73 en: 25 de Marzo de 2007, 18:18:06 »
Claro que con el ICD2 lo puedes hacer, solo debes seleccionar en MPLAB Select Programmer, le das ICD2, despues le das File- Import, y buscas el .hex y ya esta, lo puedes programar.

Saludos!

Desconectado txiku

  • PIC10
  • *
  • Mensajes: 9
Re: Mis primeros pasos con el 18F4550
« Respuesta #74 en: 26 de Marzo de 2007, 15:18:48 »
Hola picmouse! estoy haciendo pruebas con la placa usb cdc yte cuento:
he cambiado mi programa y dejado solo las instrucciones de la comunicacion usb. Con este programa asi como con tu archivo *.hex, me reconoce el dispositivo de una vez por todas, pero... no me lo reconoce como un puerto serie virtual sino como un 'dispositivo desconocido' en administrador de dispositivos/controladores de bus serie universal.

Entonces el sistema operativo le ha asignado un controlador de windows, que no es el de microchip. Estoy intentando instalar el driver de microchip, pero me dice que el controlador de windows es el mas adecuadoy que el de microchip no le quiere.
Aunque desinstale el dispositivo y me lo vuelva a reconocer siempre me lo pilla como desconocido y no de da opcion de cargar el driver de microchip.
¿alguna idea?
gracias por todo.javi