не срабатывает прерывание от UART
27.03.2017, 11:08
|
|
|
Вид на жительство
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
не срабатывает прерывание от UART
Всем привет!
принимаю байты в main() - всё нормально
хочу в прерывании, но почему-то ничего не работает.
Гляньте этот простенький тестовый код: может я забыл чего...
|
Код:
|
#include ‹16F876A.h›
#use delay(clock=14745600)
#use rs232(baud=9600, parity=N, rcv=PIN_C7)
#fuses HS, NOWDT, NOPROTECT, NOBROWNOUT, PUT, NOLVP, NODEBUG, NOWRT
#byte PORTC=7
#bit Button =PORTC.4
#bit Led =PORTC.5 // anod -› pin_c5
#bit TabloC =PORTC.6
/*void main(void)
{
SET_TRIS_C(0b10011001);
Led=1; delay_ms(255); Led=0; // start_test
for(;;) {getc(); Led=!Led;}
}*/
#int_rda
void rda_isr(void)
{getc(); Led=!Led;}
void main(void)
{
SET_TRIS_C(0b10011001);
Led=1; delay_ms(255); Led=0; // start_test
ENABLE_INTERRUPTS(INT_RDA);
ENABLE_INTERRUPTS(GLOBAL);
for(;;);
} |
|
|
|
|
27.03.2017, 12:09
|
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
|
Re: не срабатывает прерывание от UART
PIC я начинаю забывать, но вроде же бы чушь какая-то написана или нет?
|
|
|
|
27.03.2017, 12:49
|
|
|
Заблокирован
Регистрация: 16.05.2015
Адрес: Болгария
Сообщений: 1,464
Сказал спасибо: 287
Сказали Спасибо 1,122 раз(а) в 540 сообщении(ях)
|
Re: не срабатывает прерывание от UART
ENABLE_INTERRUPTS( ПЕРИФЕРИАЛ) ?
|
|
|
|
27.03.2017, 12:54
|
|
|
Почётный гражданин KAZUS.RUN
Регистрация: 11.06.2006
Адрес: 51° 46′ 0″ N, 55° 6′ 0″ E
Сообщений: 1,993
Сказал спасибо: 378
Сказали Спасибо 1,744 раз(а) в 712 сообщении(ях)
|
Re: не срабатывает прерывание от UART
Сообщение от yellow87
|
принимаю байты в main() - всё нормально
хочу в прерывании, но почему-то ничего не работает.
|
Где там байты?
Сообщение от yellow87
|
|
может я забыл чего...
|
А что должно быть то, ничего не понятно?
|
|
|
|
27.03.2017, 13:16
|
|
|
Вид на жительство
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
Re: не срабатывает прерывание от UART
Сообщение от OakRidge
|
|
ENABLE_INTERRUPTS( ПЕРИФЕРИАЛ) ?
|
нет таких (и подобных) констант
Сообщение от welcome61
|
|
Где там байты?
|
getc() - это стандартная функция чтения байта
Сообщение от welcome61
|
|
А что должно быть то, ничего не понятно?
|
светодиод должен переключаться по приходу нового байта
|
|
|
|
27.03.2017, 13:38
|
|
|
Заблокирован
Регистрация: 16.05.2015
Адрес: Болгария
Сообщений: 1,464
Сказал спасибо: 287
Сказали Спасибо 1,122 раз(а) в 540 сообщении(ях)
|
Re: не срабатывает прерывание от UART
Есть бит PIE в INTCON. Разрешает прерывания периферии.
Не поставив в 1 они работать не будет. УАРТ из их числа.
|
|
|
|
27.03.2017, 17:54
|
|
|
Гражданин KAZUS.RUN
Регистрация: 22.07.2007
Адрес: Владивосток
Сообщений: 996
Сказал спасибо: 448
Сказали Спасибо 388 раз(а) в 202 сообщении(ях)
|
Re: не срабатывает прерывание от UART
Сообщение от Easyrider83
|
|
PIC я начинаю забывать, но вроде же бы чушь какая-то написана или нет?
|
Имхо это называется CCS C.
|
|
|
|
27.03.2017, 22:18
|
|
|
Гуру портала
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 11,134
Сказал спасибо: 202
Сказали Спасибо 3,285 раз(а) в 2,151 сообщении(ях)
|
Re: не срабатывает прерывание от UART
Сообщение от OakRidge
|
Есть бит PIE в INTCON. Разрешает прерывания периферии.
Не поставив в 1 они работать не будет. УАРТ из их числа.
|
Любителям спл это неведомо
__________________
кагмаподэ магмаподэ
|
|
|
|
28.03.2017, 00:37
|
|
|
Прописка
Регистрация: 21.04.2009
Адрес: Королёв
Сообщений: 89
Сказал спасибо: 1,054
Сказали Спасибо 34 раз(а) в 27 сообщении(ях)
|
Re: не срабатывает прерывание от UART
Сам в Сях по поверхности, не пинайте сильно, но у Вас getc() байты в пустоту принимает?
|
|
|
|
28.03.2017, 04:10
|
|
|
Вид на жительство
Регистрация: 29.04.2007
Адрес: Иркутск
Сообщений: 311
Сказал спасибо: 0
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
Re: не срабатывает прерывание от UART
|
Цитата:
|
Есть бит PIE в INTCON. Разрешает прерывания периферии.
Не поставив в 1 они работать не будет. УАРТ из их числа.
|
ENABLE_INTERRUPTS(GLOBAL); устанавливает два бита: GIE и PIE
|
Цитата:
|
|
у Вас getc() байты в пустоту принимает
|
так мне и не нужно принятый байт сохранять, мне нужно только отреагировать на его появление. Для теста этого достаточно.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 06:18.
|
|