Microcontroladores PIC en Linux.
¿Quieres reaccionar a este mensaje? Regístrate en el foro con unos pocos clics o inicia sesión para continuar.

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. 1, 2  Siguiente

Ir abajo

pic18f2550 - Sensor temperatura + PIC18F2550 + comunicación USB Empty Sensor temperatura + PIC18F2550 + comunicación USB

Mensaje por eol Dom 24 Abr 2011 - 6:25

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:

pic18f2550 - Sensor temperatura + PIC18F2550 + comunicación USB Picusbsensortemperatura

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.

pic18f2550 - Sensor temperatura + PIC18F2550 + comunicación USB Consolaleeadcpicsector

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.

pic18f2550 - Sensor temperatura + PIC18F2550 + comunicación USB Consolaleeadcpicgtksect

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
Participante

Mensajes : 21
Fecha de inscripción : 06/06/2010
Localización : Paine (RM) Chile

Volver arriba Ir abajo

pic18f2550 - Sensor temperatura + PIC18F2550 + comunicación USB Empty Problemas con el código del firmware

Mensaje por JosePablo Mar 10 Mayo 2011 - 6:54

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:
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
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
Una ves que programo el pic y lo ejecuto, checkeo el archivo /var/log/messages y me da lo siguiente:
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
y el dmesg me da lo siguiente:
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
JosePablo
Participante
Participante

Mensajes : 22
Fecha de inscripción : 10/01/2009
Edad : 43
Localización : Costa Rica

Volver arriba Ir abajo

pic18f2550 - Sensor temperatura + PIC18F2550 + comunicación USB Empty Re: Sensor temperatura + PIC18F2550 + comunicación USB

Mensaje por eol Mar 10 Mayo 2011 - 19:40

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


Última edición por eol el Mar 10 Mayo 2011 - 22:00, editado 1 vez (Razón : corregir nombre de usuario)

eol
Participante
Participante

Mensajes : 21
Fecha de inscripción : 06/06/2010
Localización : Paine (RM) Chile

Volver arriba Ir abajo

pic18f2550 - Sensor temperatura + PIC18F2550 + comunicación USB Empty Re: Sensor temperatura + PIC18F2550 + comunicación USB

Mensaje por eol Mar 10 Mayo 2011 - 20:43

José Pablo:

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
Participante

Mensajes : 21
Fecha de inscripción : 06/06/2010
Localización : Paine (RM) Chile

Volver arriba Ir abajo

pic18f2550 - Sensor temperatura + PIC18F2550 + comunicación USB Empty Re: Sensor temperatura + PIC18F2550 + comunicación USB

Mensaje por eol Mar 10 Mayo 2011 - 21:32

José Pablo:

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

sdcc -mpic16 -p18f4550 --debug -c usb.c
Con el mensaje de EVELYN ...

Veamos la etapa del linker:

sdcc -mpic16 -p18f4550 --debug -Wl-m -Wl-c -o main.hex usb.o PICUSBFW.o libio18f4550.lib libsdcc.lib
Algo ocurre, puesto que genera archivos ".hex" distintos.

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
Ahora activando la opcion "verbose"

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
Da más información de los paths y librerías, pero continua la diferencia.

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
Participante

Mensajes : 21
Fecha de inscripción : 06/06/2010
Localización : Paine (RM) Chile

Volver arriba Ir abajo

pic18f2550 - Sensor temperatura + PIC18F2550 + comunicación USB Empty Gracias por la ayuda

Mensaje por JosePablo Miér 11 Mayo 2011 - 5:59

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
Código:

sdcc -v
SDCC : mcs51/gbz80/z80/avr/ds390/pic16/pic14/TININative/xa51/ds400/hc08 2.9.0 #5416 (Feb  3 2010) (UNIX)
Con cual version del compilador hay probado algún código para usb que si funcione en el 48F4550??.

Gracias de todos modos.
JosePablo
JosePablo
Participante
Participante

Mensajes : 22
Fecha de inscripción : 10/01/2009
Edad : 43
Localización : Costa Rica

Volver arriba Ir abajo

pic18f2550 - Sensor temperatura + PIC18F2550 + comunicación USB Empty Ya lo arreglé

