|
AVRdragon против CKDIV8 & DWEN :), Кто кого? |
|
|
|
 |
Ответов
|
May 5 2008, 12:25
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(SasaVitebsk @ May 4 2008, 14:50)  Только что писал прогу. Микруха м48. В прошивке вывел частоту 10кГц на OC2 (совмещён с MOSI). После этого AVREAL и JTAG ICE MK2 в режиме ISP микруху не берут. AVREALом проблему победить не смог Мега48, внутренний RC 8MHz Код #include <avr/io.h>
#include "pin_macros.h"
#define SCK B,5,H #define MISO B,4,H #define MOSI B,3,H
void main(void) { PORTC = 0xFF; PORTB = 0xFF; DDRB = MASK(SCK) | MASK(MISO) | MASK(MOSI); PORTD = 0xFF;
TCCR2A = (1 << COM2A1) | (1 << WGM20); TCCR2B = (1 << CS20); OCR2A = 0x7F;
for(;;) { TOGGLE(SCK); TOGGLE(MISO); } } ШИМ, правда, 16кГц получается. Но и так, и без ШИМ - с внесением TOGGLE(MOSI) в цикл, и все ножки по одной, и в разных комбинациях - всё нормально перешивается на нормальной тактовой SPIЮ без занижения. "Ну не знаю я". Цитата(zhevak @ May 4 2008, 22:03)  Первый раз, когда прошивал из CodeVision. Поднял фьюзы на внутренний RC-генератор на 128 кГц и сразу "потерял" кристал. А там разве нет возможности изменить частоту SPI при программировании? Цитата(zhevak @ May 4 2008, 22:03)  Второй раз на грабли встал, когда установил предделитель частоты ядра на максимум (на 256) при частоте внутреннего RC-гернератора 4.8 МГц. При тактовой 4.8 МГц и предделителе на 8 все работало нормально. Стоило только увеличить коэфиициент предделителя, программатор потерял чип. Вылечил кристалл аналогично. Аналогично - достаточно изменить частоту SPI. 4.8MHz / 256 ~ 19kHz avreal32 с ключиком -o15khz и всё перешивается. Надо снизить нижнюю границу допустимого значения ниже 1кГц, а то 32768/256 = 128Гц :-) Гораздо интереснее - "а какого". Даже из-за "безударного" переключения частот (в документации задержка переключения T1 + (1..2)*T2, где T1 - период до переключения) должно было бы успеть, период при 19кГц немогим больше 50мкс, по документации выдержка от сброса до подачи команды входа в программирование 20мс, в avreal все 100мс. Значит сброс CLKPR производится после снятия сброса в те 14 тактов дополнительной задержки, которые есть даже при 0-вом SUT. Вероятно, так же и у всех регистров, кроме связанных с IO-портами - не зря там постоянно повторяется, что у портов асинхронный сброс непосредственно по поступлению какого-либо сигнала reset. Т.е. при подаче сброса только переводятся в hi-z все выводы, но CLKPR не сбрасывается, по снятию сброса отрабатывает SUT, потом в 14 тактов происходит сброс всех регистров, включая CLKPR. Поэтому при программировании действует оставшееся от программы состояние предделителя. Цитата(galjoen @ May 5 2008, 00:13)  Из PowerDown АВР выходит больно долго и энергию при этом потребляет. Не считая режима IDLE конечно. Если работа от кварца - то кто угодно будет выходить долго и печально, так как надо раскачаться кварцу в генераторе и дождаться стабилизации его амплитуды. А от внутреннего RC - по документации старт за 6 тактов и я не замечал отклонений. Мерять время старта я не мерял, но у меня в одном месте контроллер просыпается из POWER DOWN по WDT interrupt с интервалом 250мс приблизительно на сотню тактов - ток укладывается в оценку по скважности исходя из потребления в непрерывном режиме и в POWER DOWN.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
May 7 2008, 07:55
|

Нечётный пользователь.
     
Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417

