Форум

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

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

В сети

Пользователей: 147
Из них просматривают:
Аналоги: 39. Даташиты: 34. Инструкции: 1. Новости: 10. Остальное: 5. Программы: 1. Производители: 1. Профиль пользователя: 13. Советы: 1. Форум: 42.
Участников: 2
Гостей: 145

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 Мгц, думаю, это оптимально как по быстродействию, так и по потреблению.



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


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

Разное

Интересно

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