Просмотр этой темы:
2 анонимных пользователей
1 2
Главный Технолог
Зарегистрирован:
01.07.2011 19:44 Из: Тольятти
Сообщений:
305
|
Всем привет.
Начитался на форумах о том, что этот регистр работает некорректно(глючит постоянно) и для отключения модулей исп. спец-ые макросы для отключения по блочно или все сразу. Но это в AVR studio, а я работаю в CodeVisionAVR. Прописываю это так: EICRA=0x04; EIMSK=0x02; EIFR=0x02; PCICR=0x00; // Timer/Counter 0 Interrupt(s) initialization TIMSK0=0x00; // Timer/Counter 1 Interrupt(s) initialization TIMSK1=0x00; // Timer/Counter 2 Interrupt(s) initialization TIMSK2=0b00000000; // Analog Comparator initialization // Analog Comparator: Off // Analog Comparator Input Capture by Timer/Counter 1: Off ACSR=0x80; ADCSRB=0x00; PRR = 0b10101111; // disable all except timer2 // Global enable interrupts #asm("sei") while (1) { } Подскажите, пожалуйста, правильно ли я его инициализирую?
Отправлено: 18.08.2011 21:42
|
|
Модератор
Зарегистрирован:
26.01.2010 23:26 Из: Тирасполь
Сообщений:
3926
|
ты хочешь использовать режим пониженнного энергопотребления? Если нет- не трогай его. Если да- то по-хорошему сделать задержку в несколько тактов до и после работы с регистром.
Отправлено: 18.08.2011 22:04
|
|
Главный Технолог
Зарегистрирован:
01.07.2011 19:44 Из: Тольятти
Сообщений:
305
|
А почему его нельзя исп. не в режиме пониженного энергопотребления? А так можно было бы его в idle режиме запустить. Да и еще вопрос. Помните Вы мне помогли с декодированием сигнала. Единственное только что там добавилось это проверка на приход данных(addr&data) и по совпадению событие. Могу ли я запустить это все в idle режиме, если перемещу всю проверку событий в прерывание int1, где у нас как раз обрабатывался сигнал?
Отправлено: 19.08.2011 9:48
|
|
Модератор
Зарегистрирован:
26.01.2010 23:26 Из: Тирасполь
Сообщений:
3926
|
Можешь попробовать, если других событий проц не обрабатывает. Но при высокой тактовой частоте из-за потребления смысла не вижу. Просыпание займет все равно пару микросекунд, так что должен успеть.
Отправлено: 19.08.2011 11:07
|
|
Главный Технолог
Зарегистрирован:
01.07.2011 19:44 Из: Тольятти
Сообщений:
305
|
событие представляет собой: издание звука 3 раза зуммером и низк уровень на вых(~50мкс). Будит работать?
Да кстати в idle режиме если изначально выдаю высокий уровень на ножку МК на выход и потом при событии на нем короткий низкий, он будит возвращать 1? И вообще будит ли она постоянно сохраняться? Частота 8 МГц, но по крайней мере это должно снизить потребление тока примерно в 2 раза.
Отправлено: 19.08.2011 11:51
|
|
Главный Технолог
Зарегистрирован:
01.07.2011 19:44 Из: Тольятти
Сообщений:
305
|
И еще момент там прерывание int1 настроено по любому лог изм. Как он отправится в 1 надолго. Он заснет? Если да, то можно и power-down. Но еще вопрос как это будит работать, ели прерывание по любому изм. Сначала пост 1. Как приходят данные идут два 0 по 1мс, а далее в завис. от 1 или 0 2мс и 3мс., а потом снова уст 1?
В даташите написано, что если прерывание настроено по изменению уровня,то изм. уровень должен удерживаться некоторое время, чтобы разбудить проц. Но ведь он у нас изм. 18 раз с выше описанным интервалом времени. И вот хотелось еще бы знать что они имели ввиду, т.е. как это работает?
Отправлено: 19.08.2011 12:09
|
|
Модератор
Зарегистрирован:
26.01.2010 23:26 Из: Тирасполь
Сообщений:
3926
|
засыпай по окончании пиканья и манипуляций выходом. В Idle режиме порты ввода-вывода работают, и тот уровень, что на них был до сна- он остается. Для таких задач может снизить до 4 Мгц или даже до 1? У тебя прерывание настроено не по уровню, а по любому фронту.
Отправлено: 19.08.2011 12:38
|
|
Модератор
Зарегистрирован:
26.01.2010 23:26 Из: Тирасполь
Сообщений:
3926
|
Выход из режима выключения Power Down сопровождается задержкой с момента выполнения условия прерывания до эффективного пробуждения. Данная задержка позволяет перезапустить синхронизацию и дождаться стабильности ее работы. Период пробуждения определяется некоторыми конфигурационными битами CKSEL, которые определяют период задержки при сбросе. Тут ты не успеешь проснуться- у тебя нужно быстро отреагировать на фронт. А для кварца нужна задержка очень большая для стабилизации частоты- надеюсь, ты во фьюзах это учел.
Отправлено: 19.08.2011 12:41
|
|
Главный Технолог
Зарегистрирован:
01.07.2011 19:44 Из: Тольятти
Сообщений:
305
|
bod enable на 2.7 В включал. Это норм?
В vmlabe запускал idle режим вроде бы он не снижал частоту до 4 и 1 МГц ?! Стабильно 8 показывал. А если я его сразу в осн. цикле усыплю?
Отправлено: 19.08.2011 13:01
|
|
Модератор
Зарегистрирован:
26.01.2010 23:26 Из: Тирасполь
Сообщений:
3926
|
Standby бы тебе в этом случае больше подошел бы, так как в этом случае тактовый генератор не отключается- но тут необходимо уменьшать его частоту. Поставь 4 Мгц, думаю, это оптимально как по быстродействию, так и по потреблению.
Отправлено: 19.08.2011 13:01
|
|
1 2