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,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: не срабатывает прерывание от UART
PIC я начинаю забывать, но вроде же бы чушь какая-то написана или нет?
|
|
|
|
27.03.2017, 12:49
|
|
Почётный гражданин KAZUS.RU
Регистрация: 16.05.2015
Адрес: Болгария
Сообщений: 1,460
Сказал спасибо: 286
Сказали Спасибо 1,125 раз(а) в 540 сообщении(ях)
|
Re: не срабатывает прерывание от UART
ENABLE_INTERRUPTS( ПЕРИФЕРИАЛ) ?
|
|
|
|
27.03.2017, 12:54
|
|
Почётный гражданин KAZUS.RU
Регистрация: 11.06.2006
Адрес: 51° 46′ 0″ N, 55° 6′ 0″ E
Сообщений: 1,975
Сказал спасибо: 370
Сказали Спасибо 1,725 раз(а) в 706 сообщении(ях)
|
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
|
|
Почётный гражданин KAZUS.RU
Регистрация: 16.05.2015
Адрес: Болгария
Сообщений: 1,460
Сказал спасибо: 286
Сказали Спасибо 1,125 раз(а) в 540 сообщении(ях)
|
Re: не срабатывает прерывание от UART
Есть бит PIE в INTCON. Разрешает прерывания периферии.
Не поставив в 1 они работать не будет. УАРТ из их числа.
|
|
|
|
27.03.2017, 17:54
|
|
Гражданин KAZUS.RU
Регистрация: 22.07.2007
Адрес: Владивосток
Сообщений: 984
Сказал спасибо: 435
Сказали Спасибо 375 раз(а) в 197 сообщении(ях)
|
Re: не срабатывает прерывание от UART
Сообщение от Easyrider83
|
PIC я начинаю забывать, но вроде же бы чушь какая-то написана или нет?
|
Имхо это называется CCS C.
|
|
|
|
27.03.2017, 22:18
|
|
Гуру портала
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,375
Сказал спасибо: 176
Сказали Спасибо 3,128 раз(а) в 2,017 сообщении(ях)
|
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, время: 10:23.
|
|