MicroC İllegal Pointer Conversion Hatası

samarium
13-05-2017, 16:13   |  #1  
samarium avatarı
OP Taze Üye
Teşekkür Sayısı: 0
2 mesaj
Kayıt Tarihi:Kayıt: May 2017

filename içeren kodlarda "illegal pointer conversion" hatası almaktayım. Bunun çözümü nedir?
( filename case 1, case 2, case 3 ün içinde bulunmaktadır.)


KODLAR :


char filename()="TEMPTXT";
unsigned short character;
unsigned long file_size,i,rec_size;
unsigned char ch1,ch2,flag,ret_status,choice;
unsigned char temperature[10],txt[12];

//LCD çıkış pin ayarları
sbit LCD_RS at RB4_bit;
sbit LCD_EN at RB5_bit;
sbit LCD_D7 at RB3_bit;
sbit LCD_D6 at RB2_bit;
sbit LCD_D5 at RB1_bit;
sbit LCD_D4 at RB0_bit;

sbit LCD_RS_Direction at TRISB4_bit;
sbit LCD_EN_Direction at TRISB5_bit;
sbit LCD_D7_Direction at TRISB3_bit;
sbit LCD_D6_Direction at TRISB2_bit;
sbit LCD_D5_Direction at TRISB1_bit;
sbit LCD_D4_Direction at TRISB0_bit;

void Newline()
{
UART1_Write(0x0D);
UART1_Write(0x0A);
}

void Space()
{
UART1_Write(0x20);
}

void Text_to_UART(unsigned char *x)
{
unsigned char i;
i=0;
while(x !=0)
{
UART1_Write(x);
i++;
}
}

void Read_Temperature()
{
unsigned long VoltIn,VoltDec,VoltFrac;
unsigned char voltString[12];
unsigned char i,j;
VoltIn=Adc_Read(6);
VoltIN=488*VoltIn;
VoltIn=VoltIn/10;
VoltDec=VoltIn/100;
VoltFrac=VoltIn%100;
LongToStr(VoltDec,voltString);
j=0;
for(i=0;i<=11;i++)
{
if(voltString != ' ')
{
temperature[j]=voltString;
j++;
}
}
temperature[j]= '.';
ch1=VoltFrac/10;
ch2=VoltFrac % 10;
j++;
temperature[j]=48+ch1;
j++;
temperature[j]=48+ch2;
j++;
temperature[j]=0x0D;
j++;
temperature[j]=0x0A;
j++;
temperature[j]='\0';

}

//MMC module bağlantısı
sbit Mmc_Chip_Select at LATC2_bit;
sbit Mmc_Chip_Select_Direction at TRISC2_bit;


void main()
{
ANSELB=0;
ANSELC=0;
SLRCON=0;
rec_size=0;

TRISE=0xFF;
ANSELE=0x40;
ADCON1=0x80;
   
UART1_Init(9600);

Lcd_Init();
Lcd_Cmd(_LCD_CURSOR_OFF);

SPI1_Init_Advanced(_SPI_MASTER_OSC_DIV16,_SPI_DATA_SAMPLE_MIDDLE,_SPI_CLK_IDLE_LOW,_SPI_LOW_2_HIGH);

if(Mmc_Fat_Init()==0)
{
SPI1_Init_Advanced(_SPI_MASTER_OSC_DIV4,_SPI_DATA_SAMPLE_MIDDLE,_SPI_CLK_IDLE_LOW,_SPI_LOW_2_HIGH);
}
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1,"TEMP LOGGER");
Lcd_Out(2,3,"Starting.");

//Bilgisayar Menüsü
NewLine();
Text_To_UART("TEMPERATURE DATA LOGGER TO SD CARD");
NewLine();
Text_To_UART("Please select one from the following:");
NewLine();
NewLine();
Text_To_UART("1. save temperetature readings in a new file");
NewLine();
Text_To_UART("2. Append temperaturedata to an existing file");
NewLine();
Text_To_UART("3. Send temperature data to the PC");
NewLine();
NewLine();
Text_To_UART("Choice ?");

flag = 0;
do {
if(UART1_Data_Ready())
{
choice=UART1_Read();
UART1_Write(choice);
flag=1;
}
}while (!flag);
NewLine();
NewLine();

switch(choice)
{
case '1':
Text_To_UART(" Saving data in a NEW file...");
NewLine();
Mmc_Fat_Assign(&filename,0x80);
Mmc_Fat_Rewrite();
Mmc_Fat_Write(" TEMPERATURE DATA TO BE SACED EVERY MINUTE \r \n", 43);


for(;;)
{
Mmc_Fat_Append();
Read_Temperature();
Mmc_Fat_Write(temperature,9);
rec_size++;
LongToStr(rec_size,txt);
NewLine();
Text_To_UART("Saving record:");
Text_To_UART(txt);
Lcd_cmd(_LCD_CLEAR);
Lcd_Out(1,1, "Temp is: ");
Lcd_Out(1,11, temperature);
Delay_ms(60000);
}
break;

case '2':
Text_To_UART("Appending data to the existing file...");
NewLine();
ret_status = Mmc_Fat_Assign(&filename,1);
if(!ret_status)
{
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,5, "Error!");
Lcd_Out(2,1, "Please Restart...");
Text_To_UART("File does not exist - can not append..");
NewLine();
Text_To_UART(" Restart the program and choose otion 2 to save data in new file...");
NewLine();
for(;;);
}
else
{

for (;;)
{
Mmc_Fat_Append();
Read_Temperature();
Mmc_Fat_Write(temperature,9);
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,1, "Temp is : ");
Lcd_Out(1,11, temperature);
rec_size++;
LongToStr(rec_size,txt);
NewLine();
Text_To_UART("Appending new record: ");
Text_To_UART(txt);
Delay_ms(60000);

}
case '3':
ret_status = Mmc_Fat_Assign(&filename,1);
if(!ret_status)
{
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,5, "Error!");
Lcd_Out(2,1," please restar..");

Text_To_UART("Error! File does not exist/ no saved data.");
NewLine();
Text_To_UART(" Please restart to program and sace data to file.");
NewLine();
for(;;);
}
else
{
Lcd_Cmd(_LCD_CLEAR);
Lcd_Out(1,3, "Sending data...");
Text_To_UART(" Sendin all saced data to PC");
NewLine();
Mmc_Fat_Reset(&file_size);
for(i=0;i<file_size; i++)
{
Mmc_Fat_Read(&character);
UART1_Write(character);
}
NewLine();
Text_To_UART("End of data. Thank you. ");
NewLine();
for(;;);
}
}
default:
Text_To_UART("You made a wrong choice, please restart the program.");
NewLine();
for(;;);
}

}