Sensor temperatura + PIC18F2550 + comunicación USB
+10
oskr
cdmontoya82
carlostex
israel benjamin
Pikitin
diguito69
andres53016
maigke
JosePablo
eol
14 participantes
Página 1 de 2.
Página 1 de 2. • 1, 2
Sensor temperatura + PIC18F2550 + comunicación USB
Esta es una aplicación muy sencilla en base al PIC18F2550 usando la comunicación USB para la conexión y transferencia de datos bidireccionales entre la plataforma Linux y un sensor/actuador final.
Consiste de un integrado LM335 como sensor de temperatura, conectado a una puerta de entrada análoga del 2550 y unos diodos leds conectados a una puerta digital de salida. Estos leds cumplen la tarea de verificar la operación del firmware grabado en el PIC.
La comunicación PIC - PC (Linux) se establece por medio de USB 2.0
En el ambiente Linux se pueden ocupar dos programas para leer la información de temperatura del sensor:
a) Un programa para consola, que entrega el dato leido en grados centígrados.
b) Un programa para ambiente gráfico, ocupando GTK + Glade, crea una ventana donde se despliega en forma continua el dato leido en grados centígrados.
Primero veamos el Hardware:
El PIC18F2550 y el sensor LM335 se alimentan de la linea de 5V que se origina en el puerto USB del PC.
El cristal usado es de 20MHz con la red RC de 1M + 2*22pF.
Los capacitores C1 y C4 desacoplan la fuente de alimentación principal y el voltaje USB.
R1 aparece como pull-up de la linea de MCLR, pero es una costumbre de cuando ocupaba el microcontrolador 8031.
R7 y R8 se colocaron para corregir un problema que aparecio en las primeras etapas de implementación, cuando la puerta USB del PC-Linux no mantenía el reconocimiento/enumeración del dispositivo y enviaba todo al limbo y más allá.
El diodo LED D2 se ocupa como señal "heart beat", parpadea rapidamente en la etapa inicial de conexión/reconocimiento/enumeración de la puerta USB y luego permanece con un ciclo de 1 Hz al establecer el canal de comunicación.
Los diodos LED D3 y D4 son testigos del tipo de transferencia ocupada: Feature, Report.
El punto de operación del sensor de temperatura LM335 está dado por el valor de R2, de acuerdo al valor típico de corriente sugerido en la hoja de datos de este integrado.
La señal de voltaje modulada por la temperatura se aplica a la entrada análoga AN0. El sensor se encuentra cerca del PIC y no es necesario blindar o acondicionar esta señal.
Veamos los resultados:
Corriendo sobre Ubuntu Karmic en un notebook Lenovo G450.
La ejecución y respuesta del programa para consola.
La ejecución y respuesta del programa para ambiente gráfico.
Se ocupó GTK y el editor Glade para diseñar la ventana. En esta aplicación la lectura se refresca en forma automática cada segundo. Al picar en el botón "Leer" se invoca una lectura instantanea.
Ahora el Software:
a) El Firmware para el PIC18F2550.
Proviene del firmware de Alexander Enzmann (2005), adaptado a MCC18 por Alberto Maccioni (1/8/09). El código lo volví a re-adaptar a SDCC (22/06/10) para poder ocupar la dupla SDCC+PIKLAB y programar en un Pickit 2 Clone versión "Felixls".
Este firmware establece al PIC como un dispositivo HID.
El código fue modificado para incluir el proceso de conversión analogo-digital y establecer el mecanismo y formato de la entrega de los datos leidos.
b) Los programas para la plataforma Linux.
Inicialmente las pruebas se realizaron con el codigo en C del programa de comunicación de Maccioni para su firmware. Este programa ocupa capacidades del sistema, tales como llamadas a /dev/hiddev , ioctl, etc. junto con estructuras de datos para la entrada y salida.
El código fue resumido para ocupar las funciones mínimas de comunicacion USB y transferencia de datos de acuerdo al firmware de adquisición AD que se programó en el PIC.
Una vez que se logró la comunicación PIC-USB-PCLinux mediante el empleo del programa bajo consola, se escribió un programa para Gnome+GTK que ocupara el ambiente gráfico. En realidad no aporta al objetivo básico del proyecto PIC-USB, pero mejora la presentación y aumenta las posibilidades de otros desarrollos en base a este proyecto.
Ahora tengo que ver donde alojar los programas fuente mencionados, para compartirlos con ustedes.
Voy a eso.
OK.
Aquí, el Esquemático en pdf.
http://www.mediafire.com/?02nc7uhv2h2wqew
Aquí, el Firmware USB PIC.
http://www.mediafire.com/?ggmndtpss3eqne4
Está completo, como un proyecto PIKLAB, con los programas fuente en C, los archivos .h y los productos de la última compilación. Incluye el archivo PICUSBFW.hex para grabarlo en el PIC.
Aquí, los programas para el PC Linux.
El archivo "Makefile" se ocupa para la construcción del programa "leeadcpic" que usa el ambiente gráfico. Se construye en consola con "make all"
El archivo "leeADCPIC.c" es el fuente del programa para consola. Se compila en consola con gcc.
Son versiones de arduo trabajo, así que el código es a lo menos desordenado y faltan mas indicaciones de qué está ocurriendo. En la próxima lo voy a dejar más presentable.
http://www.mediafire.com/?ggmndtpss3eqne4
Saludos
EOL
Consiste de un integrado LM335 como sensor de temperatura, conectado a una puerta de entrada análoga del 2550 y unos diodos leds conectados a una puerta digital de salida. Estos leds cumplen la tarea de verificar la operación del firmware grabado en el PIC.
La comunicación PIC - PC (Linux) se establece por medio de USB 2.0
En el ambiente Linux se pueden ocupar dos programas para leer la información de temperatura del sensor:
a) Un programa para consola, que entrega el dato leido en grados centígrados.
b) Un programa para ambiente gráfico, ocupando GTK + Glade, crea una ventana donde se despliega en forma continua el dato leido en grados centígrados.
Primero veamos el Hardware:
El PIC18F2550 y el sensor LM335 se alimentan de la linea de 5V que se origina en el puerto USB del PC.
El cristal usado es de 20MHz con la red RC de 1M + 2*22pF.
Los capacitores C1 y C4 desacoplan la fuente de alimentación principal y el voltaje USB.
R1 aparece como pull-up de la linea de MCLR, pero es una costumbre de cuando ocupaba el microcontrolador 8031.
R7 y R8 se colocaron para corregir un problema que aparecio en las primeras etapas de implementación, cuando la puerta USB del PC-Linux no mantenía el reconocimiento/enumeración del dispositivo y enviaba todo al limbo y más allá.
El diodo LED D2 se ocupa como señal "heart beat", parpadea rapidamente en la etapa inicial de conexión/reconocimiento/enumeración de la puerta USB y luego permanece con un ciclo de 1 Hz al establecer el canal de comunicación.
Los diodos LED D3 y D4 son testigos del tipo de transferencia ocupada: Feature, Report.
El punto de operación del sensor de temperatura LM335 está dado por el valor de R2, de acuerdo al valor típico de corriente sugerido en la hoja de datos de este integrado.
La señal de voltaje modulada por la temperatura se aplica a la entrada análoga AN0. El sensor se encuentra cerca del PIC y no es necesario blindar o acondicionar esta señal.
Veamos los resultados:
Corriendo sobre Ubuntu Karmic en un notebook Lenovo G450.
La ejecución y respuesta del programa para consola.
La ejecución y respuesta del programa para ambiente gráfico.
Se ocupó GTK y el editor Glade para diseñar la ventana. En esta aplicación la lectura se refresca en forma automática cada segundo. Al picar en el botón "Leer" se invoca una lectura instantanea.
Ahora el Software:
a) El Firmware para el PIC18F2550.
Proviene del firmware de Alexander Enzmann (2005), adaptado a MCC18 por Alberto Maccioni (1/8/09). El código lo volví a re-adaptar a SDCC (22/06/10) para poder ocupar la dupla SDCC+PIKLAB y programar en un Pickit 2 Clone versión "Felixls".
Este firmware establece al PIC como un dispositivo HID.
El código fue modificado para incluir el proceso de conversión analogo-digital y establecer el mecanismo y formato de la entrega de los datos leidos.
b) Los programas para la plataforma Linux.
Inicialmente las pruebas se realizaron con el codigo en C del programa de comunicación de Maccioni para su firmware. Este programa ocupa capacidades del sistema, tales como llamadas a /dev/hiddev , ioctl, etc. junto con estructuras de datos para la entrada y salida.
El código fue resumido para ocupar las funciones mínimas de comunicacion USB y transferencia de datos de acuerdo al firmware de adquisición AD que se programó en el PIC.
Una vez que se logró la comunicación PIC-USB-PCLinux mediante el empleo del programa bajo consola, se escribió un programa para Gnome+GTK que ocupara el ambiente gráfico. En realidad no aporta al objetivo básico del proyecto PIC-USB, pero mejora la presentación y aumenta las posibilidades de otros desarrollos en base a este proyecto.
Ahora tengo que ver donde alojar los programas fuente mencionados, para compartirlos con ustedes.
Voy a eso.
OK.
Aquí, el Esquemático en pdf.
http://www.mediafire.com/?02nc7uhv2h2wqew
Aquí, el Firmware USB PIC.
http://www.mediafire.com/?ggmndtpss3eqne4
Está completo, como un proyecto PIKLAB, con los programas fuente en C, los archivos .h y los productos de la última compilación. Incluye el archivo PICUSBFW.hex para grabarlo en el PIC.
Aquí, los programas para el PC Linux.
El archivo "Makefile" se ocupa para la construcción del programa "leeadcpic" que usa el ambiente gráfico. Se construye en consola con "make all"
El archivo "leeADCPIC.c" es el fuente del programa para consola. Se compila en consola con gcc.
Son versiones de arduo trabajo, así que el código es a lo menos desordenado y faltan mas indicaciones de qué está ocurriendo. En la próxima lo voy a dejar más presentable.
http://www.mediafire.com/?ggmndtpss3eqne4
Saludos
EOL
Última edición por eol el Miér 12 Dic 2012 - 2:17, editado 3 veces (Razón : Reemplazar enlaces difuntos de MegaUpload por enlaces MediaFire)
eol- Participante
- Mensajes : 21
Fecha de inscripción : 06/06/2010
Localización : Paine (RM) Chile
Problemas con el código del firmware
Hola.
Llevo días probando con diferentes códigos de diferentes proyectos de comunicación USB con el SDCC v2.9 en un pic 18f4550 con un cristal de 4MHz. Tome el código que subiste y lo probé. Solo cambié el pll de 5 a 1 para que se ajustara al cristal que estoy utilizando.
Lo compilé de la siguiente manera:
Probé en windows donde tengo instalado el libusb-win32 y lo que me dice es que el sipositivo no tiene VendorId ni ProductId.
Probé con un código para PICC (CCS) que hice para otro proyecto y este funciona perfectamente en el mismo PIC lo cual me indica que no hay ningún problema de hardware interno o de conexiones externas.
Si tienen alguna idea de cual podría ser el problema se los agradesco.
Llevo días probando con diferentes códigos de diferentes proyectos de comunicación USB con el SDCC v2.9 en un pic 18f4550 con un cristal de 4MHz. Tome el código que subiste y lo probé. Solo cambié el pll de 5 a 1 para que se ajustara al cristal que estoy utilizando.
Lo compilé de la siguiente manera:
- Código:
sdcc -mpic16 -p18f4550 --debug -c usb.c
sdcc -mpic16 -p18f4550 --debug -c PICUSBFW.c
sdcc -mpic16 -p18f4550 --debug -Wl-m -Wl-c -o main.hex usb.o PICUSBFW.o libio18f4550.lib libsdcc.lib
- Código:
usb.c:804: warning 110: conditional flow changed by optimizer: so said EVELYN the modified DOG
- Código:
May 9 21:10:55 El-Shaddai kernel: [115588.584034] usb 2-1: new full speed USB device using uhci_hcd and address 7
May 9 21:10:56 El-Shaddai kernel: [115589.150039] usb 2-1: new full speed USB device using uhci_hcd and address 8
May 9 21:10:56 El-Shaddai kernel: [115589.672059] usb 2-1: new full speed USB device using uhci_hcd and address 9
May 9 21:10:57 El-Shaddai kernel: [115590.196045] usb 2-2: new full speed USB device using uhci_hcd and address 10
- Código:
[116210.977884] usb 2-1: new full speed USB device using uhci_hcd and address 11
[116211.096039] usb 2-1: device descriptor read/64, error -32
[116211.320531] usb 2-1: device descriptor read/64, error -32
[116211.536040] usb 2-1: new full speed USB device using uhci_hcd and address 12
[116211.656537] usb 2-1: device descriptor read/64, error -32
[116211.880061] usb 2-1: device descriptor read/64, error -32
[116212.096050] usb 2-1: new full speed USB device using uhci_hcd and address 13
[116212.504035] usb 2-1: device not accepting address 13, error -32
[116212.616034] usb 2-1: new full speed USB device using uhci_hcd and address 14
[116213.025992] usb 2-1: device not accepting address 14, error -32
[116213.026024] hub 2-0:1.0: unable to enumerate USB device on port 1
[116658.616047] usb 2-1: new full speed USB device using uhci_hcd and address 15
[116658.736540] usb 2-1: device descriptor read/64, error -71
[116658.964541] usb 2-1: device descriptor read/64, error -71
[116659.180752] usb 2-1: new full speed USB device using uhci_hcd and address 16
[116659.300033] usb 2-1: device descriptor read/64, error -71
[116659.528552] usb 2-1: device descriptor read/64, error -71
[116659.744546] usb 2-1: new full speed USB device using uhci_hcd and address 17
[116660.152521] usb 2-1: device not accepting address 17, error -71
[116660.264536] usb 2-1: new full speed USB device using uhci_hcd and address 18
[116660.672538] usb 2-1: device not accepting address 18, error -71
[116660.672572] hub 2-0:1.0: unable to enumerate USB device on port 1
Probé en windows donde tengo instalado el libusb-win32 y lo que me dice es que el sipositivo no tiene VendorId ni ProductId.
Probé con un código para PICC (CCS) que hice para otro proyecto y este funciona perfectamente en el mismo PIC lo cual me indica que no hay ningún problema de hardware interno o de conexiones externas.
Si tienen alguna idea de cual podría ser el problema se los agradesco.
JosePablo- Participante
- Mensajes : 22
Fecha de inscripción : 10/01/2009
Edad : 43
Localización : Costa Rica
Re: Sensor temperatura + PIC18F2550 + comunicación USB
José Pablo:
Recién leí tu mensaje. Voy a probar en mi sistema, con las modificaciones que mencionas para el 4550, a ver que resultados tengo.
Saludos
eol
Recién leí tu mensaje. Voy a probar en mi sistema, con las modificaciones que mencionas para el 4550, a ver que resultados tengo.
Saludos
eol
Última edición por eol el Mar 10 Mayo 2011 - 22:00, editado 1 vez (Razón : corregir nombre de usuario)
eol- Participante
- Mensajes : 21
Fecha de inscripción : 06/06/2010
Localización : Paine (RM) Chile
Re: Sensor temperatura + PIC18F2550 + comunicación USB
José Pablo:
Algunos resultados:
Este mensaje tambien me aparece al compilar el codigo fuente en PIKLAB. Indica algun grado de optimizacion en una cadena de if - else, de una seccion de codigo para depuracion que no esta activa.
Otro mas:
Hasta el momento, el compilar para el 2550 o el 4550, produce archivos ".hex" identicos.
Solo difieren en el byte de programacion del fuse "config1L" que cambia de 0x04 a 0x00. El byte en ese archivo ".hex" es el numero 16743.
Lo anterior usando las lineas de comando SDCC que construye PIKLAB, ahora voy a ver si tu metodo de compilacion en consola produce alguna diferencia.
Saludos
eol
p.s. quedo debiendo las tildes de los acentos.
Algunos resultados:
Cuando compilo el usb.c el compilador me da el siguiente mensaje:
Código:
usb.c:804: warning 110: conditional flow changed by optimizer: so said EVELYN the modified DOG
Este mensaje tambien me aparece al compilar el codigo fuente en PIKLAB. Indica algun grado de optimizacion en una cadena de if - else, de una seccion de codigo para depuracion que no esta activa.
Otro mas:
Hasta el momento, el compilar para el 2550 o el 4550, produce archivos ".hex" identicos.
Solo difieren en el byte de programacion del fuse "config1L" que cambia de 0x04 a 0x00. El byte en ese archivo ".hex" es el numero 16743.
Lo anterior usando las lineas de comando SDCC que construye PIKLAB, ahora voy a ver si tu metodo de compilacion en consola produce alguna diferencia.
Saludos
eol
p.s. quedo debiendo las tildes de los acentos.
Última edición por eol el Mar 10 Mayo 2011 - 22:00, editado 1 vez (Razón : corregir nombre de usuario.)
eol- Participante
- Mensajes : 21
Fecha de inscripción : 06/06/2010
Localización : Paine (RM) Chile
Re: Sensor temperatura + PIC18F2550 + comunicación USB
José Pablo:
Mas resultados:
Con tu comando para el PICUSBFW.c
obtengo el mismo código objeto ".o" que con el PIKLAB, solo difieren en un byte de "time stamp" que se va alterando en cada compilacion.
Igual comportamiento con el comando para el usb.c
Veamos la etapa del linker:
Voy a reordenar la linea de comando, para que se vea similar a la linea que ocupa PIKLAB:
Ahora, el ".hex" se parece al original, con solo la diferencia de programacion en el fuse.
Solo con cambiar el orden de los ejecutables para linkear: primero el PICUSBFW.o y despues el usb.o
Tendrias que hacer algo similar en tu sistema y ver si esto sirve para aproximarte a la solucion del inconveniente.
Saludos.
eol
Mas resultados:
Con tu comando para el PICUSBFW.c
sdcc -mpic16 -p18f4550 --debug -c PICUSBFW.c
obtengo el mismo código objeto ".o" que con el PIKLAB, solo difieren en un byte de "time stamp" que se va alterando en cada compilacion.
Igual comportamiento con el comando para el usb.c
Con el mensaje de EVELYN ...
sdcc -mpic16 -p18f4550 --debug -c usb.c
Veamos la etapa del linker:
Algo ocurre, puesto que genera archivos ".hex" distintos.
sdcc -mpic16 -p18f4550 --debug -Wl-m -Wl-c -o main.hex usb.o PICUSBFW.o libio18f4550.lib libsdcc.lib
Ahora activando la opcion "verbose"
root@lenovo-laptop:~/PIC/USB# cmp -b main.hex ./temporal/PICUSBFW.hex
main.hex ./temporal/PICUSBFW.hex son distintos: el byte 595, en la línea 16 es 61 1 62 2
Da más información de los paths y librerías, pero continua la diferencia.
root@lenovo-laptop:~/PIC/USB# sdcc -mpic16 -p18f4550 -V --debug -Wl-m -Wl-c -omain.hex usb.o PICUSBFW.o libio18f4550.lib libsdcc.lib
+ "/usr/bin/gplink" -I"/usr/bin/../share/sdcc/lib/pic16" -I"/usr/share/sdcc/lib/pic16" -I"/usr/bin/../share/sdcc/lib" -I"/usr/share/sdcc/lib" -m -c -w -r -o main.hex usb.o PICUSBFW.o crt0i.o libio18f4550.lib libsdcc.lib libdev18f4550.lib libsdcc.lib
message: using default linker script "/usr/share/gputils/lkr/18f4550.lkr"
root@lenovo-laptop:~/PIC/USB#
root@lenovo-laptop:~/PIC/USB# cmp -b main.hex ./temporal/PICUSBFW.hex
main.hex ./temporal/PICUSBFW.hex son distintos: el byte 595, en la línea 16 es 61 1 62 2
Voy a reordenar la linea de comando, para que se vea similar a la linea que ocupa PIKLAB:
root@lenovo-laptop:~/PIC/USB# sdcc -mpic16 -p18f4550 -V --debug -Wl-c -Wl-m -omain.hex PICUSBFW.o usb.o libio18f4550.lib libsdcc.lib
+ "/usr/bin/gplink" -I"/usr/bin/../share/sdcc/lib/pic16" -I"/usr/share/sdcc/lib/pic16" -I"/usr/bin/../share/sdcc/lib" -I"/usr/share/sdcc/lib" -c -m -w -r -o main.hex PICUSBFW.o usb.o crt0i.o libio18f4550.lib libsdcc.lib libdev18f4550.lib libsdcc.lib
message: using default linker script "/usr/share/gputils/lkr/18f4550.lkr"
root@lenovo-laptop:~/PIC/USB#
root@lenovo-laptop:~/PIC/USB# cmp -b main.hex ./temporal/PICUSBFW.hex
main.hex ./temporal/PICUSBFW.hex son distintos: el byte 16743, en la línea 384 es 60 0 64 4
Ahora, el ".hex" se parece al original, con solo la diferencia de programacion en el fuse.
Solo con cambiar el orden de los ejecutables para linkear: primero el PICUSBFW.o y despues el usb.o
Tendrias que hacer algo similar en tu sistema y ver si esto sirve para aproximarte a la solucion del inconveniente.
Saludos.
eol
Última edición por eol el Mar 10 Mayo 2011 - 22:01, editado 1 vez (Razón : corregir nombre de usuario.)
eol- Participante
- Mensajes : 21
Fecha de inscripción : 06/06/2010
Localización : Paine (RM) Chile
Gracias por la ayuda
Gracias por la ayuda pero aún asi no funcioná. No tengo idea de cual puede ser el problema ya he probado cuando proyecto de USB con sdcc que he encontrado en internet y en todos es el mismo problema, no es posible enumerarlo. En windows dice que es que no tiene vendorId ni productId pero ni idea de como arreglarlo.
Solo le funcionan los ejemplos en CCS y yo necesito SDCC para migrar un proyecto de CCS a SDCC.
Si alguien tiene algún proyecto FUNCIONANDO EN PIC 18F4550 que me lo pueda pasar y replicar las conexiones externas (incluido cristal) para ver si logro hacerlo funcionar seria de gran ayuda.
Tengo dudas de si será algún problema de la version del compilador, yo tengo la version
Gracias de todos modos.
Solo le funcionan los ejemplos en CCS y yo necesito SDCC para migrar un proyecto de CCS a SDCC.
Si alguien tiene algún proyecto FUNCIONANDO EN PIC 18F4550 que me lo pueda pasar y replicar las conexiones externas (incluido cristal) para ver si logro hacerlo funcionar seria de gran ayuda.
Tengo dudas de si será algún problema de la version del compilador, yo tengo la version
- Código:
sdcc -v
SDCC : mcs51/gbz80/z80/avr/ds390/pic16/pic14/TININative/xa51/ds400/hc08 2.9.0 #5416 (Feb 3 2010) (UNIX)
Gracias de todos modos.
JosePablo- Participante
- Mensajes : 22
Fecha de inscripción : 10/01/2009
Edad : 43
Localización : Costa Rica
Ya lo arreglé
Mae no lo vas a creer. El problema estaba en el linker, cambie el archivo 18f4550.lkr con uno que baje en otro proyecto que utiliza la clase CDC-ACM y funcionó perfectamente.
Estoy utilizando gputils y la version es:
Gracias
Estoy utilizando gputils y la version es:
- Código:
gplink -v
gplink-0.13.7 beta
Gracias
JosePablo- Participante
- Mensajes : 22
Fecha de inscripción : 10/01/2009
Edad : 43
Localización : Costa Rica
Re: Sensor temperatura + PIC18F2550 + comunicación USB
Esta excelente este aporte, vamos a probarlo al rato!
Saludos
Saludos
maigke- Asiduo del Foro
- Mensajes : 210
Fecha de inscripción : 12/04/2009
Edad : 47
Localización : Mexico
Cual es el linker?
Hola JosePablo quería saber cual es el linker que usaste por que yo también tengo un 18f4550 y me compila bien pero la pc no me lo enumera.
Desde ya muchas gracias!
Desde ya muchas gracias!
andres53016- Participante
- Mensajes : 25
Fecha de inscripción : 16/05/2011
Localización : Misiones Argentina
Re: Sensor temperatura + PIC18F2550 + comunicación USB
bueno ya lo solucione , muchimas gracias EOL, use el linker del pinguino.andres53016 escribió:Hola JosePablo quería saber cual es el linker que usaste por que yo también tengo un 18f4550 y me compila bien pero la pc no me lo enumera.
Desde ya muchas gracias!
yo encontraba raro esta línea de script usb.c: #pragma udata usbram5 HIDRxBuffer HIDTxBuffer, el usbram5 se ubicaba en cualquier posición de memoria y no en el bank5
andres53016- Participante
- Mensajes : 25
Fecha de inscripción : 16/05/2011
Localización : Misiones Argentina
Re: Sensor temperatura + PIC18F2550 + comunicación USB
interesantes las observaciones, pero supongo que hace falta esto:
18f2550.lkr
18f4550.lkr
Saludos
18f2550.lkr
- Código:
// $Id: 18f4550.lkr,v 1.1 2006/03/21 21:55:46 gaufille Exp $
// File: 18f4550.lkr
// Sample linker script for the PIC18F4550 processor
// modified for boot link (limit link to 0x0000-0x1fff boot block)
LIBPATH .
CODEPAGE NAME=vectors START=0x0 END=0x1B PROTECTED
CODEPAGE NAME=page START=0x1C END=0x1FFF PROTECTED
CODEPAGE NAME=appli START=0x2000 END=0x7FFF
CODEPAGE NAME=idlocs START=0x200000 END=0x200007 PROTECTED
CODEPAGE NAME=config START=0x300000 END=0x30000D PROTECTED
CODEPAGE NAME=devid START=0x3FFFFE END=0x3FFFFF PROTECTED
CODEPAGE NAME=eedata START=0xF00000 END=0xF000FF PROTECTED
ACCESSBANK NAME=accessram START=0x0 END=0x5F PROTECTED
DATABANK NAME=gpr0 START=0x60 END=0xFF PROTECTED
DATABANK NAME=gpr1 START=0x100 END=0x1FF
DATABANK NAME=gpr2 START=0x200 END=0x2FF
DATABANK NAME=gpr3 START=0x300 END=0x3FF
DATABANK NAME=usb4 START=0x400 END=0x4FF PROTECTED
DATABANK NAME=usb5 START=0x500 END=0x5FF PROTECTED
DATABANK NAME=usb6 START=0x600 END=0x6FF PROTECTED
DATABANK NAME=usb7 START=0x700 END=0x7FF PROTECTED
ACCESSBANK NAME=accesssfr START=0xF60 END=0xFFF PROTECTED
SECTION NAME=CONFIG ROM=config
SECTION NAME=bank1 RAM=gpr1
SECTION NAME=usbram4 RAM=usb4
SECTION NAME=usbram5 RAM=usb5
SECTION NAME=usb_buf RAM=usb6
SECTION NAME=eeprom ROM=eedata
18f4550.lkr
- Código:
// $Id: 18f4550.lkr,v 1.1 2006/03/21 21:55:46 gaufille Exp $
// File: 18f4550.lkr
// Sample linker script for the PIC18F4550 processor
// modified for boot link (limit link to 0x0000-0x1fff boot block)
LIBPATH .
CODEPAGE NAME=vectors START=0x0 END=0x1B PROTECTED
CODEPAGE NAME=page START=0x1C END=0x1FFF PROTECTED
CODEPAGE NAME=appli START=0x2000 END=0x7FFF
CODEPAGE NAME=idlocs START=0x200000 END=0x200007 PROTECTED
CODEPAGE NAME=config START=0x300000 END=0x30000D PROTECTED
CODEPAGE NAME=devid START=0x3FFFFE END=0x3FFFFF PROTECTED
CODEPAGE NAME=eedata START=0xF00000 END=0xF000FF PROTECTED
ACCESSBANK NAME=accessram START=0x0 END=0x5F PROTECTED
DATABANK NAME=gpr0 START=0x60 END=0xFF PROTECTED
DATABANK NAME=gpr1 START=0x100 END=0x1FF
DATABANK NAME=gpr2 START=0x200 END=0x2FF
DATABANK NAME=gpr3 START=0x300 END=0x3FF
DATABANK NAME=usb4 START=0x400 END=0x4FF PROTECTED
DATABANK NAME=usb5 START=0x500 END=0x5FF PROTECTED
DATABANK NAME=usb6 START=0x600 END=0x6FF PROTECTED
DATABANK NAME=usb7 START=0x700 END=0x7FF PROTECTED
ACCESSBANK NAME=accesssfr START=0xF60 END=0xFFF PROTECTED
SECTION NAME=CONFIG ROM=config
SECTION NAME=bank1 RAM=gpr1
SECTION NAME=usbram4 RAM=usb4
SECTION NAME=usbram5 RAM=usb5
SECTION NAME=usb_buf RAM=usb6
SECTION NAME=eeprom ROM=eedata
Saludos
maigke- Asiduo del Foro
- Mensajes : 210
Fecha de inscripción : 12/04/2009
Edad : 47
Localización : Mexico
Re: Sensor temperatura + PIC18F2550 + comunicación USB
Si me falto poner el linker, pasa que nunca escribí en un foro, así que por ahora solo se escribir. Ahora estoy peleando para poder mezclar las librerias de cdc de pinguino con las que hizo EOL, si logro hacer algo lo subo.
Saludos
Saludos
andres53016- Participante
- Mensajes : 25
Fecha de inscripción : 16/05/2011
Localización : Misiones Argentina
Re: Sensor temperatura + PIC18F2550 + comunicación USB
Tardé muchos días en aportar, pero aquí estoy de nuevo.
Esta es mi copia del 18f2550.lkr
y del 18f4550.lkr
Saludos.
Esta es mi copia del 18f2550.lkr
- Código:
// File: 18f2550.lkr
// Sample linker script for the PIC18F2550 processor
// Not intended for use with MPLAB C18. For C18 projects,
// use the linker scripts provided with that product.
LIBPATH .
CODEPAGE NAME=page START=0x0 END=0x7FFF
CODEPAGE NAME=idlocs START=0x200000 END=0x200007 PROTECTED
CODEPAGE NAME=config START=0x300000 END=0x30000D PROTECTED
CODEPAGE NAME=devid START=0x3FFFFE END=0x3FFFFF PROTECTED
CODEPAGE NAME=eedata START=0xF00000 END=0xF000FF PROTECTED
ACCESSBANK NAME=accessram START=0x0 END=0x5F
DATABANK NAME=gpr0 START=0x60 END=0xFF
DATABANK NAME=gpr1 START=0x100 END=0x1FF
DATABANK NAME=gpr2 START=0x200 END=0x2FF
DATABANK NAME=gpr3 START=0x300 END=0x3FF
DATABANK NAME=usb4 START=0x400 END=0x4FF PROTECTED
DATABANK NAME=usb5 START=0x500 END=0x5FF PROTECTED
DATABANK NAME=usb6 START=0x600 END=0x6FF PROTECTED
DATABANK NAME=usb7 START=0x700 END=0x7FF PROTECTED
ACCESSBANK NAME=accesssfr START=0xF60 END=0xFFF PROTECTED
y del 18f4550.lkr
- Código:
// File: 18f4550.lkr
// Sample linker script for the PIC18F4550 processor
// Not intended for use with MPLAB C18. For C18 projects,
// use the linker scripts provided with that product.
LIBPATH .
CODEPAGE NAME=page START=0x0 END=0x7FFF
CODEPAGE NAME=idlocs START=0x200000 END=0x200007 PROTECTED
CODEPAGE NAME=config START=0x300000 END=0x30000D PROTECTED
CODEPAGE NAME=devid START=0x3FFFFE END=0x3FFFFF PROTECTED
CODEPAGE NAME=eedata START=0xF00000 END=0xF000FF PROTECTED
ACCESSBANK NAME=accessram START=0x0 END=0x5F
DATABANK NAME=gpr0 START=0x60 END=0xFF
DATABANK NAME=gpr1 START=0x100 END=0x1FF
DATABANK NAME=gpr2 START=0x200 END=0x2FF
DATABANK NAME=gpr3 START=0x300 END=0x3FF
DATABANK NAME=usb4 START=0x400 END=0x4FF PROTECTED
DATABANK NAME=usb5 START=0x500 END=0x5FF PROTECTED
DATABANK NAME=usb6 START=0x600 END=0x6FF PROTECTED
DATABANK NAME=usb7 START=0x700 END=0x7FF PROTECTED
ACCESSBANK NAME=accesssfr START=0xF60 END=0xFFF PROTECTED
Saludos.
eol- Participante
- Mensajes : 21
Fecha de inscripción : 06/06/2010
Localización : Paine (RM) Chile
Re: Sensor temperatura + PIC18F2550 + comunicación USB
Bueno logre realizar la comunicación con la clase CDC con sdcc y una aplicación en python.
Aquí están todos los scripts
bueno hay muchas cosas comentadas, disculpen y los códigos estan un poco desordenados, pasa que quiero lograr una tranferenrencia con mas datos, y no estoy entendiendo como es el tema de una interface con varios enpoint, por que necesito que tranfiera 512 bytes en 1ms.
Si alguien me puede brindar una mano les agradecería.
El PIC envía 31 muestras de 16bits del adc, cuando en el programa en python se le envía hola, si se envía cualquier otra cosa responde "nada".
Saludos a todos.
Aquí están todos los scripts
bueno hay muchas cosas comentadas, disculpen y los códigos estan un poco desordenados, pasa que quiero lograr una tranferenrencia con mas datos, y no estoy entendiendo como es el tema de una interface con varios enpoint, por que necesito que tranfiera 512 bytes en 1ms.
Si alguien me puede brindar una mano les agradecería.
El PIC envía 31 muestras de 16bits del adc, cuando en el programa en python se le envía hola, si se envía cualquier otra cosa responde "nada".
Saludos a todos.
andres53016- Participante
- Mensajes : 25
Fecha de inscripción : 16/05/2011
Localización : Misiones Argentina
Re: Sensor temperatura + PIC18F2550 + comunicación USB
Hola andres53016:
Por favor, revisa el enlace a los scripts de tu aplicación. MegaUpload me avisa que:
Saludos.
Por favor, revisa el enlace a los scripts de tu aplicación. MegaUpload me avisa que:
El archivo al que está intentando acceder no está dsiponible temporalmente. Por favor, inténtelo de nuevo más tarde.
Saludos.
eol- Participante
- Mensajes : 21
Fecha de inscripción : 06/06/2010
Localización : Paine (RM) Chile
Re: Sensor temperatura + PIC18F2550 + comunicación USB
Hola EOL, el archivo esta en esa dirección pero a mi también me dice lo mismo.
Lo subí de nuevo por las dudas.
el link aquí.
Lo subí de nuevo por las dudas.
el link aquí.
andres53016- Participante
- Mensajes : 25
Fecha de inscripción : 16/05/2011
Localización : Misiones Argentina
Re: Sensor temperatura + PIC18F2550 + comunicación USB
Hola, donde puedo conseguir información sobre el uso de esa librería, pude compilar los archivos que subieron, pero no entiendo bien como se utiliza.
diguito69- Participante
- Mensajes : 11
Fecha de inscripción : 04/07/2011
Edad : 39
Re: Sensor temperatura + PIC18F2550 + comunicación USB
yo ando medio ocupado ahora por que tengo que rendir un examen final, pero después voy a crear un nuevo tema explicando las partes mas importantes del script, aparte ese esta muy desordenado por que lo hice a las apuradas, ahh info no hay por que hice ingeniería inversa nomas.
Saludos
Saludos
andres53016- Participante
- Mensajes : 25
Fecha de inscripción : 16/05/2011
Localización : Misiones Argentina
Re: Sensor temperatura + PIC18F2550 + comunicación USB
Muchas gracias por responder tan pronto. Ya mas o menos encontré por donde empezar a modificar el código para hacer mis primeras pruebas.
diguito69- Participante
- Mensajes : 11
Fecha de inscripción : 04/07/2011
Edad : 39
Re: Sensor temperatura + PIC18F2550 + comunicación USB
No había seguido mucho este tema, pero está muy interesante y muy explicado todo.
Estaría muy bién tener estos proyectos en el area de descargas del foro... ¿os parecería bien?
Otra cosa... ¿sabeis de algún controlar USB por software para PIC, parecido al USBaspLoader para AVR?
Estaría muy bién tener estos proyectos en el area de descargas del foro... ¿os parecería bien?
Otra cosa... ¿sabeis de algún controlar USB por software para PIC, parecido al USBaspLoader para AVR?
Re: Sensor temperatura + PIC18F2550 + comunicación USB
hola soy nuevo en este foro quisiera saber como modificar el codigo para poner una alarme que suene al alcanzar cierta temperatura...algo como un comparador, y tambien como hacer que guarde datos autamaticamente cada cierto tiempo para usar esos datos para graficar de ante mano gracias....
israel benjamin- Nuevo Usuario
- Mensajes : 2
Fecha de inscripción : 18/09/2011
Re: Sensor temperatura + PIC18F2550 + comunicación USB
andres53016 escribió:Bueno logre realizar la comunicación con la clase CDC con sdcc y una aplicación en python.
Aquí están todos los scripts
bueno hay muchas cosas comentadas, disculpen y los códigos estan un poco desordenados, pasa que quiero lograr una tranferenrencia con mas datos, y no estoy entendiendo como es el tema de una interface con varios enpoint, por que necesito que tranfiera 512 bytes en 1ms.
Si alguien me puede brindar una mano les agradecería.
El PIC envía 31 muestras de 16bits del adc, cuando en el programa en python se le envía hola, si se envía cualquier otra cosa responde "nada".
Saludos a todos.
Hola también probé tu código y funciona!, lo modifique para hacer pruebas mas que nada le quite las partes de conversión analógica. Vengo de buscar por mucho tiempo como usar el USB en ensamblador basicamente por que hacerlo en CCS es muy facil pero no es libre y no me gusta el lenguaje. y di con esto que aunque no es ensablador todo esta programado en C asi que puedo leer e investigar como funciona el USB desde cero como si fuera ASM, lo que si es que me voy a poner a buscar info sobre SDCC pero si alguien tiene un manual, pagina o información para aprender se lo agradecería, hay varias cosas que intuyo al leer el código pero quiero saber mas.
Y sobre lo que comentas de la transferencia de datos, ¿por que aun no puedes transmitir a la velocidad que quieres?
carlostex- Participante
- Mensajes : 19
Fecha de inscripción : 30/10/2010
Re: Sensor temperatura + PIC18F2550 + comunicación USB
Hola, la transferencia que yo queria no se puede hacer con este pic a menos que utilices el modo isocrono, del cual no pude encontrar nada de informacion de como aplicarlo al pic, pero solucione mi problema de otra manera. Si encontras buena info de SDCC sería bueno que la compartas . Yo busque muy poco de SDCC dado que, programaba en C++ y muy pocas cosas tuve que usar que son específicas de SDCC. Una recomendación es que si necesitas escribir temp=temp + 8; en assembler queda mas corto si escribís así: temp+=8;. Me alegra que te haya servido mi código , cualquier duda sobre el pregunta y si puedo te ayudo.
Saludos.
Saludos.
andres53016- Participante
- Mensajes : 25
Fecha de inscripción : 16/05/2011
Localización : Misiones Argentina
Re: Sensor temperatura + PIC18F2550 + comunicación USB
hola a todos,
como puedo utilizar el pic 16f873a con el PWM segun la temperatura entregada por lm35
muchas gracias,
como puedo utilizar el pic 16f873a con el PWM segun la temperatura entregada por lm35
muchas gracias,
cdmontoya82- Participante
- Mensajes : 13
Fecha de inscripción : 26/09/2011
Re: Sensor temperatura + PIC18F2550 + comunicación USB
Puedes usar un control sencillo, si la temperatura sube prendes el ventilador si baja lo apagas. Un control mas elegante seria un PID, podrías mantener una temperatura mas constante de esa manera.
carlostex- Participante
- Mensajes : 19
Fecha de inscripción : 30/10/2010
Página 1 de 2. • 1, 2
Temas similares
» Comunicación de PIC a PIC por radio frecuencia con módulos de 434MHz
» Control de Temperatura+Comunicacion USB con 18F4550
» PROYECTO USB: CONECTAR MICRO CON PC ETC...
» Sensor de sonido con electret y amplificador.
» Comunicación USB Pinguino + PyGTK
» Control de Temperatura+Comunicacion USB con 18F4550
» PROYECTO USB: CONECTAR MICRO CON PC ETC...
» Sensor de sonido con electret y amplificador.
» Comunicación USB Pinguino + PyGTK
Página 1 de 2.
Permisos de este foro:
No puedes responder a temas en este foro.