|
Цитата(SasaVitebsk @ May 6 2008, 21:26)  Давайте может прошивку вышлю готовую? Я не вижу причин, по которым именно 10кГц должны мешать (в силу того, что avreal можно запускать с всякими разными частотами), поэтому и поленился что-то выписывать - написал OCR2A = 0x7F;, включил "точный" ШИМ и всё. У меня есть макетка с кучей панелек, где на каждую разведен только разъём программирования и возле каждой персональные гнёзда для кварца. Т.е. не важно, что прошивка может молотить ещё какими-то ногами, конфликтов не будет. Есть мега 48 и 168 (и мега8, и 90s4433  ). Давайте Ваш hex и перечень fuses, скажите, в какой кристалл шить (если скомпилируете и под 48, и под 168 - будет тольео интереснее). Впереди выходные, чай есть, осциллограф есть - попробую. Но что-то странное, не должно это влиять... Цитата(galjoen @ May 6 2008, 21:46)  Т.е. получается, что в случае использования внутреннего генератора эффективнее уходить в слип, чем использовать деление тактовой частоты. У меня, при использовании кварца, получилось наоборот. Видимо это объясняется тем, что пока кварц долго-долго раскачивается энергия-то потребляется, и, в период раскачки, потребление (генератором) даже БОЛЬШЕ, чем при нормальной работе кварца. Ну да, я же об этом сразу и сказал Цитата(ReAl @ May 5 2008, 15:25)  Если работа от кварца - то кто угодно будет выходить долго и печально, так как надо раскачаться кварцу в генераторе и дождаться стабилизации его амплитуды. А от внутреннего RC - по документации старт за 6 тактов и я не замечал отклонений. Мерять время старта я не мерял, ... Больше потребление во время раскачки или нет - это надо смотреть, но что при CLK/XXX все 100% времени работы используются, а при просыпании на полезное время, равное времени раскачки кварца - выходит что 50% времени генератор лупит зря, да и ядро при этом потребляет, хоть и на месте топчется. Ну а время я таки замерял, в предыдущем сообщении грубо указал, а точнее так: При 9,6МГц (замер дал время одного цикла около 105нс, т.е. 9,52МГц) время старта из IDLE - 1,36мкс от спада на входной ножке до перепада на выходной, т.е. 13 тактов. Из них (обратным ходом от выходной ножки к входному воздействию) а) 2 - сама команда SBI, которая состояние ножки поменяла б) 2 - rjmp из вектора на обработчик в) 4 - обычный вход в прерывание г) 4 - указанная в документации доп. задержка при просыпании. Итого 12, а ещё один где-то на подсинхронизациях набрался. А вот из POWER DOWN - 5,68мкс (54 такта). Если считать, что к 13 при IDLE должно добавиться 6 раскачки генератора, то это 19, выходит, 35 тактов генератор стартовал до того уровня, когда его сигнала стало достаточно для работы счётчика start-up? Что-то много для RC-генератора. Пары тактов достаточно, да и то - период первых может быть не тот, но амплитуда-то сразу нормальная должна быть. Ну, как сделано, так сделано. В любом случае 35 тактов не многие тысячи, как для кварца. О, интересно (продолжаю расшифровывать вчерашние заметки). При CLK/8 выход из IDLE, как положено, удлиннился в 8 раз до ~10.8мкс, а выход из POWER DOWN - до 19,8мкс, около 3,5раз. Так, если добавить к задержке IDLE "те 6 тактов", то разница между полученным и задержкой POWER DOWN в микросекундах меняется очень мало при изменении делителя от /1 до /64. А если добавить ещё такт, то она равна приблизительно 3.5мкс независимо от делителя. Т.е. при выходе из POWER DOWN сначала идёт фиксированная задержка около 3,5мкс (включение источников тока генератора?), потом отрабатывается 7 CK (с учётом CLKPR) и дальше идёт то, что идёт при просыпании из IDLE. Куда делся ещё такт - лень выяснять, вечно на какие-то подсинхронизации/конвейеризации они уходит, в уставновившемся режиме всё на месте, а при переходных режимах куда-то пропадают. Был бы это мой проект в ПЛИС - обязательно искал бы Цитата(galjoen @ May 6 2008, 21:46)  Аналоговый компаратор по умолчанию включен. М.б. вы хотели сказать, что не выключали его? Нет, именно не включал. Я его выключил на старте программы, а при просыпаниях не включал, так как всё равно не знаю, на какое время его включение нужно zhevak. На время POWER DOWN, насколько я помню, компаратор выключается автоматически, но я во всех тестовых программках (и с непрерывной работой с делителем, и с уходом в IDLE с побудкой по таймеру, ...) компаратор выключал сразу для равенства условий. Кстати, из тех 110мкА где-то 8-10 ушло на "генератор побудки". Может даже немного больше.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
May 26 2008, 08:45
|

