Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 01.08.2010, 14:15  
ctefan
Временная регистрация
 
Регистрация: 15.06.2005
Сообщений: 86
Сказал спасибо: 3
Сказали Спасибо 1 раз в 1 сообщении
ctefan на пути к лучшему
По умолчанию Стандартная библиотека в С30

Подскажите пожалуйста в чём проблема? при использовании функции memchr() и функции
strlen() компилятор выдаёт предупреждение:
Цитата:
warning: pointer targets in passing argument 1 of 'strlen' differ in signedness

warning: passing argument 1 of 'Write_Uart1' makes integer from pointer without a cast
Цитата:
void debug_read_data()
{
unsigned char y,*p;
FlagReadRS232=0;

if(char_BUF=='\n')
{
for (y=0;y‹number_BUF;y++) // вывод массива
{
Write_Uart1(BUF_RS232[y]); //
}
p= memchr( BUF_RS232 ,'V', strlen(BUF_RS232));
Write_Uart1(p);

number_BUF=0;
ui_taimer_debugUart=2000;
}


}
Извиняюсь за форматирование похоже табуляцию не заменил пробелом
Реклама:
ctefan вне форума  
Непрочитано 01.08.2010, 14:27  
Djakovskij
Вид на жительство
 
Регистрация: 14.06.2009
Адрес: Україна Київська обл. м.Буча
Сообщений: 327
Сказал спасибо: 104
Сказали Спасибо 105 раз(а) в 69 сообщении(ях)
Djakovskij на пути к лучшему
По умолчанию Re: Стандартная библиотека в С30

Цитата:
void debug_read_data()
{
unsigned char y,*p;
FlagReadRS232=0;

if(char_BUF=='\n')
{
for (y=0;y‹number_BUF;y++) // вывод массива
{
Write_Uart1(&BUF_RS232[y]); //
}
p= memchr( BUF_RS232 ,'V', strlen(BUF_RS232));
Write_Uart1(p);

number_BUF=0;
ui_taimer_debugUart=2000;
}


}
Наверное, что-то вроде этого. А как вы обьявляли BUF_RS232? Обьявление и параметр отличаются знаком.
Djakovskij вне форума  
Непрочитано 01.08.2010, 14:59  
ctefan
Временная регистрация
 
Регистрация: 15.06.2005
Сообщений: 86
Сказал спасибо: 3
Сказали Спасибо 1 раз в 1 сообщении
ctefan на пути к лучшему
По умолчанию Re: Стандартная библиотека в С30

Цитата:
Наверное, что-то вроде этого. А как вы обьявляли BUF_RS232? Обьявление и параметр отличаются знаком
Цитата:
unsigned char BUF_RS232[250] = {};
если сделать так:
Цитата:
Write_Uart1(&BUF_RS232[y]);
тогда в Юарт будет передоваться адрес элемента массива BUF_RS232
или нет?
ctefan вне форума  
Непрочитано 01.08.2010, 15:05  
testerplus
Прописка
 
Регистрация: 26.01.2009
Сообщений: 249
Сказал спасибо: 23
Сказали Спасибо 102 раз(а) в 61 сообщении(ях)
testerplus на пути к лучшему
По умолчанию Re: Стандартная библиотека в С30

Сообщение от ctefan Посмотреть сообщение
Подскажите пожалуйста в чём проблема? при использовании функции memchr() и функции
strlen() компилятор выдаёт предупреждение:
В memchr() нужно делать приведение типа: (char*)BUF_RS232

А с Write_Uart1 - то же самое, она требует unsigned int, а Вы ей unsigned char даете
testerplus вне форума  
Непрочитано 01.08.2010, 15:26  
Djakovskij
Вид на жительство
 
Регистрация: 14.06.2009
Адрес: Україна Київська обл. м.Буча
Сообщений: 327
Сказал спасибо: 104
Сказали Спасибо 105 раз(а) в 69 сообщении(ях)
Djakovskij на пути к лучшему
По умолчанию Re: Стандартная библиотека в С30

Write_Uart скорее всего просит указатель на символ.
Djakovskij вне форума  
Непрочитано 01.08.2010, 15:33  
testerplus
Прописка
 
