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

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

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

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

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

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


 
Опции темы
Непрочитано 09.07.2017, 20:21  
welcome61
Гражданин KAZUS.RU
 
Аватар для welcome61
 
Регистрация: 11.06.2006
Адрес: 51° 46′ 0″ N, 55° 6′ 0″ E
Сообщений: 547
Сказал спасибо: 129
Сказали Спасибо 686 раз(а) в 207 сообщении(ях)
welcome61 на пути к лучшему
По умолчанию Re: Изучение PIC C Compiler(CCS C)

Код HTML:
#INT_RDA 
void serial_isr()
{   
	int8 i;
	for (i = 0; i < 3; i++)
	  {
        buffer[i] = getc();	   //прием байта от ЦП
      }	
		DATA_MANAGEMENT = buffer[0];
		DATA_CODE = buffer[1];
	    
    return;
}
Реклама:

Последний раз редактировалось welcome61; 09.07.2017 в 20:38.
welcome61 вне форума  
Непрочитано 09.07.2017, 21:12  
Prototup
Прописка
 
Аватар для Prototup
 
Регистрация: 07.05.2008
Адрес: Москва
Сообщений: 213
Сказал спасибо: 14
Сказали Спасибо 50 раз(а) в 15 сообщении(ях)
Prototup на пути к лучшему
По умолчанию Re: Изучение PIC C Compiler(CCS C)

Лыжи не едут... или я уже ....
Вот:http://kazus.ru/forums/attachment.ph...1&d=1499620328
Виноват немного- buffer идентифицировать забыл.
Извините за невежество, всё-таки в таком примере информация читается из потока или из аппаратного буфера, обозначенного в программе выше как RECEIVE_BUFFER=12,?
Миниатюры:
Нажмите на изображение для увеличения
Название: Ошибки.PNG
Просмотров: 0
Размер:	58.0 Кб
ID:	116207  

Последний раз редактировалось Prototup; 09.07.2017 в 21:18.
Prototup вне форума  
Непрочитано 09.07.2017, 21:26  
Prototup
Прописка
 
Аватар для Prototup
 
Регистрация: 07.05.2008
Адрес: Москва
Сообщений: 213
Сказал спасибо: 14
Сказали Спасибо 50 раз(а) в 15 сообщении(ях)
Prototup на пути к лучшему
По умолчанию Re: Изучение PIC C Compiler(CCS C)

И каким размером обозначить массив данных buffer[i] , если он должен принять поток из
unsigned int16 Numbe_Pulse;
unsigned int16 Duty;
unsigned int16 Cycle;
следующим без разделителей, типа как 12Byte переменную?
Prototup вне форума  
Непрочитано 10.07.2017, 16:13  
MisterDi
Почётный гражданин KAZUS.RU
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,487
Сказал спасибо: 470
Сказали Спасибо 978 раз(а) в 580 сообщении(ях)
MisterDi на пути к лучшему
По умолчанию Re: Изучение PIC C Compiler(CCS C)

Объявляете buffer как глобальный массив int16 из 3-х элементов. Если не хватает памяти данных - используйте union.
__________________
misterdi<@>i.ua
MisterDi вне форума  
Непрочитано 10.07.2017, 22:05  
Prototup
Прописка
 
Аватар для Prototup
 
Регистрация: 07.05.2008
Адрес: Москва
Сообщений: 213
Сказал спасибо: 14
Сказали Спасибо 50 раз(а) в 15 сообщении(ях)
Prototup на пути к лучшему
По умолчанию Re: Изучение PIC C Compiler(CCS C)

