Прерывание по изменению уровня на INT0
Всё же стоит испытать работает any change или нет.
Я не Сашок!!!
- Реклама
Я веточку одним глазом пробежал... о каком МК идёт речь?
There is only 10 kind of people: those who understands binary code and those who dont!!!
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
А какая длительность входного импульса? Она должна быть заведомо больше чем время срабатывания+время обработки+ время выхода из прерывания. Тем более Вы на С пишете, там при заходе куча времени теряется на загрузку стека.-==MAXCELERON==- писал(а):Пробовал - не работает !
PS. Из личного опыта "борьбы" с высокоумными оболочками типа CVAVR AVR Builder, гдето на ранней стадии напоролся на такую фишку: при пользовании авторедактором установка битов в управляющих регистрах производилась некорректно. Д.б. например 0х25, а он писал 0х35. Намаявшись с ентим делом и некоторыми другими, перешел на ассемблер. Там уж точно что ставлю то и стоит.
(Ни в коем случае не агитирую за мой путь. А то тут еще в разжигании распри обвинят
- Реклама
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
В традиционном протеусе симулируете? А пишете в чем? Схемку приведите.Кнопка как прикошачена? И, на всякий, проверьте установку битов в тексте программы.
Да, в протеусе. Програмлю на winavrMeteor писал(а):В традиционном протеусе симулируете? А пишете в чем? Схемку приведите.Кнопка как прикошачена? И, на всякий, проверьте установку битов в тексте программы.
- Вложения
-
- WinRAR.rar
- (12.11 КБ) 154 скачивания
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
Для начала попробуйте вывод МК с кнопкой подцепить внешним резистором к питанию. И вопрос на засыпку, внутреннюю подтяжку вывода порта включаете у МК?
Последний раз редактировалось Meteor Сб авг 29, 2009 17:41:18, всего редактировалось 1 раз.
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
Я в своих системах НИКОГДА не полагаюсь на подттяжку (хоть и включаю) и ставлю резисторы, не мешает. В протеусе честно говоря не симулирую. Достаточно ресурсов аврстудии, железо как работает за МК в голове кручу (по схеме). Но Вам, рекомендую пробежаться по веткам связанным с протеусом может что нароете.
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
И еще, если не жалко выложите свой код. Те кто "орудует" в винавре наверняка смогут прогнать у себя и может что найдут
Да пожалуйстаMeteor писал(а):И еще, если не жалко выложите свой код. Те кто "орудует" в винавре наверняка смогут прогнать у себя и может что найдут
- Вложения
-
- WinRAR.rar
- (11.74 КБ) 173 скачивания
Последний раз редактировалось -==MAXCELERON==- Сб авг 29, 2009 18:09:52, всего редактировалось 2 раза.
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
Хоть и не любитель С, но любопытство взяло верх. Короче проет сваливается на начало, не задерживаясь в вечном цикле.
Последний раз редактировалось Meteor Сб авг 29, 2009 18:14:34, всего редактировалось 1 раз.
Да нет, все правильно. Просто если нужно прерывание по изменению делаем так:Meteor писал(а):Хоть и не любитель С, но любопытство взяло верх. Короче проет сваливается на начало, не задерживаясь в вечном цикле. Так не делают. Программа на С должна содержать главную функцию(чаще main). Внутри нее настройки старта (насколько помню), затем в ней же вечный цикл. Обработка прерываний вне майна. Поройся на ветках посмотри как пишут правильно
char y = 1;
ISR(INT0_vect){ //Обработчик прерывания
if (y == 1){
y = 0;
MCUCR = 0x02; // Следующее прерывание по спаду
PORTC = 0xff;
}
else {
y = 1;
PORTC = 0x00;
MCUCR = 0x03; // Опять по повышению
}
} // Конец прерывания
Проблема решена.
- Сообщения: 3961
- Зарегистрирован: Пн июл 13, 2009 14:37:39
- Откуда: Московская область, наукоград.....
Уверен? Тогда поздравляю-==MAXCELERON==- писал(а): Проблема решена.
Скажу вам что в протеусе у меня прерывания не работали внешние. Я помню что очень туго там мне было. Но именно на Меге8 и именно RC5 подобный протокол я делал. И он работал. И пользовался я именно anychange-вариантом прерывания
There is only 10 kind of people: those who understands binary code and those who dont!!!
протеусов развелось - как собак нерезаных... в одной версии прерывание ANY CHANGE PIN не симулируется (именно для меги8 проверял), в другой - симулируется... проверяйте в железе, не доверяйте протеусу на 100% !
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!
при взгляде на многих сверху ничего не меняется...
Мой уютный бложик... заходите!


