Форум

Радиолюбительский форум.

Если у Вас возникли вопросы, задавайте их на форуме.

В сети

Пользователей: 120
Из них просматривают:
Аналоги: 25. Даташиты: 75. Новости: 2. Остальное: 2. Профиль пользователя: 8. Форум: 8.
Участников: 2
Гостей: 118

Google , Яндекс , далее...
Рекорд 2375 человек онлайн установлен 26.12.2015.

Партнёры


Партнёры

Новые объявления

В настоящее время нет объявлений.

Просмотр этой темы: 

 1 анонимных пользователей
проблема с регистром PRR в atmega48
Главный Технолог
Зарегистрирован:
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)
{
}
Подскажите, пожалуйста, правильно ли я его инициализирую?



Re: проблема с регистром PRR в atmega48
Модератор
Зарегистрирован:
26.01.2010 23:26
Из: Тирасполь
Сообщений: 3926
Не в сети
ты хочешь использовать режим пониженнного энергопотребления? Если нет- не трогай его. Если да- то по-хорошему сделать задержку в несколько тактов до и после работы с регистром.



Re: проблема с регистром PRR в atmega48
Главный Технолог
Зарегистрирован:
01.07.2011 19:44
Из: Тольятти
Сообщений: 305
Не в сети
А почему его нельзя исп. не в режиме пониженного энергопотребления? А так можно было бы его в idle режиме запустить. Да и еще вопрос. Помните Вы мне помогли с декодированием сигнала. Единственное только что там добавилось это проверка на приход данных(addr&data) и по совпадению событие. Могу ли я запустить это все в idle режиме, если перемещу всю проверку событий в прерывание int1, где у нас как раз обрабатывался сигнал?



Re: проблема с регистром PRR в atmega48
Модератор
Зарегистрирован:
26.01.2010 23:26
Из: Тирасполь
Сообщений: 3926
Не в сети
Можешь попробовать, если других событий проц не обрабатывает. Но при высокой тактовой частоте из-за потребления смысла не вижу. Просыпание займет все равно пару микросекунд, так что должен успеть.



Re: проблема с регистром PRR в atmega48
Главный Технолог
Зарегистрирован:
01.07.2011 19:44
Из: Тольятти
Сообщений: 305
Не в сети
событие представляет собой: издание звука 3 раза зуммером и низк уровень на вых(~50мкс). Будит работать?
Да кстати в idle режиме если изначально выдаю высокий уровень на ножку МК на выход и потом при событии на нем короткий низкий, он будит возвращать 1? И вообще будит ли она постоянно сохраняться?
Частота 8 МГц, но по крайней мере это должно снизить потребление тока примерно в 2 раза.



Re: проблема с регистром PRR в atmega48
Главный Технолог
Зарегистрирован:
01.07.2011 19:44
Из: Тольятти
Сообщений: 305
Не в сети
И еще момент там прерывание int1 настроено по любому лог изм. Как он отправится в 1 надолго. Он заснет? Если да, то можно и power-down. Но еще вопрос как это будит работать, ели прерывание по любому изм. Сначала пост 1. Как приходят данные идут два 0 по 1мс, а далее в завис. от 1 или 0 2мс и 3мс., а потом снова уст 1?
В даташите написано, что если прерывание настроено по изменению уровня,то изм. уровень должен удерживаться некоторое время, чтобы разбудить проц. Но ведь он у нас изм. 18 раз с выше описанным интервалом времени.
И вот хотелось еще бы знать что они имели ввиду, т.е. как это работает?



Re: проблема с регистром PRR в atmega48
Модератор
Зарегистрирован:
26.01.2010 23:26
Из: Тирасполь
Сообщений: 3926
Не в сети
засыпай по окончании пиканья и манипуляций выходом. В Idle режиме порты ввода-вывода работают, и тот уровень, что на них был до сна- он остается. Для таких задач может снизить до 4 Мгц или даже до 1? У тебя прерывание настроено не по уровню, а по любому фронту.



Re: проблема с регистром PRR в atmega48
Модератор
Зарегистрирован:
26.01.2010 23:26
Из: Тирасполь
Сообщений: 3926
Не в сети
Выход из режима выключения Power Down сопровождается задержкой с момента выполнения условия прерывания до эффективного пробуждения. Данная задержка позволяет перезапустить синхронизацию и дождаться стабильности ее работы. Период пробуждения определяется некоторыми конфигурационными битами CKSEL, которые определяют период задержки при сбросе. Тут ты не успеешь проснуться- у тебя нужно быстро отреагировать на фронт. А для кварца нужна задержка очень большая для стабилизации частоты- надеюсь, ты во фьюзах это учел.



Re: проблема с регистром PRR в atmega48
Главный Технолог
Зарегистрирован:
01.07.2011 19:44
Из: Тольятти
Сообщений: 305
Не в сети
bod enable на 2.7 В включал. Это норм?
В vmlabe запускал idle режим вроде бы он не снижал частоту до 4 и 1 МГц ?! Стабильно 8 показывал.
А если я его сразу в осн. цикле усыплю?



Re: проблема с регистром PRR в atmega48
Модератор
Зарегистрирован:
26.01.2010 23:26
Из: Тирасполь
Сообщений: 3926
Не в сети
Standby бы тебе в этом случае больше подошел бы, так как в этом случае тактовый генератор не отключается- но тут необходимо уменьшать его частоту. Поставь 4 Мгц, думаю, это оптимально как по быстродействию, так и по потреблению.



Поиск по форуму


Расширенный поиск

Разное

Интересно

При замене электролитических конденсаторов, кроме соблюдения полярности, не следует значительно превышать допустимое рабочее напряжение.
Например, если конденсатор рассчитан на рабочее напряжение 16 В, то при установке нового той же емкости, но рассчитанного на напряжение 300 В после непродолжительной эксплуатации произойдет его расформовка, и емкость его значительно уменьшится.