реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> Вопрос по ATmega48V, потребление
prottoss
сообщение Feb 28 2007, 18:42
Сообщение #16


Гуру
******

Группа: Свой
Сообщений: 2 720
Регистрация: 24-03-05
Пользователь №: 3 659



Кстати, по поводу таймера - это ведь тоже железяка и, при переключении, потребляет относительно нехилый ток, щелкая триггерами smile.gif .

Если в проекте используется какой либо таймер МК (не watchdog)
Если МК тактируется от watchdog-a
Если есть возможность использовать прерывание по переполнению watchdog-a
Если...
Может быть возможно исключить таймер из проекта? Вот smile.gif



Упс... Пардон, пропустил, что МК от часового кварца тактируется...


--------------------
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Feb 28 2007, 18:45
Сообщение #17


Гуру
******

Группа: Участник
Сообщений: 3 834
Регистрация: 14-06-06
Из: Moscow, Russia
Пользователь №: 18 047



Цитата(H O--O K @ Feb 28 2007, 16:31) *
Порты сконфигурил как выходы, после этого потребление с 700мкА уменьшилось до 100 мкА. Отключил таймер, компаратор, контроллер ничё не делает. В этом состоянии потребление 70 мкА... Включение (отключение) DebugWIRE ничего не даёт ни в плюс ни в минус. Многовато всё же 100 мкА... sad.gif

Многовато. Я, правда, никогда не пробовал на столь низких частотах в активном режиме (помню, у 90S были проблемы - они даже в статике без тактирования в активном режиме жрали прилично), а вот в sleep при включенном осцилляторе второго таймера и питании 3.6V у меня жрало меньше 15 uA, при том, что прерывание 16 раз в секунду и опрос датчиков. Без опроса, вроде было 10-12 uA.

Загоняй в sleep, смотри потребление.
Go to the top of the page
 
+Quote Post
Dopler
сообщение Feb 28 2007, 22:07
Сообщение #18


Местный
***

Группа: Свой
Сообщений: 437
Регистрация: 23-04-05
Из: Таганрог
Пользователь №: 4 425



Цитата(smk @ Feb 28 2007, 09:22) *
Нигде не написано. Просто компилятор компилирует код программы так, что для работы с таймером требуется 16 тактов.
Например:

TCNT0 = 0xF9;
while (1)
{
if (TIFR0 & 0x02)
{

TCNT0 = 0xF9;
TIFR0 = 0x02;
PORTB.0 = !PORTB.0;

}
}

попробуйте кому интересно.


Да что тут предлагать-то.
1. У mega48 (как и у всех остальных мег) у каждого таймера есть режим CTC (Clear To Compare), при котором счетчик сам обнуляется, когда досчитает до заданного числа (строка TCNT0 = 0xF9; уходит).
2. В этом же режиме можно инвертировать определенные выходы (обычно по два на каждый таймер).

Попробуйте откомпилить приведенный вами код для таймера2, увидите 32 цикла процессора вместо ожидаемых 16 (не точно 32 но точно больше 16), угадайте почему?
Go to the top of the page
 
+Quote Post
smk
сообщение Feb 28 2007, 22:29
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Цитата
Да что тут предлагать-то.
1. У mega48 (как и у всех остальных мег) у каждого таймера есть режим CTC (Clear To Compare), при котором счетчик сам обнуляется, когда досчитает до заданного числа (строка TCNT0 = 0xF9; уходит).
2. В этом же режиме можно инвертировать определенные выходы (обычно по два на каждый таймер).

Попробуйте откомпилить приведенный вами код для таймера2, увидите 32 цикла процессора вместо ожидаемых 16 (не точно 32 но точно больше 16), угадайте почему?


Все это я знаю и понимаю, но когда нужно генерировать не просто меандр, ка скажем 5 периодов с частотй 1 кГц, а потом вывод сделать высокоимпедансным, то не вижу я иных вариантов... если есть идеи - буду рад пополнить копилку...


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
CD_Eater
сообщение Feb 28 2007, 23:05
Сообщение #20


Частый гость
**

Группа: Новичок
Сообщений: 173
Регистрация: 3-09-04
Из: Moscow
Пользователь №: 595



Цитата
нужно генерировать не просто меандр, а скажем 5 периодов с частотй 1 кГц, а потом вывод сделать высокоимпедансным
таймер генерит меандр, а CPU считает циклы и отключает выход. Если есть второй свободный таймер, то отключить выход первого таймера можно из обработчика прерывания второго (через заранее вычисленное время) - при этом CPU всё время свободен
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Feb 28 2007, 23:09
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(smk @ Feb 28 2007, 23:29) *
Все это я знаю и понимаю, но когда нужно генерировать не просто меандр, ка скажем 5 периодов с частотй 1 кГц, а потом вывод сделать высокоимпедансным, то не вижу я иных вариантов... если есть идеи - буду рад пополнить копилку...


Ну скважность 5 можно и ШИМом получить. smile.gif

Да мы не смеёмся, - мы просто улыбаемся. Беззлобно.
Дело не в том как именно ты делаешь, а дело в том, что по этому поводу сложно делать обобщения и выводы. Так как схемная реализация предполагает чёткий результат, а программная целиком зависит от мастерства автора, применённого компилятора и направления ветра. smile.gif

Мы тут такие варианты наблюдали недавно в преобразовании числа в семисегментный - закачаешься. Всё ч/з If. Более линейной программы я в жизни не видел. Да и светодиодом моргают на пол-листа ч/з раз, - но это же не значит, что я на частоте 32к не смогу им моргать с частотой 1 Гц к примеру.

Некоторые - не смогут, но это не выдержка из даташита. smile.gif
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 02:58
Рейтинг@Mail.ru


Страница сгенерированна за 0.01397 секунд с 7
ELECTRONIX ©2004-2016