прерывание виснет

Раздел создан специально для людей которым интересна робототехника, но в силу разных причин они не знают с чего начать.
Задавайте ваши вопросы, какими бы простыми они не казались, постоянные посетители форума постараются ответить на них по мере своих сил.
Робот своими руками. Самодельный робот.

прерывание виснет

Сообщение Myp » 15 фев 2007, 23:33

ХЕЛП
прерывание виснет
но программа работает

поставил отладочный светик на PINB.4 когда прога работает он моргает
второй отладочный светик на PINB.5 который должен сработать если контроллер хоть раз вошёл в прерывание PIND.6 включается если прерывание отработало и пошла моя процедура PIND.7 если моя процедура прошла.

во время приёма данных процессор зависает
светик который на входе в прерывание PINB.5 не загораецца
тоесть проц  уходит по прерыванию но процедура прерывания не запускаеться

настройки с 2х концов одинаковые
провода не перепутал
в чём может быть дело????

исходник в инклюде
Вложения
контроллер.c
(5.08 КиБ) Скачиваний: 413
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Сообщение avr123.nm.ru » 16 фев 2007, 00:44

ставь метки как в   avr123.nm.ru/z4.htm  
и  смотри где виснет.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Сообщение Myp » 16 фев 2007, 11:50

метки...
толку от этих меток ежели я устройство уартом подключаю к КПК
вместо меток я на свободные ноги мк светодиодов нацепил и в код вместо меток поставил включение ножек последовательно
когда начинаецца передача часть светиков срабатывает часть нет

мне от этих меток не жарко не холодно
я ведь их в принципе не могу ничем увидеть так как уарт занят подключён к девайсу

виснет гдето в этих 4х строчках
вчера вечером устал спать пошёл не определил точно в какой
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)   //тут ещё прога работает
  {
  rx_buffer[rx_wr_index]=data;
  if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
  if (++rx_counter == RX_BUFFER_SIZE) //а вот досюда процессор не доходит


такое чуство что мк по прерыванию начинает принимать данные но почемуто не принимает и висит в непрерывном ожидании. хз мож ждёт пока буфер заполнится или ещё что.
похоже дело не в том что код у меня дурацкий а просто я непонимаю как уарт сделать человечески
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Сообщение avr123.nm.ru » 16 фев 2007, 13:44

Myp писал(а):мне от этих меток не жарко не холодно
я ведь их в принципе не могу ничем увидеть так как уарт занят подключён к девайсу


дак устройство отображает информацию ?  если нет то кинте параллелно провод на устройство отображающее инфу.  

На выход USART можно кучу приемников навесить...  ДВА совсем легко !
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Сообщение avr123.nm.ru » 16 фев 2007, 13:45

или в симуляторе посмотрите.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Сообщение Myp » 16 фев 2007, 16:00

и в что я получу подрубившись в линию??

тоже самое только вместо светиков у меня в терминале придёт сообщение - метка стоящая перед этими 4мя строчками кода

и чтоб подрубиться это мне ещё надо заказывать преобразователь интерфейса в москве, неделю только ждать.

во вторых код абсолютно типичный
у в задачах курса один в один такой же код для уарта
и в эмуляторе всё ессесно гуд также как и в задачах курса
но в железе почемуто не идёт =/
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Сообщение avr123.nm.ru » 16 фев 2007, 16:32

Myp писал(а):чтоб подрубиться это мне ещё надо заказывать преобразователь интерфейса в москве, неделю только ждать.


достаточно резистор 10 к на базу кт3102, эмитер на землю, коллектор на +5 вольт через резистор 3 ком  и с коллектора проводок на вход КОМ порта ну и земли соединить.



Myp писал(а):в задачах курса один в один такой же код для уарта

и в эмуляторе всё ессесно гуд также как и в задачах курса

но в железе почемуто не идёт =/


значит какое то различие в железе раз в эмуляторе нормально работает.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Сообщение avr123.nm.ru » 16 фев 2007, 16:37

if (++rx_wr_index == RX_BUFFER_SIZE) rx_wr_index=0;
 if (++rx_counter == RX_BUFFER_SIZE) //а вот досюда процессор не доходит

попробуйте так:

if (++rx_wr_index == RX_BUFFER_SIZE)
{
rx_wr_index=0;
}


if (++rx_counter == RX_BUFFER_SIZE)
{     //а вот досюда процессор не доходит

}


===============

вы уверены что  rx_counter rx_counter  у вас достигает  (RX_BUFFER_SIZE - 1)
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Сообщение Myp » 16 фев 2007, 17:16

вы уверены что  rx_counter rx_counter  у вас достигает  (RX_BUFFER_SIZE - 1)


неа не уверен :roll:
тока как бы посмотреть до скольки эта считалочка считает... :?:
в принципе я пробовал всего 1 символ отправить, не прошёл


достаточно резистор 10 к на базу кт3102, эмитер на землю, коллектор на +5 вольт через резистор 3 ком  и с коллектора проводок на вход КОМ порта ну и земли соединить.

ладно уговорили пойду в суботу на рынок куплю транзистор =)
ато я ток недавно перехал в голую квартиру пришлось всё закупать с нуля паяльник, пинцет, резисторы, даж с проводками проблема=)

