реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Проблема с компилятором MPLAB-C30, Функции Putchar и Printf
Froze
сообщение Sep 12 2007, 11:44
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 5-09-07
Пользователь №: 30 303



Пытаюсь скомпилировать программу для PIC24, в которой описана функция putchar,
...
void putchar(unsigned char q)
{
i2c_start(); i2c_write(LCD_ADDR);
i2c_write(CON1); i2c_write(0x01);
i2c_write(CON1); i2c_write(0x40 + f1);
i2c_write(CON1); i2c_write(0x80 + f);
i2c_write(CON2);
for(ii=0; ii<6; ii++) {i2c_write(symgen[q][ii]);}
i2c_write(0);
i2c_stop();
f += 6;
if (f >= 120) {f = 0; f1++;}
}
...

в ответ компилятор начинает выдавать кучу варнингов и ошибок касательно этой функции
вот:
P24.c:391: error: syntax error before '->' token
P24.c:393: error: syntax error before '(' token
P24.c:394: error: syntax error before '(' token
P24.c:394: error: syntax error before numeric constant
P24.c:394: warning: type defaults to 'int' in declaration of 'i2c_write'
P24.c:394: error: conflicting types for 'i2c_write'
P24.c:287: error: previous definition of 'i2c_write' was here
P24.c:394: warning: data definition has no type or storage class
P24.c:395: error: syntax error before '(' token
P24.c:395: error: syntax error before numeric constant
P24.c:395: warning: type defaults to 'int' in declaration of 'i2c_write'
P24.c:395: error: conflicting types for 'i2c_write'
P24.c:287: error: previous definition of 'i2c_write' was here
P24.c:395: warning: data definition has no type or storage class
P24.c:396: error: syntax error before '(' token
P24.c:396: error: syntax error before numeric constant
P24.c:396: warning: type defaults to 'int' in declaration of 'i2c_write'
P24.c:396: error: conflicting types for 'i2c_write'
P24.c:287: error: previous definition of 'i2c_write' was here
P24.c:396: warning: data definition has no type or storage class
P24.c:397: error: syntax error before '(' token
P24.c:399: error: syntax error before numeric constant
P24.c:399: warning: type defaults to 'int' in declaration of 'i2c_write'
P24.c:399: error: conflicting types for 'i2c_write'
P24.c:287: error: previous definition of 'i2c_write' was here
P24.c:399: warning: data definition has no type or storage class
P24.c:400: warning: type defaults to 'int' in declaration of 'i2c_stop'
P24.c:400: error: conflicting types for 'i2c_stop'
P24.c:285: error: previous definition of 'i2c_stop' was here
P24.c:400: warning: data definition has no type or storage class
P24.c:401: error: syntax error before '+=' token


Кто с этим знаком, обьясните пожалуйста в чем тут дело.
з.ы. такая проблема появилась только когда я начал работать с С30, а в С18 такого не было
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Sep 13 2007, 11:15
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Froze @ Sep 12 2007, 14:44) *
з.ы. такая проблема появилась только когда я начал работать с С30, а в С18 такого не было

Я конечно не специалист в PIC, но основная ругань на тип аргумента в функции write.
В новой библиотеке это должен быть int, а вы взяли старый проект, где это char.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
Alex B._
сообщение Sep 13 2007, 20:49
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 943
Регистрация: 6-07-04
Из: Санкт-Петербург
Пользователь №: 274



Цитата(Froze @ Sep 12 2007, 15:44) *
Кто с этим знаком, обьясните пожалуйста в чем тут дело.
з.ы. такая проблема появилась только когда я начал работать с С30, а в С18 такого не было

Ну во-первых нужно для начала пролистать документацию на компилер. Смотрите в папке /doc файл 16-Bit_Language_Tools_Libraries_51456d.pdf, глава 3.18 - там описано переопределение функций вызываемых функциями ввода-вывода.
Во-вторых у вас видимо h-файл не заинклюден
Go to the top of the page
 
+Quote Post
Froze
сообщение Sep 14 2007, 04:33
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 5-09-07
Пользователь №: 30 303



Цитата(Dog Pawlowa @ Sep 13 2007, 15:15) *
Я конечно не специалист в PIC, но основная ругань на тип аргумента в функции write.
В новой библиотеке это должен быть int, а вы взяли старый проект, где это char.

инт пробовал, то же самое wacko.gif

Цитата(Alex B._ @ Sep 14 2007, 00:49) *
Ну во-первых нужно для начала пролистать документацию на компилер. Смотрите в папке /doc файл 16-Bit_Language_Tools_Libraries_51456d.pdf, глава 3.18 - там описано переопределение функций вызываемых функциями ввода-вывода.
Во-вторых у вас видимо h-файл не заинклюден

#include "stdio.h"
#include "p24FJ128GA010.h"
вот это есть
А в описании нет этого (16-Bit_Language_Tools_Libraries_51456d.pdf, глава 3.18)
Дело в том что мне нужно через I2C сообщаться с ЖК индикатором TIC32 и для этого я написал свою Putchar, чтобы через нее Printf выводил на индикатор строки (работало с С18 и PIC18) а тут компилятор почему-то ругается
может быть в С30 используется вместо Putchar что то другое ?
в документации я ничего не нашел, там есть только описание самих функций, а механизма работы Printf я там не нашел

Сообщение отредактировал Froze - Sep 14 2007, 04:36
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 14:04
Рейтинг@Mail.ru


Страница сгенерированна за 0.01344 секунд с 7
ELECTRONIX ©2004-2016