Регистрация: 26.01.2009
Сообщений: 249
Сказал спасибо: 23
Сказали Спасибо 102 раз(а) в 61 сообщении(ях)
testerplus на пути к лучшему
По умолчанию Re: Стандартная библиотека в С30

Сообщение от Djakovskij Посмотреть сообщение
Write_Uart скорее всего просит указатель на символ.
Не, это сам символ. Просто учитываются 9-битные данные. Определение:

void WriteUART1(unsigned int data) __attribute__ ((section (".libperi")));


Из описания:
This function writes the data to be transmitted into the transmit buffer.

If 9-bit transmission is enabled, the 9-bit value is written into the transmit buffer.

If 8-bit transmission is enabled, then upper byte is masked and then written into the transmit buffer.
testerplus вне форума  
Непрочитано 01.08.2010, 15:38  
Djakovskij
Вид на жительство
 
Регистрация: 14.06.2009
Адрес: Україна Київська обл. м.Буча
Сообщений: 327
Сказал спасибо: 104
Сказали Спасибо 105 раз(а) в 69 сообщении(ях)
Djakovskij на пути к лучшему
По умолчанию Re: Стандартная библиотека в С30

Пересмотрел. Действительно УАРТ требует знакового целого. Перепутал с putsUART.

Последний раз редактировалось Djakovskij; 01.08.2010 в 15:50.
Djakovskij вне форума  
Непрочитано 01.08.2010, 15:47  
Djakovskij
Вид на жительство
 
Регистрация: 14.06.2009
Адрес: Україна Київська обл. м.Буча
Сообщений: 327
Сказал спасибо: 104
Сказали Спасибо 105 раз(а) в 69 сообщении(ях)
Djakovskij на пути к лучшему
По умолчанию Re: Стандартная библиотека в С30

И еще в цикле нужно опрашивать готовность УАРТ. Или кидать по прерыванию.
Djakovskij вне форума  
Непрочитано 01.08.2010, 15:51  
AJScorp
Почётный гражданин KAZUS.RU
 
Аватар для AJScorp
 
Регистрация: 10.05.2005
Адрес: Саратов.ru
Сообщений: 1,548
Сказал спасибо: 384
Сказали Спасибо 737 раз(а) в 417 сообщении(ях)
AJScorp на пути к лучшему
По умолчанию Re: Стандартная библиотека в С30

Кроме того, WriteUART1 не проверяет готовность UARTа к передаче, для этого есть функция BusyUART1, соответственно вот этот кусок
Код:
for (y=0;y‹number_BUF;y++) // вывод массива
{
Write_Uart1(BUF_RS232[y]); //
}
будет работать только в очень частных случаях.
AJScorp вне форума  
Непрочитано 01.08.2010, 20:36  
ctefan
Временная регистрация
 
Регистрация: 15.06.2005
Сообщений: 86
Сказал спасибо: 3
Сказали Спасибо 1 раз в 1 сообщении
ctefan на пути к лучшему
По умолчанию Re: Стандартная библиотека в С30

Большое Спасибо!!! за ответы

Сообщение от AJScorp Посмотреть сообщение

Кроме того, WriteUART1 не проверяет готовность UARTа к передаче, для этого есть функция BusyUART1, соответственно вот этот кусок

Код:
for (y=0;y‹number_BUF;y++) // вывод массива
{
Write_Uart1(BUF_RS232[y]); //
}

будет работать только в очень частных случаях.
Функция Write_Uart1(BUF_RS232[y]); несколько отличаеться от библиотечной, всмысле она моя
Цитата:
void Write_Uart1(unsigned int ch)

{
while(U1STAbits.UTXBF == 1);//ждём когда освободиться буффер
U1TXREG = ch; //

}
так нормально?
ctefan вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Библиотека LS020+LPC2368 Uragan90 Микроконтроллеры, АЦП, память и т.д 78 22.08.2012 22:12
Библиотека последовательного доступа для AT45DB161, порт CodeVision LVII Микроконтроллеры, АЦП, память и т.д 4 19.06.2010 03:32
Макрос для работы с портами в С30 DL36 Микроконтроллеры, АЦП, память и т.д 0 26.03.2010 10:51
библиотека HC12 для Proteus Fenolftalein Proteus, KiCAD и другие ECAD 0 12.01.2010 10:47


Часовой пояс GMT +4, время: 00:34.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot