SDCC PIC16F84A

Ir abajo

SDCC PIC16F84A

Mensaje por aztk el Miér 3 Nov 2010 - 6:05

No sé que pasa, pero no puedo hayarle a la forma de crear un simple programita que me permita parpadear un LED.......... he estado revisando algunos ejemplos de SDCC (que la mayoria que he encontrado son demasiados simples, y casi iguales) y aún no le entiendo.......

Principalmente, he visto http://www.freenet.org.nz/sdcc/ y del primer ejemplo, he sacado el siguiente código (he hecho modificaciones, puesto que yo uso un 16f84A en vez del 18fxx; además de que quiero usar la librería que ya existen de delays para aprender como usarlas):

Código:

/* ----------------------------------------------------------------------- */
/* Template source file generated by piklab */
#include "pic16f84a.h"
#include "pic16/delay.h"

/* ----------------------------------------------------------------------- */
/* Configuration bits: adapt to your setup and needs */
typedef unsigned int word;
word at 0x2007 CONFIG = _HS_OSC & _WDT_ON & _PWRTE_OFF & _CP_OFF;

#ifndef LED_TRIS
  #define LED_TRIS TRISB.TRISB2
#endif

#ifndef LED_PIN
  #define LED_PIN PORTB.RB2
#endif

void main() {

    // set pin to output
    LED_TRIS = 0;

    // sit in an endless loop blinking the led
    for (;;)
    {
      LED_PIN = 0;
      delay1ktcy(80); // 80*1000 cycles; OSC = 20 MHz; delay = 1 s
      LED_PIN = 1;
      delay1ktcy(80); //
    }
}

Y en el Piklab obtengo los siguientes -fatales- resultados:


sdcc -mpic14 -p16f84a -V --debug -I/home/aztk-white/Pruebas/PIC/e0x00sdcc/ -c e0x00sdcc.c
delay.h:30: warning 115: unknown or unsupported #pragma directive 'library c'

+ "/usr/bin/sdcpp" -nostdinc -Wall -I"/home/aztk-white/Pruebas/PIC/e0x00sdcc/" -obj-ext=.o -DSDCC_MODEL_SMALL -DSDCC=290 -DSDCC_REVISION=5416 -DSDCC_pic14 -D__pic14 -DSDCC_PROCESSOR="16f84a" -isystem "/usr/bin/../share/sdcc/include/pic14" -isystem "/usr/share/sdcc/include/pic14" -isystem "/usr/bin/../share/sdcc/include" -isystem "/usr/share/sdcc/include" -isystem "/usr/bin/../share/sdcc/include/pic" -isystem "/usr/share/sdcc/include/pic" "e0x00sdcc.c"
delay.h:45: warning 85: in function delay1ktcy unreferenced function argument : '_delay1ktcy_PARM_1'

delay.h:48: error 159: in function delay1mtcy: name omitted for parameter 1
delay.h:48: warning 85: in function delay1mtcy unreferenced function argument : '_delay1mtcy_PARM_1'
e0x00sdcc.c:22: error 25: Structure/Union expected left of '.->'
e0x00sdcc.c:22: error 27: Pointer required
e0x00sdcc.c:27: error 25: Structure/Union expected left of '.->'
e0x00sdcc.c:27: error 27: Pointer required
e0x00sdcc.c:29: error 25: Structure/Union expected left of '.->'
e0x00sdcc.c:29: error 27: Pointer required
*** Exited with status: 1 ***

Por lo que veo, tengo problemas con la librería, ya he visto algunos hilos en el foro que hablad de linkear libc18f.lib, cosa que probé pero que tampoco no me furuló (igual y no supe como hacerlo).

Lo otro es que no me acepta la asignación, en las partes del estilo LED_PIN = 0; me manda errores de Structure/Union expected left of '.->'

Qué estoy haciendo mal???????????

Alguien me pueda ayudar, en dónde estoy errandola?

Datos:
OS Ubuntu 10.04
Piklab v0.15.7
SDCC : mcs51/gbz80/z80/avr/ds390/pic16/pic14/TININative/xa51/ds400/hc08 2.9.0 #5416 (Feb 3 2010) (UNIX)

