роботы робототехника микроконтроллеры


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

> Без описания
Artem Post Id


Главнокомандующий


Сообщений всего: 347
Дата рег-ции: Май 2012  



написал программу на си, в программе есть место, где на порт подается напряжение и он проводом соединён 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) {}; // Бесконечный цикл

}
 
 Top
Роботов Post Id



Гуру


Сообщений всего: 1350
Дата рег-ции: Июнь 2011  



Artem пишет:
не приведет ли частое использование сбрасывание через reset к каким-нибудь необратимым последствиям для микроконтроллера
Нет, ничего страшного не произойдет.
А зачем такие сложности? Есть же сторожевой таймер для этих целей...
 
 Top
Predator Супермодератор Post Id


Супермодератор


Сообщений всего: 1249
Дата рег-ции: Июль 2012  



ничего страшного от дерганья резета не будет, но по моему проще все эти операции запхать в бесконечный цикл - не будет момента, когда порты не сконфигурированы...
 
 Top
cjA Post Id



Генерал


Сообщений всего: 3291
Дата рег-ции: Янв. 2010  



Роботов пишет:
Есть же сторожевой таймер для этих целей...
или просто джамп на ноль.
Я не понимаю зачем писать на языке высокого уровня так чтоб было еще непонятнее чем на ассемблере.

Вы его выключили через секунду после старта и больше не включали. Artem, МК не делает ничего о чем Вы его не просили, он же логическая машина, камень, булыжник тупой.
 
 Top
Artem Post Id


Главнокомандующий


Сообщений всего: 347
Дата рег-ции: Май 2012  



cjA пишет:
Я не понимаю зачем писать на языке высокого уровня так чтоб было еще непонятнее чем на ассемблере.


ассемблер я не знаю Грустный

cjA пишет:
МК не делает ничего о чем Вы его не просили, он же логическая машина, камень, булыжник тупой.


Да, вы правы, я нашёл ошибку, сделал по-другому, всё работает
 
 Top
Страниц (1): [1]
« Обо всем »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 





Powered by Exclusive Bulletin Board
ExBB FM 1.0 RC1 Smiles by Fool from Foolstown
  Яндекс.Метрика   Рейтинг@Mail.ru