Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: лог. уровень ног в sleep режиме. вопрос.
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
timex
сразу оговорюсь я не схемотехник, поэтому и задаю вопрос

по требованию к программе нужно при одевании перемычки на устройство держать две ноги в состоянии "вход с pull-up". это делать неограниченно долго, до отключения питания или сброса.

это по заданию. так нужно.


как я понимаю, для внешнего устройства они (ноги на вход с pullup) будут висеть как бы в воздухе.

можно ли загнать контроллер в спящий режим для останова программы? что в таком случае будет с пинами портов и почему? даташит на стр. 53 и 35 смотрел, но понял мало ((
понял только, что режим power_down отключает в том числе и тактирование i/o, а режим idle - только тактирование cpu и flash, остальное работает.


или правильнее сделать (как сейчас) бесконечный цикл, не усыпляя мк?
zltigo
Цитата(timex @ Nov 20 2009, 21:40) *
что в таком счучае будет с пинами портов

ничего не изменится
Цитата
и почему?

потому, что не было команды чего-либо менять.
Цитата
как я понимаю, для внешнего устройства они (ноги на вход с pullup) будут висеть как бы в воздухе.

они будут с pullup резисторами, а не в "воздухе", либо мы о чем это тут?
timex
Цитата
ничего не изменится

а какова функция сигнала SLEEP в схеме управления пина порта? он же связан с командой sleep.
Нажмите для просмотра прикрепленного файла
zltigo
Цитата(timex @ Nov 21 2009, 18:11) *
а какова функция сигнала SLEEP в схеме управления пина порта?

С управлением пином он НИКАК не связан. Что, даже входы от выходов на схеме не умеете отличить sad.gif
V_G
Цитата(timex @ Nov 22 2009, 01:11) *
а какова функция сигнала SLEEP в схеме управления пина порта? он же связан с командой sleep.

Еще раз перечитайте даташит на с. 53, особенно подзаголовок "Digital Input Enable and Sleep Modes"
Вкратце - уменьшение энергопотребления при висящем в воздухе пине
timex
согласен, проглядял unsure.gif

однако кажется нашёл ошибку в avr-libc

режимы сна по даташиту:

Нажмите для просмотра прикрепленного файла


a вот из WinAvr\avr\include\avr\sleep.h

Код
#elif defined(__AVR_ATtiny2313__)

    #define SLEEP_MODE_IDLE         0
    #define SLEEP_MODE_PWR_DOWN     (_BV(SM0) | _BV(SM1))
    #define SLEEP_MODE_STANDBY      _BV(SM1)

    #define set_sleep_mode(mode) \
    do { \
        _SLEEP_CONTROL_REG = ((_SLEEP_CONTROL_REG & ~(_BV(SM0) | _BV(SM1))) | (mode)); \
    } while(0)


в строке
Код
#define SLEEP_MODE_PWR_DOWN     (_BV(SM0) | _BV(SM1))

устанавливают в "1" оба бита, но это режим Standby. стало быть, следует поменять их местами. куда рекламацию слать? )

это в версии, поставляемой с последним WinAVR (1.6.6) и в последней на офф.сайте (1.6.7).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.