ЗЫ
надо всёже подключить выход кпк к звуковухе померять какие там импыльсы и уровни
ато у меня вкрались сомнения что там не всё в порядке :evil:
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Сообщение avr123.nm.ru » 16 фев 2007, 17:35

на звуковуху можно и с USART передавать !  (через резистор 22-100 ком)

только расшифоровывать в ручную придется, или утилитку написать.  с скорость передачи наверно до 4800-9600 делать.

звуковуха со звуковым редактором это же 2-х лучевой низкочастотный осциллограф.
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Сообщение avr123.nm.ru » 16 фев 2007, 17:38

а что ты топик не в микроконтроллерах завел ?
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва

Сообщение Myp » 16 фев 2007, 20:32

avr123.nm.ru писал(а):а что ты топик не в микроконтроллерах завел ?

ну это
тут же ветка для  ламеров
если бы это была какаято реальная тема...
передача данных по USART  это как раз основы основ, и заковыка у меня чисто ламерская  :(


на счёт передачи
1 символ то по уарту можно и вручную расшифровать=)
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Сообщение Myp » 16 фев 2007, 20:56

ой я дураааак
у меняж контроллер настроен на 9600
а прогу я залил со скоростью 19200
пока экспериментировал с прогой забыл 9600 поставить

это я тока когда звуковухой померел и ничё не увидел понял что скорость слишком дикая

пойду прогу переделывать
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Сообщение Myp » 16 фев 2007, 21:38

переделал не помогло...


короче померял на компе звуковухой
если передаёт МК форма сигналов такая
-------   ----             ------/-/-/-/-/-/-/-/-/(типа нулевой уровень и 50Гц шум)
        |  |    |            |
        |_|    |______|        тоесть на картинке импульсы это провалы

а если передаёт КПК форма сигналов такая

        ---     ---------
        |  |    |          |
____|  |__|          |___/_/_/_/_/___   тоесть на картинке импульсы это пики


причём уровень сигнала от КПК зашкаливает почти а уровень сигнала от мк вполне в пределах

чёто мне это не нравица
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

Сообщение Myp » 16 фев 2007, 22:13

вобщем так
вычислил строчку в которой виснет

status=UCSRA;
PINB.5 = 1;
if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)
  {
  PIND.6 = 1;

светик на ноге 5 загорается светик на ноге 6 не загорается


помогите расшифровать строчку if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)

это я так понял проверка на 3 типа ошибок.
ошибка фрейма  FRAMING_ERROR
ошибка чётности PARITY_ERROR
и чёто с данными DATA_OVERRUN

а вот с операциями логическими непонял ну  короче если в итоге  условия не равны нулю то прога работает

сначала делаем побитовую операцию "или" между FRAMING_ERROR  PARITY_ERROR и DATA_OVERRUN
потом делаем побитовую операцию сложения UCSRA и результатом"или"

блиин нифига не понимаю в этих операциях
единственно что понятно это то что результат этих операций у меня ноль и прога стопаеться
Последний раз редактировалось Myp 16 фев 2007, 22:32, всего редактировалось 1 раз.
Аватара пользователя
Myp
скрытый хозяин вселенной :)
 
Сообщения: 18018
Зарегистрирован: 18 сен 2006, 12:26
Откуда: Тверь по прозвищу Дверь
прог. языки: псевдокод =) сила в алгоритме!
ФИО: глубокоуважаемый Фёдор Анатольевич

След.

Вернуться в Новичкам или основы основ роботостроения.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 28