Saludos y gracias!

aztk
Participante Activo
Participante Activo

Mensajes : 52
Fecha de inscripción : 08/06/2009
Edad : 29
Localización : Tenochtitlan

Volver arriba Ir abajo

Re: SDCC PIC16F84A

Mensaje por Risanti el Miér 3 Nov 2010 - 17:07

Hola..
bienvenido al mundo de Sdcc jajajaj..

Mira este compilador es re entretenido cuando ya le tomas el ritmo..

Primero la libreria que estas usando para los retardos, es solo para pic de gama alta como 18F,
Código:
#include "pic16/delay.h"

Te recomiendo que uses la siguiente libreria para los retardos..
box.net 34sdbhuxly
Solo copiala en tu pc en /usr/share/sdcc/include/pic

Para usarla la defines con #include <delay.h>
despues define el cristal que estas usando #define FREQ 4000
y para retardos usas la funcion delay_ms(1000) ; // para un 1 seg de retardo por ejemplo.

Para el resto de cosas que quieras hacer solo tienes que saber como se llaman los registros internos de tu pic en sdcc, por ejemplo..

Para colocar todo el puerto b como salida. usas
Código:
TRISB=255;

si quieres encender solo en pin B1 de puerto b.

Código:
RB1=1;



Saludos
RiSanti
avatar
Risanti
Asiduo del Foro
Asiduo del Foro

Mensajes : 172
Fecha de inscripción : 07/12/2008
Edad : 33
Localización : La Serena Chile

http://www.facebook.com/risanti.electronica

Volver arriba Ir abajo

AYUDA PORFAVOR :-(

Mensaje por euronymous el Vie 24 Dic 2010 - 3:59

Hola a todos,

Estoy empezando a trabajar con el ambiente Piklab. Ya elabore el tipico programa para el PIC16F84A, que activa la interrupcion RB0 del puerto B cada determinado tiempo, y este enciende un diodo emisor de luz.

El problema radica al momento de querer cargar el programa al micro. La manera en que estoy manejando el cargador es de forma directa. Este es el mensaje que aparece.

Memoria de dispositivo no coincide con archivo HEX (en memoria de codigo en direccion 0x0069): leido 0x3000 esperando 0x3080).

Estare infinitamente agradecido si alguien puede ayudarme a atacar este problema.


Saludos..

Euronymous

euronymous
Nuevo Usuario
Nuevo Usuario

Mensajes : 3
Fecha de inscripción : 24/12/2010

Volver arriba Ir abajo

Re: SDCC PIC16F84A

Mensaje por Risanti el Vie 24 Dic 2010 - 4:26

hola...
Parece que es un error al momento de programar el pic. que tipo de programador usas ???..es serial, Paralelo o usb???..

Revisa primero el programador..
Saludos
RiSanti
avatar
Risanti
Asiduo del Foro
Asiduo del Foro

Mensajes : 172
Fecha de inscripción : 07/12/2008
Edad : 33
Localización : La Serena Chile

http://www.facebook.com/risanti.electronica

Volver arriba Ir abajo

Hola Risanti

Mensaje por euronymous el Vie 24 Dic 2010 - 8:30

Hola Risanti,

El cargador es un Quark-Pro2 y lo conecto por puerto serial.

Anteriormente estuve trabajando en MPLAB en windows XP ,,, y estuvo trabajando sin problema alguno.

Segun tengo entendido los microcontroladores PIC necesitan de una señal de 12 voltios para programarse, y esta señal es proporcionada por el serial.

La maquina en la que me encuentro trabajando es una Dell latitude x300 portatil, y cuenta con una expansion de puertos, y es alli donde se encuentra el serial donde conecto el cargador Quark-Pro2.

¿Que crees que pueda ser?



Saludos.

euronymous


Risanti escribió:hola...
Parece que es un error al momento de programar el pic. que tipo de programador usas ???..es serial, Paralelo o usb???..

Revisa primero el programador..
Saludos
RiSanti

