Перейти к содержанию
    

Какие действия обязательны после сброса ATmega8? например, для всех обязательным является устанавление адреса стека.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Какие действия обязательны после сброса ATmega8? например, для всех обязательным является устанавление адреса стека.

Вот и не правда! Стек может не использоваться! Если не разрешать прерывания и не пользоваться подпрограммами. У меня есть такой хитрый проект где авр используется просто как автомат по генерации определенного сигнала.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Гость =VRA=

Обязательно инициализировать (=настроить) ВСЮ периферию (порты, таймеры, АЦП, УАРТ и т.п.), которую будешь использовать, и отключить ту, которую не будешь (например, WDT). Обязательно правильно выставить фузы (настроить тактирование, BOD, совместимость и т.д.). А указатель стека нужно инициализировать хотя бы для того, чтобы потом не рвать на лысине волосы в поисках загадочных глюков

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

и отключить ту, которую не будешь (например, WDT).

Если у вас после reset включен watchdog, отключить его все равно не удастся.

 

Обязательно правильно выставить фузы (настроить тактирование, BOD, совместимость и т.д.).

А это делается при прожигании, а не после reset

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Иногда бывает полезно неиспользуемые ноги портов привести в строго определенное сосотояние. Например сконфигурировав их на выход и записать туда нули.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Иногда бывает полезно неиспользуемые ноги портов привести в строго определенное сосотояние. Например сконфигурировав их на выход и записать туда нули.

Это точно! Особенно на испытаниях при понижении температуры при -10 черте что начинается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если у вас после reset включен watchdog, отключить его все равно не удастся.

А это делается при прожигании, а не после reset

 

с чего это не получиться. процедура отключения написана в доке

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

с чего это не получиться. процедура отключения написана в доке

Ссылочку не дадите где описывается процедура изменения состояния fuse битов программно? :biggrin:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ссылочку не дадите где описывается процедура изменения состояния fuse битов программно?

в разделе самомрограммирование указано какие биты и как менять.

У Вас вопрос был по watchdog. вот пример из доки:

void WDT_off(void)

{

/* reset WDT */

_WDR();

/* Write logical one to WDCE and WDE */

WDTCR |= (1<<WDCE) | (1<<WDE);

/* Turn off WDT */

WDTCR = 0x00;

}

раздел называется Timed Sequences for

Changing the

Configuration of the

Watchdog Timer.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в разделе самомрограммирование указано какие биты и как менять.

У Вас вопрос был по watchdog. вот пример из доки:

void WDT_off(void)

{

/* reset WDT */

_WDR();

/* Write logical one to WDCE and WDE */

WDTCR |= (1<<WDCE) | (1<<WDE);

/* Turn off WDT */

WDTCR = 0x00;

}

раздел называется Timed Sequences for

Changing the

Configuration of the

Watchdog Timer.

Это обычная процедура отключение вачдок таймера не изменяющая fuse бит wdton!

Почитайте апнот:avr109

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в разделе самомрограммирование указано какие биты и как менять.

У Вас вопрос был по watchdog. вот пример из доки:

void WDT_off(void)

{

/* reset WDT */

_WDR();

/* Write logical one to WDCE and WDE */

WDTCR |= (1<<WDCE) | (1<<WDE);

/* Turn off WDT */

WDTCR = 0x00;

}

раздел называется Timed Sequences for

Changing the

Configuration of the

Watchdog Timer.

Только эта последовательнсть не работает если установлен fuse бит wdton

всегда включен - значит всегда включен!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а мне кто нибудь подскажет где почитать про fuse,lock биты и как с ними работать через avreal32?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а мне кто нибудь подскажет где почитать про fuse,lock биты

Лучше всего в даташите на конкретную модель.

Раздел Memory Programming как раз и начинается с LOCK и FUSE битов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

а мне кто нибудь подскажет где почитать про fuse,lock биты и как с ними работать через avreal32?

 

Про биты в даташитс на соответствующий контроллер, про avreal32 на сайте автора.

http://www.ln.ua/~real/avreal/index.html

 

А ещё вопрос можно? а зачем нужен watchdog таймер? а то как то размыто пишут

Для реализации сброса контроллера в случае его зависания по какой-либо причине, например, бесконечный цикл. Это один из механизмов самовостановления работоспособности устройства, и поиска фатальных программных ошибок. Если кратко.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...