Migrazione C18 XC8

8 Anni 2 Mesi fa #1 da prinaldi
Migrazione C18 XC8 è stato creato da prinaldi
Ciao a tutti. Sto facendo il porting di alcuni progetti dal compilatore c18 a xc8. Utilizzo un PIC18F2431 e dopo la fase di compilazione mi dà uno strano errore:


C:\Program Files (x86)\Microchip\xc8\v1.36\include\pic18f2431.h:6906: error: (1098) conflicting declarations for variable "_INTCONbits" (C:\Program Files (x86)\Microchip\xc8\v1.36\include\pic18f2431.h:6644)
(908) exit status = 1

Leggendo sul forum Microchip ho visto che commentando la funzione "OpenTimer0" l'errore sparisce. Su questi forum sembra che compilando con versioni precedenti del compilatore (1.36) il problema non esiste. Io ho provato con le versioni 1.31, 1.33 e 1.34 e continua con lo stesso errore.
Esiste una soluzione che non sia l'accesso diretto ai registri per aprire il Timer0?

Pierluigi

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • prinaldi
  • Junior Member
  • Junior Member
Di più
8 Anni 2 Mesi fa #2 da permax1958
Risposta da permax1958 al topic Migrazione C18 XC8
Penso sia un errore dovuto all'include delle librerie Plib.
come hai importato la libreria del timer0 ?
puoi mostrare il listato degli include e la configurazione del progetto in merito all'opzione Plib del linker

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • permax1958
  • Premium Member
  • Premium Member
Di più
8 Anni 2 Mesi fa #3 da prinaldi
Risposta da prinaldi al topic Migrazione C18 XC8
Contenuto parziale del file hw.h


#ifndef _HW_H
#define _HW_H

#include <xc.h>
#include <usart.h>
#include <timers.h>
#include <delays.h>
#include "ninja.h"
#include "isr.h"

contenuto parziale del file hw.c (non ha include)

WriteTimer0( T0_1MS ); // Add 2 extra for timer reload
OpenTimer0( TIMER_INT_ON &
T0_8BIT &
T0_SOURCE_INT &
T0_PS_1_8 );


contenuto parziale del main

#include <xc.h>
#include "pragma2431.h"
#include <stdlib.h>

#include <delays.h>
#include <usart.h>
#include <stdio.h>
#include <string.h>

#include "hw.h"
#include "util.h"
#include "sensors.h"
#include "motors.h"
#include "parser.h"
#include "sumo.h"

la configurazione del progetto rispetto al linker e' questa

--runtime=default,+clear,+init,-keep,-no_startup,-download,+config,+clib,+plib --double=32 --float=32 --emi=wordwrite --output=default,-inhx032 --summary=default,-psect,-class,+mem,-hex,-file

ho selezionato (default) link in c library e link in Peripheral library.
Ho inoltre scaricato le Peripheral library dato che non sono piu' comprese con il compilatore.
Ciao

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • prinaldi
  • Junior Member
  • Junior Member
Di più
8 Anni 2 Mesi fa #4 da permax1958
Risposta da permax1958 al topic Migrazione C18 XC8
la configurazione del progetto va bene a meno che non hai inserito manualmente alcuni file delle Plib nel progetto.
l'errore è lo stesso per tutte le versioni del compilatore?
se commenti la funzione "OpenTimer0" lo compila regolarmente sia con 1.36 1.35 e 1.33?
con la versione 1.36 non dovrebbe compilarlo perchè non supporta più le Plib e usi usart.h oltre a timers.h mentre con la versione 1.35, che supporta parzilmente le Plib, dovrebbe compilarlo così come con la 1.33.
Secondo me il file hw.c dovrebbe includere hw.h altrimenti non capisco come possa funzionare, visto tutti gli include sicuramente ci saranno molte dichiarazioni di funzioni e costanti, comunque non dovrebbe essere la causa del problema ma non si sa mai.

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • permax1958
  • Premium Member
  • Premium Member
Di più
8 Anni 2 Mesi fa #5 da prinaldi
Risposta da prinaldi al topic Migrazione C18 XC8
Per quanto riguarda l'include in hw.c ho e' presente hw.h.
Non ho inserito manualmente nessun file nella Plib.
Commentando "OpenTimer0" riesco a compilare con 1.36.
Ho installato prima il compilatore ed ovviamente dava errore mancando le funzioni di libreria. (folder plib assente in "C:\Program Files\Microchip\xc8\v1.36\include")
ho installato "xc8-v1.36-part-support-windows-installer.exe" e "microchip-libraries-for-applications-v2013-06-15-windows-installer.exe" ed ha dato subito l'errore con la funzione non commentata.
Provando a cambiare versione del compilatore (1.34) mi sono accorto che in "Include directories" puntavo sempre alla cartella "C:\Program Files\Microchip\xc8\v1.36\include" ho sostituito con la cartella giusta ed ora compila (senza il commento)con la versione 1.34. Sara' un bug del compilatore?

Si prega Accedi o Crea un account a partecipare alla conversazione.

  • prinaldi
  • Junior Member
  • Junior Member
Di più
Moderatori: Mauro Laurenti

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Login