Знающий
   
Группа: Свой
Сообщений: 723
Регистрация: 29-08-05
Из: Березовский
Пользователь №: 8 065

|
как в старом анекдоте про золотую рыбку: -- Ящик водки и всех обратно! Мне в очередной раз пришлось вернуться к теме энергетики. Слепил схему внешнего RC-хронометра, по аналогии ReAl, только без транзистора. Питание, резистор 2.7 МОм, средняя точка, конденсатор 470 пФ, земля. Средняя точка сразу на лапку тайни13, т.е. -- без транзистора. В нормальном состоянии нога повернута на ввод (без подтяжки) и отслеживает заряд конденсатора. Как только напряжение на конденсаторе станет определяться как логическая единица, возникает прерывание и тайни пробуждается, она переворачивает ногу на выход и разряжает конденсатор. Потом ногу поворачивает на вход и снова уходит в PowerDown. Объясняю почему сделал именно так. Не опасно, гореть, собственно, нечему; энергии и так не хватает. (Порты у АВРок достаточно мощные в этом плане и защищены от к.з., т.е. кратковременно держат коротыш и на землю, и на питалово.) Емкость 470 пик -- разряжается за каких-то 200-300 нс. Т.е. конденсатор успевает разрядится до нуля. Что в результате поимел с этого? 1. Для меня осталось загадкой, почему изменеие номиналов R и C практически не влияет на энергопотребление. На частоту влияет, а на потребляемый ток, практически, -- нет. Изменение емкости с 470 пф на 1000 пФ приводит к уменьшению частоты почти в два раза, а потребляемый ток уменьшается примерно на 10%. То же самое про резистор. Я его менял от 1 МОм до 2.7 МОм. 2. Упомянутый выше компаратор выключен. А более точно, принудительное выключение (поднятием бита ACD в регистре ACSR) не приводит к уменьшению потребляемого тока. 3. Снял завсимость потребляемого тока от питающего напряжения. (Зависимость похоже квадратичная.) Вот табличка: первая колонка -- напряжение питания (В), вторая -- потребляемый ток (мкА), третья -- частота (кГц) 5.0 288 1.40 4.0 168 1.39 3.3 102 1.36 3.0 78 1.335 2.7 59 1.33 2.5 49 1.26 2.0 30 1.23 4. Обследовал три штуки тайни13. Разброс следующий: Питание 5В, потребление: 287, 350 и 364 мкА Питание 3.3В, потребление: 100, 114 и 122 мкА, соответственно, у первой, второй и третьей. Видно, что несколько не "сшиваются" данные с первой табличкой. Это объясняется тем, что это были разные замеры и я не особо тщательно выствлял напряжение питания. Разброс в 2-3% меня вполне устравал. Частота была каждый раз разной, но в пределах 1.3-1.5 кГц. (Честно говоря, мне нужна частота 1 кГц, но это не принципиально.) 5. Я увидел, что частота достаточно слабо зависит от питания, и эта зависимость меня вполне устраивает. 6. Мне важно было получить потребление тока в 70-110 мкА при питании 5В. Как ни старался, мне этого добиться не удалось. Питание 3.3В меня не устраивает по одной причине -- мне нужно раскачивать ключ на полевом транзисторе (напряжение стока до 400В, ток стока до 100-150 мА). Таким транзисторам нужно в затвор запихивать как минимум вольта четыре, что бы получить сопротивление открытого канала несколько Ом. При трех (условно) вольтах (от MSP430) _ни_один_ транзистор у меня не заработал. Городить каскодную схему из пары полевиков -- можно. Собственно, у меня сейчас такая и собрана, но я как раз хотел бы уйти от нее. Не полуилось.  А теперь вопросы. 1. Как Вы, ReAl, получили значение 8-10 мкА? Вычислением тактов? Цитата(ReAl @ May 7 2008, 13:55)  Кстати, из тех 110мкА где-то 8-10 ушло на "генератор побудки". Может даже немного больше. 2. Кто-нибудь работал с AVR-ками c PicoPower? На сколько они имеют меньшее энергопотребление относительно не PiciPower АВРок? А при питании 5В? 3. Существуют-ли еще какие-нибудь способы понизить энергопотребление или я уже уперся в предел АВР-ок? Пожалуйста, укажите направление. Тропинку я и сам найду
Сообщение отредактировал zhevak - May 26 2008, 08:55
--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
|
|
|
|
Сообщений в этой теме
ReAl AVRdragon против CKDIV8 & DWEN :) May 4 2008, 10:43 ILYAUL Цитата(ReAl @ May 4 2008, 14:43) На внутр... May 4 2008, 11:22 ReAl Цитата(ILYAUL @ May 4 2008, 14:22) Не отк... May 4 2008, 17:46 defunct Цитата(SasaVitebsk @ May 4 2008, 14:50) Т... May 4 2008, 14:05  SasaVitebsk Цитата(defunct @ May 4 2008, 18:05) Стран... May 4 2008, 14:15  zhevak Цитата(ReAl @ May 5 2008, 18:25) А там ра... May 5 2008, 12:59  galjoen Цитата(ReAl @ May 5 2008, 16:25) Если раб... May 5 2008, 13:02   ReAl Цитата(zhevak @ May 5 2008, 15:59) 250 мс... May 5 2008, 13:56    galjoen Цитата(ReAl @ May 5 2008, 17:56) WDT мень... May 5 2008, 14:29     ReAl Цитата(galjoen @ May 5 2008, 17:29) Я экс... May 5 2008, 19:36      galjoen Цитата(ReAl @ May 5 2008, 23:36) А нельзя... May 5 2008, 21:14       ReAl Цитата(galjoen @ May 6 2008, 00:14) При п... May 5 2008, 21:32        galjoen Цитата(ReAl @ May 6 2008, 01:32) 1. С аси... May 5 2008, 22:07  defunct Цитата(ReAl @ May 5 2008, 15:25) Значит с... May 5 2008, 20:27   ReAl Цитата(defunct @ May 5 2008, 23:27) Дык, ... May 5 2008, 21:10    defunct Цитата(ReAl @ May 6 2008, 00:10) Если эта... May 6 2008, 00:09    SasaVitebsk Цитата(ReAl @ May 7 2008, 11:55) Я не виж... May 7 2008, 21:15 zhevak Цитата(ReAl @ May 4 2008, 16:43) На внутр... May 4 2008, 19:03 ReAl Цитата(zhevak @ May 4 2008, 22:03) Вчера ... May 4 2008, 19:26  zhevak Цитата(ReAl @ May 5 2008, 01:26) Интересн... May 4 2008, 19:46   defunct Цитата(zhevak @ May 4 2008, 22:46) (Моя ц... May 4 2008, 20:56    galjoen Цитата(defunct @ May 5 2008, 00:56) Смысл... May 4 2008, 21:13    zhevak Цитата(defunct @ May 5 2008, 02:56) Работ... May 5 2008, 05:53 ReAl Цитата(galjoen @ May 6 2008, 01:07) 3. От... May 6 2008, 17:21  galjoen Цитата(ReAl @ May 6 2008, 21:21) ...
Вышл... May 6 2008, 18:46  zhevak ЦитатаЯ сегодня погонял на 3.3В тини13...
Спасибо... May 6 2008, 18:57 zhevak хочу добавить про MSP430. Может кому будут интерес... May 26 2008, 14:27 smk ЦитатаДа, чуть не забыл! У МСП внутренний DCO-... May 28 2008, 17:47
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|