|
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 5 2008, 13:56
|

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

|
Цитата(zhevak @ May 5 2008, 15:59)  250 мс -- это очень редко. Мне нужно эдак разов в 250 чаще щелкать.  Да я видел, что нужно 1мс. WDT меньше 16мс не умеет. Это я о другом - если бы AVR просыпался из power down так, как об этом говорит galjoen, то при периоде 250мс и задержке просыпания с полноценной жрачкой 64мс потребление очень отличалось бы от того, которое выходит по рассчёту 100 циклов работа, 250мс сон. А оно не отличалось. Цитата(galjoen @ May 5 2008, 16:02)  При выходе из sleep происходит то-же, что и при запуске процессора. Т.е. если у вас SUT1..0=00, то действительно будет за 6 тактов просыпаться. А в других случаях добавляется 4 или 64 мс. Это Вы где-то в документации прочли или личный опыт? У меня стоит SUT=10, т.е. 64мс, так как BOD выключен из-за того, что жрёт, зараза, а питание нарастает не слишком быстро (по осциллографу - где-то за 30-40мс). И при этом процессор потребляет полный ток отнюдь не 64мс из 250мс. В документации (мега48-168, tiny13, mega128) написано Для RC-генератора и внешнего тактирования: Start-up Time from Powerdown and Power-save - 6CK Additional Delay from Reset (VCC = 5.0V) - 14CK / 14CK + 4.1 ms / 14CK + 65 ms в зависимости от SUT Т.е. из power down стартует за 6 циклов. После сброса - дополнительная задержка. Для кварца и кермаического резонатора там другие задержки, нужные для разгона. Дополнительная задержка по SUT та же, она не зависит от источника тактирования. Цитата(galjoen @ May 5 2008, 16:02)  Кстати 6 тактов это уже после делителя CLKPR. Если делитель = 128, то 768 тактов процессор будет просыпаться. Меня до сих пор не интересовал предделитель, но считаю, что это не страшно. Он будет просыпаться шесть тех времён, на которые мы уже согласились как на длительность одного машинного цикла, длительность выполнения простой команды. Потом ещё четыре 128-тактовых таких цикла идёт на вход в прерывание, два - на rjmp с вектора на первую команду обработчика, ... В любом случае это не те "SUT-овые" 64 мс, о которых Вы говорите. Хотя странно. У тини13 вообще на блок-схеме делитель не нарисован отдельно. У меги48 - после мультиплексора тактирования сигнал идёт отдельно на логику сброса, отдельно на предделитель, с которого на clock control unit. У тини25 - после мультиплексора сначала на предделитель, с него на логику сброса и clock control unit. Интересно, из этих шести циклов четыре - те же самые, что и при выходе из IDLE (которые тоже отдельные, ещё четыре на вход в прерывание потом само собой), или "аж ещё" дополнительные? Надо проверить.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
May 5 2008, 14:29
|
Знающий
   
Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640

|
Цитата(ReAl @ May 5 2008, 17:56)  WDT меньше 16мс не умеет. Проверял, WDT вообще вместо типовых 2.1 секунды при максимальном делителе - от 1.5 до 1.8 имел. Нельзя к нему привязываться если хоть какая-то точность нужна. Цитата(ReAl @ May 5 2008, 17:56)  Это я о другом - если бы AVR просыпался из power down так, как об этом говорит galjoen, то при периоде 250мс и задержке просыпания с полноценной жрачкой 64мс потребление очень отличалось бы от того, которое выходит по рассчёту 100 циклов работа, 250мс сон. А оно не отличалось.
Это Вы где-то в документации прочли или личный опыт? Я эксперементировал с кварцем. У меня при SUT-овых 64mc потребление повышалось, но не так сильно, как в рабочем режиме. При работе от внутреннего генератора думаю, что потребление вообще не повысится. Цитата(ReAl @ May 5 2008, 17:56)  У меня стоит SUT=10, т.е. 64мс, так как BOD выключен из-за того, что жрёт, зараза, а питание нарастает не слишком быстро (по осциллографу - где-то за 30-40мс). И при этом процессор потребляет полный ток отнюдь не 64мс из 250мс. Я об этом и не писал. Я имел ввиду, что при просыпании расходуется лишняя энергия (это уже из личного опыта). И если ЧАСТО просыпаться, то лучше вообще не засыпать, а использовать CLKPR. То, что время просыпания зависит от CLKPR это точно - проверял. И у меня получилось, что по потреблению энергии выгоднее использовать максимальный CLKPR, чем на 5 мс засыпать. Хотя это для кварца. Для внутреннего генератора времена видимо другие, но на 1 мс думаю засыпать и в этом случае не стоит.
|
|
|
|
Сообщений в этой теме
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     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 5 2008, 16:25) ШИМ, пра... May 6 2008, 18:26   ReAl Цитата(SasaVitebsk @ May 6 2008, 21:26) Д... May 7 2008, 07:55    SasaVitebsk Цитата(ReAl @ May 7 2008, 11:55) Я не виж... May 7 2008, 21:15    zhevak как в старом анекдоте про золотую рыбку:
-- Ящик в... May 26 2008, 08:45 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
|
|
|