MisterDi ! Спасибо за участие! В полусыром виде пока оставил, в буфере всё появляется, надо только массив увеличить в два раза и изменить глубину до одного Byte и потом опять эти данные склеить по двое до 16Bit, далее пока сделаю паузу - надо съездить к тёще, за одно - поменять масло, фильтра и тормозные диски с колодками. Пока Вот, особо не заморачивался:
void main()
{

setup_oscillator(OSC_500KHZ); // Установливает внутренний осциллятор в 500кHZ МГц,
//для корректной установки скорости обмена
// Опции варьируются в зависимости от микросхемы и перечислены в заголовочных файлах устройства.

enable_interrupts(GLOBAL);//разрешение глобального прерывания
enable_interrupts(INT_RDA);
while(TRUE)
{
static unsigned int16 Numbe_Pulse=0;
static unsigned int16 Duty=0;
static unsigned int16 Cycle=0;

if(rcv_buffer_full())//функция теста на заполнения буфера
{
int16 buffer[3];
int8 i;
for (i = 0; i <= 3; i++)
{
buffer[i] = getc(); //приём 8 bit и растаскивание с индексацией массива
}
Numbe_Pulse = buffer[0];
Duty = buffer[1];
Cycle = buffer[2];

}

}
}
http://kazus.ru/forums/attachment.ph...1&d=1499709111 http://kazus.ru/forums/attachment.ph...1&d=1499709132
ЗЫ: если что придёт в голову - черкни, твоя критика тож очень пригодилась!
Сообщение от MisterDi Посмотреть сообщение
Объявляете buffer как глобальный массив int16 из 3-х элементов. Если не хватает памяти данных - используйте union.
Маленькие замечания:
- функция getc() больше байта за одну итерацию не воспринимает - из апноута: Returns: An 8 bit character, что вполне логично.
Миниатюры:
Нажмите на изображение для увеличения
Название: Терминал.PNG
Просмотров: 0
Размер:	1.3 Кб
ID:	116232   Нажмите на изображение для увеличения
Название: Регистры.PNG
Просмотров: 0
Размер:	15.7 Кб
ID:	116233  

Последний раз редактировалось Prototup; 10.07.2017 в 22:16.
Prototup вне форума  
Непрочитано 17.07.2017, 15:01  
Prototup
Прописка
 
Аватар для Prototup
 
Регистрация: 07.05.2008
Адрес: Москва
Сообщений: 213
Сказал спасибо: 14
Сказали Спасибо 50 раз(а) в 15 сообщении(ях)
Prototup на пути к лучшему
Вопрос Re: Изучение PIC C Compiler(CCS C)

Всего несколько строчек кода, а нервы не к чёрту! Заблудился в трёх соснах...
Кто знает как вернуть из форматированного потока строчных цифр их unsigned int16 значения?
Или ещё проще: из форматированного потока строчных цифр их unsigned int8 значения?
Проц есс-но 8 битный, соответствующие библиотеки подключены.

Вот кусочек кода:

unsigned int8 bufer[18];// массив по количеству символов, хранящихся в буффере USART
int8 i=0;
for (i = 0; i <= 17;i++)
{
bufer[i] = atoi( getc());// чтение и преобразование принятых данных из буффера USART
} // и распределение цифр уже в сформированном массиве.

Вот сама форматированная строка:http://kazus.ru/forums/attachment.ph...1&d=1500289084


А вот что при этом получается:http://kazus.ru/forums/attachment.ph...7&d=1500289065

Перечитал и перегуглил всё по этому вопросу, всё должно работать...
Чё за хрень...
Функция atol32(); - возвращает правда, два первых 16bit значения, а мне нужно 3 раза по 16bit...
Миниатюры:
Нажмите на изображение для увеличения
Название: Регистры.PNG
Просмотров: 0
Размер:	10.1 Кб
ID:	116427  
Изображения:
 

Последний раз редактировалось Prototup; 17.07.2017 в 15:35.
Prototup вне форума  
Непрочитано 17.07.2017, 23:34  
MisterDi
Почётный гражданин KAZUS.RU
 
Аватар для MisterDi
 
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,487
Сказал спасибо: 470
Сказали Спасибо 978 раз(а) в 580 сообщении(ях)
MisterDi на пути к лучшему
По умолчанию Re: Изучение PIC C Compiler(CCS C)

Если у Вас на входе ASCII-строка, то сначала нужно выделить подстроки с числами (от пробела до пробела), затем в полученных подстроках брать по 1 байту, преобразовывать в число от 0 до 9, если конец подстроки строки не достигнут, результат умножать на 10.
__________________
misterdi<@>i.ua
MisterDi вне форума  
Непрочитано 18.07.2017, 18:28  
Vladislav
Прохожий
 