Mensaje por JosePablo Miér 11 Mayo 2011 - 6:52

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:
Código:

gplink -v
gplink-0.13.7 beta
Cual linker utilizas vos??. Para ver si lo pruebo y me dejo de tanto problema.

Gracias
JosePablo
JosePablo
Participante
Participante

Mensajes : 22
Fecha de inscripción : 10/01/2009
Edad : 43
Localización : Costa Rica

Volver arriba Ir abajo

pic18f2550 - Sensor temperatura + PIC18F2550 + comunicación USB Empty Re: Sensor temperatura + PIC18F2550 + comunicación USB

Mensaje por maigke Miér 11 Mayo 2011 - 15:02

Esta excelente este aporte, vamos a probarlo al rato!
Saludos Very Happy
maigke
maigke
Asiduo del Foro
Asiduo del Foro

Mensajes : 210
Fecha de inscripción : 12/04/2009
Edad : 47
Localización : Mexico

Volver arriba Ir abajo

pic18f2550 - Sensor temperatura + PIC18F2550 + comunicación USB Empty Cual es el linker?

Mensaje por andres53016 Lun 16 Mayo 2011 - 2:16

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!
andres53016
andres53016
Participante
Participante

Mensajes : 25
Fecha de inscripción : 16/05/2011
Localización : Misiones Argentina

Volver arriba Ir abajo

pic18f2550 - Sensor temperatura + PIC18F2550 + comunicación USB Empty Re: Sensor temperatura + PIC18F2550 + comunicación USB

Mensaje por andres53016 Lun 16 Mayo 2011 - 2:40

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!
bueno ya lo solucione Very Happy, muchimas gracias EOL, use el linker del pinguino.
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
andres53016
Participante
Participante

Mensajes : 25
Fecha de inscripción : 16/05/2011
Localización : Misiones Argentina

Volver arriba Ir abajo

pic18f2550 - Sensor temperatura + PIC18F2550 + comunicación USB Empty Re: Sensor temperatura + PIC18F2550 + comunicación USB

Mensaje por maigke Lun 16 Mayo 2011 - 12:51

interesantes las observaciones, pero supongo que hace falta esto:

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 cheers
maigke
maigke
Asiduo del Foro
Asiduo del Foro

Mensajes : 210
Fecha de inscripción : 12/04/2009
Edad : 47
Localización : Mexico

Volver arriba Ir abajo

pic18f2550 - Sensor temperatura + PIC18F2550 + comunicación USB Empty Re: Sensor temperatura + PIC18F2550 + comunicación USB

Mensaje por andres53016 Lun 16 Mayo 2011 - 12:54

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
andres53016
andres53016
Participante
Participante

Mensajes : 25
Fecha de inscripción : 16/05/2011
Localización : Misiones Argentina

Volver arriba Ir abajo

pic18f2550 - Sensor temperatura + PIC18F2550 + comunicación USB Empty Re: Sensor temperatura + PIC18F2550 + comunicación USB

Mensaje por eol Mar 17 Mayo 2011 - 22:57

Tardé muchos días en aportar, pero aquí estoy de nuevo.

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
Participante

Mensajes : 21
Fecha de inscripción : 06/06/2010
Localización : Paine (RM) Chile

Volver arriba Ir abajo

pic18f2550 - Sensor temperatura + PIC18F2550 + comunicación USB Empty Re: Sensor temperatura + PIC18F2550 + comunicación USB

Mensaje por andres53016 Lun 23 Mayo 2011 - 5:01

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.
andres53016
andres53016
Participante
Participante

Mensajes : 25
Fecha de inscripción : 16/05/2011
Localización : Misiones Argentina

Volver arriba Ir abajo

pic18f2550 - Sensor temperatura + PIC18F2550 + comunicación USB Empty Re: Sensor temperatura + PIC18F2550 + comunicación USB

Mensaje por eol Lun 23 Mayo 2011 - 17:38

Hola andres53016:

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
Participante

Mensajes : 21
Fecha de inscripción : 06/06/2010
Localización : Paine (RM) Chile

Volver arriba Ir abajo

pic18f2550 - Sensor temperatura + PIC18F2550 + comunicación USB Empty Re: Sensor temperatura + PIC18F2550 + comunicación USB

