Внешнее прерывание по INT, не получается запустить

AVR версия программы

Re: Внешнее прерывание по INT, не получается запустить

Сообщение DmitryAnarhist (DmitryAnarhist) » 03 ноя 2013, 12:20

"(1<<ICES1) выбор фронта срабатывания прерывания по захвату.
// Если установлен "1" - на растущем фронте,
// если сброшен "0"- на падающем фронте."
Оно?
Только вот у меня почему-то вообще ни одна строчка на Си не запускается.....
Аватар пользователя
Ник: DmitryAnarhist
Имя: DmitryAnarhist
(SPB)
Заинтересованный
Заинтересованный
Информация о пользователе

Re: Внешнее прерывание по INT, не получается запустить

Сообщение mim (mim) » 03 ноя 2013, 12:40

DmitryAnarhist писал(а):1. (1<<ICES1) выбор фронта срабатывания прерывания по захвату.
2. Только вот у меня почему-то вообще ни одна строчка на Си не запускается.....

1. Написано - по захвату - это совсем другое прерывание... Но, принцип тот же. Научись пользоваться ДШ и прочти названия регистров и битов.
2. Где и куда запускается - в космос?

ЗЫ придумай простой пример с ИНТ, рисуй Протеус, будем разбираться...
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе

Re: Внешнее прерывание по INT, не получается запустить

Сообщение DmitryAnarhist (DmitryAnarhist) » 03 ноя 2013, 15:04

Ну если не по захвату а по дш, то должно быть так :
MCUCR |= (0 << ISC01) | (1 << ISC00); (для прерывания по INT1 при любом изменении)
MCUCR |= (0<<ISC11) | (1<<ISC10); (для прерывания по INT0 при любом изменении)
GICR = (1<<INT1) | (1<<INT0); (включение прерываний по INT0 и INT1)

До космоса ещё далеко, не запускает в смысле игнорирует вставки на Си, хотя в Си файле они прописываются в точно таком-же виде как и сам FlowCode прописывает, т.е. если беру из Си файла строки прерывания, и вставляю их в алгоритм в виде вставки на Си вместо прерывания, то прерывание не работает, а в Си файле всё прописано так-же как если-бы в алгоритм было вставлено стандартное прерывание..... странно.
Ещё более странно, что в FlowCode нет всех четырёх возможных вариантов прерываний...
Протеус вылетает с ошибкой, поставлю заново и поэкспериментирую, но не сегодня уже...
Спасибо за помощь...
Аватар пользователя
Ник: DmitryAnarhist
Имя: DmitryAnarhist
(SPB)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: Внешнее прерывание по INT, не получается запустить

Сообщение mim (mim) » 03 ноя 2013, 15:28

Ну, тогда уж так
Код: выделить все
MCUCR |= (1<<ISC00); (для прерывания по INT0 при любом изменении)
MCUCR |= (1<<ISC10); (для прерывания по INT1 при любом изменении)

При этом нужно в прерывании читать значения портов, чтобы знать по какому фронту было прерывание.

Симуляци Си в FC не реализована.
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: Внешнее прерывание по INT, не получается запустить

Сообщение DmitryAnarhist (DmitryAnarhist) » 04 ноя 2013, 04:00

Ну как-бы да, поскольку нули установлены по умолчанию.
Значение портов читать, понятно, так и сделано.
Симуляция Си не реализована, это означает что не удастся Си файл из флоукода подправить и компилировать другим компилятором?
Собственно проблема решена средствами самого флоукода, всё заработало как надо, при частоте 10кгц не ошибается :D , ошибки вылазят на 20кгц, да и то думаю что из-за того что на проводах от генератора фронты импульсов искажаются (время выполнения прерывания 10us на тактовой 8мгц, должен по идее и большую частоту тянуть).
Однако с Си вставками так и не понятно ничего..... :(
Будем копать дальше.....
Спасибо.
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: DmitryAnarhist
Имя: DmitryAnarhist
(SPB)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: Внешнее прерывание по INT, не получается запустить

Сообщение mim (mim) » 04 ноя 2013, 07:06

DmitryAnarhist писал(а):1. Ну как-бы да, поскольку нули установлены по умолчанию.
2. не удастся Си файл из флоукода подправить и компилировать другим компилятором?
3. Собственно проблема решена средствами самого флоукода.
4. Однако с Си вставками так и не понятно ничего..... :(

1. И каналы в комментарии попутаны...
2. Ну почему же, все можно. Пиши на Си, компилируй, переноси и.т.д. Все что совместимо с AVR-GCC - все работает.
3. Отключать прерывания не нужно, только переключай, в этих же местах ставь Си.
4. Ну, я же написал - пиши пример, рисуй Протеус (но не так коряво...), моделируй сигнал, пиши в чем задача, будем разбираться....

ЗЫ в твоей программе есть вставки $PORTB = 4, покажи как они выглядят на Си (Кастом Си). Какая у тебя версия ФК? У меня не компилится из за этих вставок.
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: Внешнее прерывание по INT, не получается запустить

Сообщение DmitryAnarhist (DmitryAnarhist) » 04 ноя 2013, 07:22

Версия 5.3
Если правильно понял, то вот оно:
//??????????
//??????????:
// $PORTB = 4
FCP_SET(B, 0xff, 4);
Аватар пользователя
Ник: DmitryAnarhist
Имя: DmitryAnarhist
(SPB)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: Внешнее прерывание по INT, не получается запустить

Сообщение mim (mim) » 04 ноя 2013, 07:28

Понятно. Я так и думал... Выложи в архиве файлы - internals.c (C:\Program Files\Flowcode(AVR)\v5\FCD) и AVR_CAL_IO.c, AVR_CAL_IO.h (C:\Program Files\Flowcode(AVR)\v5\CAL\AVR). Я их поюзаю. Странно что у меня 5.5 и есть эти ошибки.
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Re: Внешнее прерывание по INT, не получается запустить

Сообщение DmitryAnarhist (DmitryAnarhist) » 04 ноя 2013, 07:38

Вот они:
У вас нет доступа для просмотра вложений в этом сообщении.
Аватар пользователя
Ник: DmitryAnarhist
Имя: DmitryAnarhist
(SPB)
Заинтересованный
Заинтересованный
Информация о пользователе
Вернуться наверх

Re: Внешнее прерывание по INT, не получается запустить

Сообщение mim (mim) » 04 ноя 2013, 07:40

ОК. Проведу сравнение...
I Am Legend
Аватар пользователя
Ник: mim
Имя: mim
(Из Лесу, вестимо...)
Легенда
Легенда
Информация о пользователе
Вернуться наверх

Пред.След.

Вернуться в Flowcode AVR

Кто сейчас на форуме

Пользователь просматривает форум: нет зарегистрированных пользователей

cron