Регистрация: 18.07.2017
Сообщений: 2
Сказал спасибо: 1
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Vladislav на пути к лучшему
По умолчанию Re: Изучение PIC C Compiler(CCS C)

Добрый день! Уважаемые знатоки может кто подскажет в чем дело, есть проблемы с обменом по SPI.
1) Использую микроконтроллер PIC24EP256GP202.
2) При использовании SPI1 запись по SPI проходит, устройство отвечает (проверено осцилографом), но чтение данных выдает на входе всегда 0, при использовании SPI2 (использую с переназначаемыми выводами) все работает и запись и чтение.
2) Инициализирую SPI1 следующей строкой:
#use spi(MASTER, FORCE_HW, SPI1, MODE=0, SAMPLE_RISE ,BITS=8,BAUD=3000000, stream=SPI_PORT1)
3) Инициализация SPI2:
#PIN_SELECT SCK2OUT =PIN_B7
#PIN_SELECT SDI2 =PIN_B12
#PIN_SELECT SDO2 =PIN_B8
#use spi(MASTER, FORCE_HW, SPI2, MODE=0, SAMPLE_RISE ,BITS=8,BAUD=3000000, stream=SPI_PORT1)
3) Функция записи spi_xfer(SPI_PORT1, data);
4) Функция чтения dataInput = spi_xfer(SPI_PORT1, 0x00);
5) Версия компилятора 5.071
Vladislav вне форума  
Непрочитано 24.07.2017, 20:14  
Prototup
Прописка
 
Аватар для Prototup
 
Регистрация: 07.05.2008
Адрес: Москва
Сообщений: 213
Сказал спасибо: 14
Сказали Спасибо 50 раз(а) в 15 сообщении(ях)
Prototup на пути к лучшему
По умолчанию Re: Изучение PIC C Compiler(CCS C)

Сообщение от MisterDi Посмотреть сообщение
преобразовывать в число от 0 до 9, если конец подстроки строки не достигнут
Типичное описалово функции getc.
Сообщение от MisterDi Посмотреть сообщение
результат умножать на 10.
Умножать и прибавлять к произведению пробовал... оперативку жрёт... только на эту функцию с трудом и хватает!
Уж так устроены функции передачи-приёма, что работают только с данными типа "символ". Жаль что у CCS нет функций прямого ввода-вывода, типа fread и fwrite, как у взрослых "С" компиляторов.
Однако, если перечитать устройство функций ввода-вывода и их связь с символьными указателями и функциями, то можно найти решение о передаче из ранее созданного массива, данных по их указателям. В конце концов все символы всё равно "набираются" из "0" и "1".
Prototup вне форума  
Непрочитано 24.07.2017, 20:23  
Prototup
Прописка
 
Аватар для Prototup
 
Регистрация: 07.05.2008
Адрес: Москва
Сообщений: 213
Сказал спасибо: 14
Сказали Спасибо 50 раз(а) в 15 сообщении(ях)
Prototup на пути к лучшему
По умолчанию Re: Изучение PIC C Compiler(CCS C)

Сообщение от Vladislav Посмотреть сообщение
устройство отвечает (проверено осцилографом)
Так трудно что-либо сказать. Симульни в Протеусе пошагово с просмотром содержания соответствующих (буферов) регистров на приём и передачу.
Prototup вне форума  
Сказали "Спасибо" Prototup
Vladislav (26.07.2017)
 

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

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
i2c+ccs pic Gladkih Микроконтроллеры, АЦП, память и т.д 9 18.04.2016 22:17
PIC BASIC PRO Compiler 2.47 dosikus Proteus, KiCAD и другие ECAD 27 05.12.2009 05:48
изучение IAR AVR C compiler granel Микроконтроллеры, АЦП, память и т.д 0 10.10.2008 20:45
PIC C Compiler PCWH458 sergxxx Микроконтроллеры, АЦП, память и т.д 9 23.09.2008 18:25
Не включается дебаггер в CCS C Compiler BigMazzi Микроконтроллеры, АЦП, память и т.д 4 19.09.2008 13:34


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


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