euronymous
Nuevo Usuario
Nuevo Usuario

Mensajes : 3
Fecha de inscripción : 24/12/2010

Volver arriba Ir abajo

Re: SDCC PIC16F84A

Mensaje por Risanti el Vie 24 Dic 2010 - 12:14

Hola..

si estas usando un Portatil lo mas seguro que este sea el problema, por lo general los programadores seriales no funcionan bien en algunos equipo, por el tema que dices tu que este debe entregar vpp (12V), para poder programar el pic..

Intenta probar en alguna maquina tipo escritorio.. en mi caso cuando programo usando mi laptop, uso un programador usb. ya que los seriales y parelelos me daban muchos problemas..


Saludos
RIsanti
avatar
Risanti
Asiduo del Foro
Asiduo del Foro

Mensajes : 172
Fecha de inscripción : 07/12/2008
Edad : 33
Localización : La Serena Chile

http://www.facebook.com/risanti.electronica

Volver arriba Ir abajo

Hola Risanti|

Mensaje por euronymous el Vie 24 Dic 2010 - 17:45

Hola Risanti,


Pues no tengo una PC de escritorio ala mano y menos con Ubuntu, pero tratare de preguntar con mis compañeros para ver si alguno de ellos cuenta con una computadora de escritorio y con Ubuntu.

Muchas gracias por la ayuda, y seguimos en contacto Risanti.

Feliz fiestas :-)


Saludos.

euronymous.


Risanti escribió:Hola..

si estas usando un Portatil lo mas seguro que este sea el problema, por lo general los programadores seriales no funcionan bien en algunos equipo, por el tema que dices tu que este debe entregar vpp (12V), para poder programar el pic..

Intenta probar en alguna maquina tipo escritorio.. en mi caso cuando programo usando mi laptop, uso un programador usb. ya que los seriales y parelelos me daban muchos problemas..


Saludos
RIsanti

euronymous
Nuevo Usuario
Nuevo Usuario

Mensajes : 3
Fecha de inscripción : 24/12/2010

Volver arriba Ir abajo

Re: SDCC PIC16F84A

Mensaje por Risanti el Vie 24 Dic 2010 - 20:56

Feliz fiestas para ti =...

Espero que puedas solucionar tu problema,


Saludos
RiSanti
avatar
Risanti
Asiduo del Foro
Asiduo del Foro

Mensajes : 172
Fecha de inscripción : 07/12/2008
Edad : 33
Localización : La Serena Chile

http://www.facebook.com/risanti.electronica

Volver arriba Ir abajo

Re: SDCC PIC16F84A

Mensaje por Rockicantoni el Jue 12 Sep 2013 - 15:39

Hola que tal, me podrian pasar la libreria delay.h para la familia 16f? ya que el link  esta roto. gracias.

Rockicantoni
Nuevo Usuario
Nuevo Usuario

Mensajes : 3
Fecha de inscripción : 09/09/2013

Volver arriba Ir abajo

Re: SDCC PIC16F84A

Mensaje por ivancoronel9 el Miér 9 Oct 2013 - 1:17

Rockicantoni escribió:Hola que tal, me podrian pasar la libreria delay.h para la familia 16f? ya que el link  esta roto. gracias.
Por favor! yo tambien lo necesito y tambien necesitaria saber como agregar esta libreria.
avatar
ivancoronel9
Nuevo Usuario
Nuevo Usuario

Mensajes : 5
Fecha de inscripción : 09/10/2013
Localización : Merlo, Buenos Aires, Argentina

Volver arriba Ir abajo

Re: SDCC PIC16F84A

Mensaje por maigke el Sáb 2 Nov 2013 - 2:10

Este es el link para descargar las librerias de SDCC para PIC14
saludos

https://app.box.com/s/u65exv5rjfo7w7sbkzjm
avatar
maigke
Asiduo del Foro
Asiduo del Foro

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

Volver arriba Ir abajo

Re: SDCC PIC16F84A

Mensaje por Contenido patrocinado


Contenido patrocinado


Volver arriba Ir abajo

Volver arriba


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