Je suis nouveau ici. J'utilise le compilateur XC8 et un PIC18F25K22 de Microchip. Quand je construis le code, je reçois l'erreurXC8 déclaration contradictoire pour les registres (par exemple TRIS, SSP1CON1, ...)
xc8.exe --pass1 --errformat="Error at file %%f line %%l column %%c: (%%n) %%s" --warnformat="Warning at file %%f line %%l column %%c: (%%n) %%s" --msgformat="Message at file %%f line %%l column %%c: (%%n) %%s" -G --chip=18F25K22 -O"main.p1" "../main.c"
Microchip MPLAB XC8 C Compiler (Free Mode) V1.37
Build date: Mar 10 2016
Part Support Version: 1.37
Copyright (C) 2016 Microchip Technology Inc.
License type: Node Configuration
Warning at file line column : (1273) Omniscient Code Generation not available in Free mode
Error at file ../i2clcd.c line 11 column 8: (195) expression syntax
Error at file ../i2clcd.c line 11 column 8: (312) ";" expected
Error at file ../i2clcd.c line 11 column 12: (285) no identifier in declaration
Error at file ../i2clcd.c line 11 column 12: (314) ";" expected
Error at file ../i2clcd.c line 14 column 10: (195) expression syntax
Error at file ../i2clcd.c line 14 column 10: (312) ";" expected
Error at file ../i2clcd.c line 14 column 14: (285) no identifier in declaration
Error at file ../i2clcd.c line 14 column 14: (314) ";" expected
Warning at file ../i2clcd.c line 23 column 1: (361) function declared implicit int
Error at file ../i2clcd.c line 51 column 11: (195) expression syntax
Error at file ../i2clcd.c line 51 column 11: (312) ";" expected
Error at file ../i2clcd.c line 51 column 15: (285) no identifier in declaration
Error at file ../i2clcd.c line 51 column 15: (314) ";" expected
Error at file ../i2clcd.c line 84 column 1: (192) undefined identifier "lcddata"
Error at file ../i2c.c line 10 column 1: (1098) conflicting declarations for variable "I2C_INIT" (../i2c.c:9)
(908) exit status = 1
make: *** [main.p1] Error 1
Error code 2
si je commente cette ligne de code, je reçois l'erreur avec la commande suivante du registre (dans mon cas: SSP1CON1) - Je l'ai essayé avec notamment xc.h et htc.h mais il y a aussi la même erreur.
J'ai trouvé un problème similaire dans stackoverflow, mais le problème a été résolu en plaçant ces commandes dans une fonction, mais les miennes sont dans une fonction.
Voici mon code:
#include "i2c.h"
#include <xc.h>
#include <htc.h>
/*
* subroutine: I2C_INIT()
* access from: main.c/BOOT()
* description: Initialisises MSSP port for I2C Master-Mode
*/
void I2C_INIT(0)
{
TRISCbits.TRISC3=1; //config SCL-Line as Input;
TRISCbits.TRISC4=1; //config SDA-Line as Input;
SSP1CON1 = 0b00101000;
/*
* bit 5: Enables the serial port and configures the SDA and SCL pins as the
* source of the serial port pins
*bit 0-3: 1000: I2C Master Mode, clock = FOSC/(4*(SSPASS+1))
*/
SSP1CON2 = 0x00;
SSP1ADD = 39; //clock = FOSC/(4*(SSPASS+1)) - 100 kHz @ 16MHz FOSC
SSP1STAT = 0b11000000;
/*
* bit 7: Slew rate control disabled for standard speed mode (100 kHz and 1 MHz)
* bit 6: Data transmitted on rising edge of SCK
*/
}
Est-ce que ce code est pour 'i2c.c'? Dans ce cas, je dirais que cela ne correspond pas à celui que vous compilez. Et qu'est-ce que 'I2C_INIT (0)'? Est-ce une macro? –
Ce n'est pas le code complet de 'i2c.c'. Désolé je suis nouveau aux microcontrôleurs et C et je me souviens de lire un exemple de code d'un gars qui place (0) au lieu de (vide), alors j'ai essayé cela. Quand je place (vide) j'obtiens l'erreur ** déclarations contradictoires pour la variable "I2C_INIT" (../i2c.c:9)** –
Vous ne devriez pas mettre '0' à coup sûr. Je ne sais pas qui est ce type, mais vous avez probablement mal compris l'intention. Donc, il semble que 'I2C_INIT' est défini ailleurs. Est-ce le message d'erreur complet, ou il y a plus? –