написал программу на си, в программе есть место, где на порт подается напряжение и он проводом соединён c reset, получается, что когда программа доходит до этого места она должна как бы самоперезагружаться. так вот вопрос: устройство я пока что не собрал, но мне нужно знать, не приведет ли частое использование сбрасывание через reset к каким-нибудь необратимым последствиям для микроконтроллера.
Заранее спасибо
(Добавление)
Попробовал на давно сделаной макетной плате с мк, ничего не работает, почему-то программа не перезагружается, не знаю в чём дело
Но возник другой вопрос. Для начала предыстория: Необходимо сделать прерывание по переполнению таймера. Например, основная программа просто включает порт и держит на нём высокий уровень(светодиод горит) затем, после переполнения таймера, в обработчике прерываний программа выключает светодиод и ждёт некоторое время затем поновой.
Но проблема вот в чём: в основной программе всё хорошо, но когда мы переходим в обработчик светодиод гаснет и всё... больше не включается. Я не знаю в чём дело
Вот код, если нужно. Написан на си в Win AVR:
# define F_CPU 1000000UL // указываем частоту микроконтроллера в герцах
#include <avr/io.h> // подключаем библиотеку авр
#include <util/delay.h> // подключаем библиотеку прерываний, её мы используем для формирования задержки
#include <avr/interrupt.h> // подключаем библиотеку прерываний
ISR (TIMER1_COMPA_vect)
{
PORTD = 0x00;
_delay_ms(1000);
}
int main(void)
{
DDRD = 0xFF;
TCCR1A = 0x00;
TCCR1B = (1 << CS12)|(0 << CS11)|(1 << CS10)|(1 << WGM12); //предделитель clk/1024, режим таймера СТС
TCNT1 = 0x00;
OCR1A = 10000;
TIMSK |= (1 << OCIE1A); // разрешение прерывания по совпадению
sei(); // Разрешение прерываний
PORTD |=_BV(PD0);
while (1) {}; // Бесконечный цикл
}
1. Artem - 01 Января, 2013 - 18:08:06 - перейти к сообщению
2. Роботов - 01 Января, 2013 - 18:54:10 - перейти к сообщению
Artem пишет:
Нет, ничего страшного не произойдет.не приведет ли частое использование сбрасывание через reset к каким-нибудь необратимым последствиям для микроконтроллера
А зачем такие сложности? Есть же сторожевой таймер для этих целей...
3. Predator - 02 Января, 2013 - 20:09:36 - перейти к сообщению
ничего страшного от дерганья резета не будет, но по моему проще все эти операции запхать в бесконечный цикл - не будет момента, когда порты не сконфигурированы...
4. cjA - 02 Января, 2013 - 21:45:10 - перейти к сообщению
Роботов пишет:
или просто джамп на ноль. Есть же сторожевой таймер для этих целей...
Я не понимаю зачем писать на языке высокого уровня так чтоб было еще непонятнее чем на ассемблере.
Вы его выключили через секунду после старта и больше не включали. Artem, МК не делает ничего о чем Вы его не просили, он же логическая машина, камень, булыжник тупой.
5. Artem - 03 Января, 2013 - 12:56:23 - перейти к сообщению
cjA пишет:
Я не понимаю зачем писать на языке высокого уровня так чтоб было еще непонятнее чем на ассемблере.
ассемблер я не знаю
cjA пишет:
МК не делает ничего о чем Вы его не просили, он же логическая машина, камень, булыжник тупой.
Да, вы правы, я нашёл ошибку, сделал по-другому, всё работает