05.03.2017, 22:30
|
|
Почётный гражданин KAZUS.RU
Регистрация: 11.06.2006
Адрес: 51° 46′ 0″ N, 55° 6′ 0″ E
Сообщений: 1,975
Сказал спасибо: 370
Сказали Спасибо 1,726 раз(а) в 707 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Давно не заходил на страницу http://www.ccsinfo.com (НЕ РЕКЛАМА).
Заглянул и увидел, что я там забанен. Но ведь я там даже не регистрировался! ПРосто любопытства ради поглядывал туда от силы раз в месяц. Странно.
Применил к ним вот это ----- http://cameleo.xyz/.
Помогло!
Последний раз редактировалось welcome61; 05.03.2017 в 22:42.
|
|
|
|
21.03.2017, 21:08
|
|
Частый гость
Регистрация: 11.10.2015
Сообщений: 40
Сказал спасибо: 12
Сказали Спасибо 169 раз(а) в 27 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
|
|
|
Эти 5 пользователя(ей) сказали Спасибо wolfeldt за это сообщение:
|
|
|
14.05.2017, 23:09
|
|
Частый гость
Регистрация: 11.10.2015
Сообщений: 40
Сказал спасибо: 12
Сказали Спасибо 169 раз(а) в 27 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
|
|
|
Эти 4 пользователя(ей) сказали Спасибо wolfeldt за это сообщение:
|
|
|
25.06.2017, 17:31
|
|
Прописка
Регистрация: 07.05.2008
Адрес: Москва
Сообщений: 231
Сказал спасибо: 26
Сказали Спасибо 54 раз(а) в 19 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Столкнулся с проблемкой: хотел дописать старый проект. Компилятор CCS5.071. Протеус почему-то не понимает определения типов #bit (обнаруживается при пошаговой отладке в окне Variables) , программа компилируется правильно, но при отладке в протеусе выдаёт:
в CCS всё вроде в порядке, при компиляции не ругается
В чём может быть дело?
Последний раз редактировалось Prototup; 25.06.2017 в 17:53.
|
|
|
|
26.06.2017, 14:16
|
|
Почётный гражданин KAZUS.RU
Регистрация: 11.06.2006
Адрес: 51° 46′ 0″ N, 55° 6′ 0″ E
Сообщений: 1,975
Сказал спасибо: 370
Сказали Спасибо 1,726 раз(а) в 707 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Замените #byte на #Word
Пример:
#word INTCON = 0xFF2
#bit TOIF = INTCON.2
#word PIR1 = 0xF9E
#bit TMR1IF = PIR1.0
|
|
|
|
02.07.2017, 16:56
|
|
Прописка
Регистрация: 07.05.2008
Адрес: Москва
Сообщений: 231
Сказал спасибо: 26
Сказали Спасибо 54 раз(а) в 19 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Спасибки welcome61!, обошёлся без переопределений, странно что раньше прокатывало, видно что-то в компиле изменилось к худшему.
Вот другая проблемка: адаптировал "под себя" экземпл RS232, из этого-же компилятора. Не могу понять почему нарушено форматирование, знакоместа однако на месте....
Программка:
прим: все аргументы #include , есс-но в треугольных скобках, на форуме, при их установке, всё что внутри их, странным образом пропадает!
#include ‹18F46K22.h›
#include stdio.h
#include stdlib.h
#include math.h
#FUSES NOWDT //No Watch Dog Timer
#FUSES NOPUT //No Power Up Timer
#FUSES NOMCLR //Master Clear pin used for I/O
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage progming
#FUSES NOCPD //No EE protection
#FUSES NOPROTECT //Code not protected from reading
#use delay(crystal=4000000)
#define USE_TX_ISR
#use rs232(UART1, BAUD=9600,RECEIVE_BUFFER=32,TRANSMIT_BUFFER=32,TXI SR, xmit=PIN_C6,rcv=PIN_C7 )
#use standard_io (A,B,C,D,E)
void main()
{
char c;
printf("\r\nEX_RS232_BUFFER.c\r\n\n");
enable_interrupts(GLOBAL);
while(TRUE)
{
USE_TX_ISR
if(kbhit())// keyboard
{
c = getc();
putc(c);
if(c == '\r')
putc('\n');
else if(c == '\b')
{
putc(' ');
putc(c);
}
}
// User Code
}
}
Програмка пока не дописана, это только фрагмент.
Вот что получается при попытке ввести любой символ с клавиатуры, раскладка не сильно влияет, только одни кроказябры...
Последний раз редактировалось Prototup; 02.07.2017 в 17:30.
|
|
|
|
03.07.2017, 22:57
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.02.2008
Адрес: Днепр. Украина
Сообщений: 3,294
Сказал спасибо: 442
Сказали Спасибо 1,048 раз(а) в 706 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Очень похоже на несогласование скоростей приема и передачи. Проверьте настройки виртуального терминала. Кстати, тестовое сообщение из начала программы в терминале видно?
__________________
misterdi<@>i.ua
|
|
|
|
03.07.2017, 23:55
|
|
Прописка
Регистрация: 07.05.2008
Адрес: Москва
Сообщений: 231
Сказал спасибо: 26
Сказали Спасибо 54 раз(а) в 19 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Всем доброго времени суток, тем кто не спит, в.ч. и тебе MisterDi, всё оказалось на много проще: кривизна рук и не согласованность по скоростям ни причём! Этот мерзкий кусочек кода перестал запускаться, в исходном виде, вообще на следующий день!
Сообщение от MisterDi
|
Кстати, тестовое сообщение из начала программы в терминале видно?
|
И ничего там видно не было, знакоместа совпадали - остальное полный бред.
Я себе долго посыпал бы голову пеплом , но меня мучили смутные сомнения по поводу симулятора и как оказалось не напрасно! У себя на ноуте я не успел обновить Протеус до последней версии, остался 8.1 SP1. И произошло чудо, всё заработало!!! https://kazus.ru/forums/attachment.p...1&d=1499113037
И какой из всего этого надо сделать вывод?
Последний раз редактировалось Prototup; 04.07.2017 в 00:02.
|
|
|
|
04.07.2017, 22:59
|
|
Прописка
Регистрация: 07.05.2008
Адрес: Москва
Сообщений: 231
Сказал спасибо: 26
Сказали Спасибо 54 раз(а) в 19 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Всё пошло! Работает как надо! Proteus 8.6SP2, компилятор 5_071.
По следующей схеме, правда частоту кварца я уменьшил до 1мГц, но и на 10мГц работает так-же, главное соблюсти условие #use delay(clock = 1000000) и setup_oscillator(OSC_1MHZ); но и это ещё не всё, короче различия в варианте выше - существенные. Вот полностью рабочий вариант с буферизацией (объём буфера можно поставить "по-вкусу", скобки ‹› в #include ставить не забывайте воообщем мож кому и сгодится по первости :
//Приём и передача принятых символов на терминал по RS232//
#include ‹18F46K22.h›
#include ‹stdio.h›
#include ‹stdlib.h›
#include ‹math.h›
#include ‹string.h›
#FUSES NOWDT //No Watch Dog Timer
#FUSES NOPUT //No Power Up Timer
#FUSES NOBROWNOUT //No brownout reset
#FUSES NOLVP //No low voltage progming
#FUSES NOCPD //No EE protection
#FUSES NOPROTECT //Code not protected from reading
#define USE_TX_ISR
#fuses NOMCLR INTRC_IO// используется компилятором совмесно с #use delay для допустимой частоты
#use delay(clock = 1000000)// и компилятор сделает её корректной автоматически
//Настройки порта с буффером обмена на приём и передачу 16 Bit//
#use rs232(UART1, BAUD=9600, TXISR, RECEIVE_BUFFER=32, TRANSMIT_BUFFER=32, xmit=PIN_C6,rcv=PIN_C7 )
#use standard_io (A,B,C,D,E)//функции ввода-вывода сами управляют TRIS
void main()
{
setup_oscillator(OSC_1MHZ); // Установливает внутренний осциллятор в 1 МГц,
//для корректной установки скорости обмена
// Опции варьируются в зависимости от микросхемы и перечислены в заголовочных файлах устройства.
int8 c;
printf("\r\nEX_RS232_BUFFER.c\r\n\n");
enable_interrupts(GLOBAL);//разрешение глобального прерывания
while(TRUE)
{
USE_TX_ISR
if(kbhit())// эта функция возвращает TRUE,
//если символ был получен и ожидает в аппаратном буфере getc ()
{
c = getc();//приём одного байта
putc(c);//Эта функция отправляет символ по контакту RS232 XMIT.
if(c == '\r')// если возврат каретки т.е новая строка
putc('\n');//то перевод строки
else if(c == '\b')//или если возврат на шаг
{
putc(' ');//то пустой символ
putc(c);
}
}
// User Code
}
}
https://kazus.ru/forums/attachment.p...1&d=1499277946
Последний раз редактировалось Prototup; 05.07.2017 в 22:12.
|
|
|
|
09.07.2017, 19:49
|
|
Прописка
Регистрация: 07.05.2008
Адрес: Москва
Сообщений: 231
Сказал спасибо: 26
Сказали Спасибо 54 раз(а) в 19 сообщении(ях)
|
Re: Изучение PIC C Compiler(CCS C)
Чё-то я зациклился и вот по какому поводу: есть два проца, которые дружат между собой по USART асинхронно (RS232), один другому передаёт 3 переменные (для теста):
Кусок кода передатчика
........//.......//........//...
#use rs232(UART1, BAUD=9600, TXISR, RECEIVE_BUFFER=15, TRANSMIT_BUFFER=15, xmit=PIN_C6,rcv=PIN_C7 )
#use standard_io (A,B,C,D,E)//функции ввода-вывода сами управляют TRIS
void main()
{
setup_oscillator(OSC_32MHZ); // Установливает внутренний осциллятор в 32MHZ МГц,
//для корректной установки скорости обмена
// Опции варьируются в зависимости от микросхемы и перечислены в заголовочных файлах устройства.
unsigned int16 Numbe_Pulse; //число импульсов
unsigned int16 Duty;
unsigned int16 Cycle;
enable_interrupts(GLOBAL);//разрешение глобального прерывания
while(TRUE)
{
Numbe_Pulse=1259;
Duty=1100;
Cycle=1128;
if(tx_buffer_available()›1)// все еще быть помещены в буфер //
//передачи, прежде чем он переполнится.
{
USE_TX_ISR
printf("%Lu%Lu%Lu", Numbe_Pulse,Duty,Cycle);
delay_ms(1000);
}
}
}
другой принимает и видимо успешно, на терминале видно и в симуляции что в буфере висят данные: https://kazus.ru/forums/images/attach/png.gif
https://kazus.ru/forums/attachment.p...1&d=1499614696
Кусок кода приёмника:
#use rs232(UART1, BAUD=9600, TXISR, RECEIVE_BUFFER=12, TRANSMIT_BUFFER=1, xmit=PIN_C6,rcv=PIN_C7 )
#use standard_io (A,B,C,D,E)//функции ввода-вывода сами управляют TRIS
void main()
{
setup_oscillator(OSC_32MHZ); // Устанавливает внутренний осциллятор в 32MHZ МГц,
//для корректной установки скорости обмена
// Опции варьируются в зависимости от микросхемы и перечислены в
//заголовочных файлах устройства.
unsigned int16 Numbe_Pulse; //число импульсов
unsigned int16 Duty;
unsigned int16 Cycle;
enable_interrupts(GLOBAL);//разрешение глобального прерывания
while(TRUE)
{
Numbe_Pulse=1259;
Duty=1100;
Cycle=1128;
if(tx_buffer_available()›1)// все еще быть помещены в буфер передачи, прежде чем он переполнится.
{
USE_TX_ISR
printf("%Lu%Lu%Lu", Numbe_Pulse,Duty,Cycle);
delay_ms(1000);
}
}
}
Вот и вопрос: почему данные с буфера не записываются в переменные и как их туда записать? Простейший случай, ну никак не могу решить этот кроссворд!
Вот проект полностью: схемка в Proteus и прошивочки... Проба_RS232.zip
Последний раз редактировалось Prototup; 09.07.2017 в 20:06.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 02:15.
|
|