Форум myROBOT.ru » Роботы и робототехника » Обо всем » Не вредно ли использовать reset

Страниц (1): [1]
 

1. Artem - 01 Января, 2013 - 18:08:06 - перейти к сообщению
написал программу на си, в программе есть место, где на порт подается напряжение и он проводом соединён 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) {}; // Бесконечный цикл

}
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 пишет:
МК не делает ничего о чем Вы его не просили, он же логическая машина, камень, булыжник тупой.


Да, вы правы, я нашёл ошибку, сделал по-другому, всё работает