Mensaje por andres53016 Lun 23 Mayo 2011 - 17:47

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í.
andres53016
andres53016
Participante
Participante

Mensajes : 25
Fecha de inscripción : 16/05/2011
Localización : Misiones Argentina

Volver arriba Ir abajo

pic18f2550 - Sensor temperatura + PIC18F2550 + comunicación USB Empty Re: Sensor temperatura + PIC18F2550 + comunicación USB

Mensaje por diguito69 Lun 4 Jul 2011 - 3:21

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
Participante

Mensajes : 11
Fecha de inscripción : 04/07/2011
Edad : 39

Volver arriba Ir abajo

pic18f2550 - Sensor temperatura + PIC18F2550 + comunicación USB Empty Re: Sensor temperatura + PIC18F2550 + comunicación USB

Mensaje por andres53016 Lun 4 Jul 2011 - 3:27

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
andres53016
andres53016
Participante
Participante

Mensajes : 25
Fecha de inscripción : 16/05/2011
Localización : Misiones Argentina

Volver arriba Ir abajo

pic18f2550 - Sensor temperatura + PIC18F2550 + comunicación USB Empty Re: Sensor temperatura + PIC18F2550 + comunicación USB

Mensaje por diguito69 Lun 4 Jul 2011 - 3:37

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
Participante

Mensajes : 11
Fecha de inscripción : 04/07/2011
Edad : 39

Volver arriba Ir abajo

pic18f2550 - Sensor temperatura + PIC18F2550 + comunicación USB Empty Re: Sensor temperatura + PIC18F2550 + comunicación USB

Mensaje por Pikitin Lun 12 Sep 2011 - 16:02

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?

Pikitin
veterano
veterano

Mensajes : 623
Fecha de inscripción : 26/11/2008

http://linuxmicros.blogspot.com/

Volver arriba Ir abajo

pic18f2550 - Sensor temperatura + PIC18F2550 + comunicación USB Empty Re: Sensor temperatura + PIC18F2550 + comunicación USB

Mensaje por israel benjamin Dom 18 Sep 2011 - 23:32

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
Nuevo Usuario

Mensajes : 2
Fecha de inscripción : 18/09/2011

Volver arriba Ir abajo

pic18f2550 - Sensor temperatura + PIC18F2550 + comunicación USB Empty Re: Sensor temperatura + PIC18F2550 + comunicación USB

Mensaje por carlostex Dom 2 Oct 2011 - 0:10

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
Participante

Mensajes : 19
Fecha de inscripción : 30/10/2010

Volver arriba Ir abajo

pic18f2550 - Sensor temperatura + PIC18F2550 + comunicación USB Empty Re: Sensor temperatura + PIC18F2550 + comunicación USB

Mensaje por andres53016 Dom 2 Oct 2011 - 0:29

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 Very Happy. 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 Very Happy , cualquier duda sobre el pregunta y si puedo te ayudo.
Saludos.
andres53016
andres53016
Participante
Participante

Mensajes : 25
Fecha de inscripción : 16/05/2011
Localización : Misiones Argentina

Volver arriba Ir abajo

pic18f2550 - Sensor temperatura + PIC18F2550 + comunicación USB Empty Re: Sensor temperatura + PIC18F2550 + comunicación USB

Mensaje por cdmontoya82 Lun 3 Oct 2011 - 2:15

hola a todos,
como puedo utilizar el pic 16f873a con el PWM segun la temperatura entregada por lm35

muchas gracias,

cdmontoya82
Participante
Participante

Mensajes : 13
Fecha de inscripción : 26/09/2011

Volver arriba Ir abajo

pic18f2550 - Sensor temperatura + PIC18F2550 + comunicación USB Empty Re: Sensor temperatura + PIC18F2550 + comunicación USB

Mensaje por carlostex Lun 3 Oct 2011 - 16:53

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
Participante

Mensajes : 19
Fecha de inscripción : 30/10/2010

Volver arriba Ir abajo

pic18f2550 - Sensor temperatura + PIC18F2550 + comunicación USB Empty Re: Sensor temperatura + PIC18F2550 + comunicación USB

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Página 1 de 2. 1, 2  Siguiente

Volver arriba

- Temas similares

 
Permisos de este foro:
No puedes responder a temas en este foro.