TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: zirix en 06 de Septiembre de 2005, 13:19:00
-
Hola soy nuevo en esto de la programación de PICS, y obviamente la primera en la frente.
Estoy usando el MPLAB con el Hi Tech PICC 18, y al compilar me da el siguiente error:
"Illegal # command "byte" ", debido a la siguiente definición:
#byte CF_DATA = 0x08 /* Port D */
#byte CF_DATA_TRIS = 0x88 /* Port D TRIS */
Lo de "byte" me sale en color rojo, por lo que supongo que no lo interpreta como parte del lenguaje, pero no entiendo porque, ademas observando otros ficheros también me sale en rojo, las sigueintes definiciones:
#fuses
#use
#int_timer2
Espero que me podais ayudar.
Muchas gracias.
-
Las directivas que estas utilizando son para el compilador CCS-PICC, no son válidas para el Hitech.
Saludos.
-
Muchas gracias adrian2a1 por tu respuesta pero como hago para solucionarlo, ¿que debo instalar para poder utilizar estas directivas?.
Lo siento pero es que como ya digo soy nuevo en esto de los PIC.
-
Me he bajado el "CCS MPLAB 6.xx/7.xx plugin" y lo he instalado, pero cuando selecciono la Toolsuite correspondiente en MPLAB (CCS C Compiler for PIC12/14/16/18), me pide el fichero "ccsc.exe", el cual no se ha creado en la instalación, sino que solamente se han creado un ejecutable de desinstalación, un "install.log" y una dll (Suite_CCSPic.dll). ¿A que puede ser esto debido?
-
Hola zirix!!!haber el plug-in solamente es para que el entorno Mplab pueda integrar al compilador CCS(aunque en las nuevas versiones del Mplab ya viene incluido de por si asi que no hace falta el plug-in), lo que tienes que hacer para que esas directivas te funcionen es compilarlo con el compilador adecuado, es decir tienes que intalarte primero el compilador CCS y asi ya podra utilizar sus directivas y no te dara error.
-
Ok, ya lo habia solucionado. Me he bajado el "PCWH_V3.203 PIC C Compiler", y con el plugin solucionado.
Mi duda es ahora que es mejor utilizar, si el PCWH o el MPLAB con su plugin, o da lo mismo?.
Muchas gracias.
-
Lo mismo da, cuando integras el CCS en Mplab solamente usas el Mplab a nivel de entorno, a la hora de compilar te compila el CCS....cuestion de gustos, si te gusta mas el entorno de trabajo del Mplab pues lo usas(yo uso este entrono de trabajo) en cambio si te gusta mas el entorno de trabajo del CCS usalo, eso si en el CCS los projets wizard son mejores configurables que en el Mplab....pero bueno tampoco es que ganes mucho a mi modo de ver.....yo uso CCS en Mplab!jeje
-
OK vszener, muchas gracias por tu opinion. La verdad es que si es mucho mas configurable el Project Wizard del PCWH.
En el MPLAB al compilar me da el siguiente error:
Clean: Deleting intermediary and output files.
Clean: Deleted file "F:Mp3 firm v2MP3.mcs".
Clean: Done.
Executing: "D:ElectronicaPICCCS PCWHCcsc.exe" "cf.c" +FH +DF +LN +T -A +M +Z +Y=9 +EA
*** Error 128 "F:Mp3 firm v2cf.h" Line 23(2,6): A #DEVICE required before this line
Halting build on first failure as requested.
BUILD FAILED: Wed Sep 07 15:38:34 2005
donde la linea de codigo (Line 23) es:
#byte CF_DATA = 0x08 /* Port D */
-
¿Tienes algun dispositivo declarado e el programa?
ejemplo:
#include <16F877.h> o algun otro?
-
Si, tengo declarado en uno de los archivos un:
#include <18F452.h>
¿Que implica y como lo soluciono?
Gracias por tu ayuda vszener.
-
Copia el programa entero, y así puede que te podamos ayudar.
Saludos.
-
El programa entero es muy grande, tiene muchos archivos pero por lo que me habeis comentado y el error que me da, os pongo esto, por si me pudieseis ayudar:
cf.h
#define CF_A0 PIN_E0
#define CF_A1 PIN_E1
#define CF_A2 PIN_E2
#define CF_OE PIN_A1
#define CF_WE PIN_A2
#define CF_READY PIN_A3
#define CF_RESET PIN_A5
#define CF_CD PIN_C5
#define CF_CE PIN_B0
#define TRIS_D_INPUT 0xFF // 11111111
#define TRIS_D_OUTPUT 0x00 // 00000000
#byte CF_DATA = 0x08 /* Port D */
#byte CF_DATA_TRIS = 0x88 /* Port D TRIS */
// wait for the CF RDY line to go high, ie ready for next command
#define waitforready() while (!input(CF_READY))
#define REG_DATA 0x00 // ADDRESS OF DATA REGISTER
#define REG_ERROR 0x01 // ADDRESS OF ERROR REGISTER
#define REG_FEATURES 0x01 // ADDRESS OF FEATURES REGISTER
#define REG_SECTORCOUNT 0x02 // ADDRESS OF SECTOR COUNT REGISTER
#define REG_SECTORNUM 0x03 // ADDRESS OF SECTOR NUMBER REGISTER
#define REG_CYLINDERLOW 0x04 // ADDRESS OF LOW CYLINDER REGISTER
#define REG_CYLINDERHIGH 0x05 // ADDRESS OF HIGH CYLINDER REGISTER
#define REG_HEAD 0x06 // ADDRESS OF HEAD/DRIVE REGISTER
#define REG_STATUS 0x07 // ADDRESS OF STATUS REGISTER
#define REG_COMMAND 0x07 // ADDRESS OF COMMAND REGISTER
#define COMMAND_IDENTIFY 0xEC
#define COMMAND_WRITESECTOR 0x30
#define COMMAND_READSECTOR 0x20
#define CF_OK 0
#define NO_CF 1
boolean CF_isReady();
boolean CF_isBusy(void);
void CF_taskFileWrite(byte, byte);
byte CF_ReadByte(void);
void CF_WriteByte(byte data);
y luego el "#include <18F452.h>" lo tengo en el archivo "mp3.c", donde la parte de las definiciones es la siguiente:
mp3.c
#include <18F452.h>
// note that these aren"t "valid" since we use a bootloader
#fuses HS, NOPROTECT, NOWDT, PUT, NOBROWNOUT, NOLVP
// 20 MHz clock
#use delay (clock=29491000)
#use rs232 (baud=115200, xmit=PIN_C6, rcv=PIN_C7)
long t=0;
#int_timer2
void t2() {
t++; // increments once a millisecond
}
//#use i2c(master, sda=PIN_C3, scl=PIN_C2)
#define SPI_CLK PIN_C0
#define SPI_SDO PIN_C1
#define I2C_SCL PIN_C2
#define I2C_SDA PIN_C3
#define MP3_DATAREQ PIN_A4
#define ENABLE_MP3 PIN_C4
#define MP3_RESET PIN_A0
#define BUTTON_VOLUP PIN_B1
#define BUTTON_VOLDN PIN_B4
#define BUTTON_1 PIN_B3
#define BUTTON_2 PIN_B5
#define BUTTON_3 PIN_B6
#define BUTTON_4 PIN_B7
// Disable automatic TRIS programming for all ports
#use fast_io(a)
#use fast_io(b)
#use fast_io(d)
#use fast_io(e)
#use fast_io(c)
#define nop #asm nop #endasm
#define TRIS_A 0b001000 // rst, mp3data, rdy, /we, /oe, /rst
#define TRIS_B 0b11111010 // 5 buttons, nc, button, /ce
#define TRIS_E 0b000 // all out addr pins
#define TRIS_C_I2CSEND 0b11100000 // 2 buttons (rx/tx), cd1, mp3enable, sda (i2c send), scl, sta_sdi, sta_sclk
#define TRIS_C_I2CRECV 0b11110000 // 2 buttons (rx/tx), cd1, mp3enable, sda (i2c recv), scl, sta_sdi, sta_sclk
byte sectorbuff[512];
#include "mp3.h"
#include "cf.c"
#include "fat16.c"
#include "sta013.c"
...
No se si con esto me podreis ayudar.
Muchas gracias.