|
AVRdragon против CKDIV8 & DWEN :), Кто кого? |
|
|
|
May 4 2008, 14:15
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Цитата(defunct @ May 4 2008, 18:05)  Странно. А как же 20ms reset пульс? ISP алгоритм предусматривает ввод последовательности входа в режим программирования не ранее чем через 20ms после перевода Reset в 0. Неужели таймер продолжает тикать после сброса? Да, действительно странно. Пробовал ключ -ai в AVREAL - не помогает. Программирование из под AVR Studio вообще может привести к фатальным последствиям. Хорошо что сразу заметил. Она типа сразу фузы читает, и естественно - совершенно не верно. Поэтому появляются галочки типа "похезать ресет". Если это не исправить и при автоматическом программировании установить галочку "программить фузы", то прощай кристалл. Цитата ЗЫ: а если сместить инициализацию таймера подальше от начала программы? Наверное поможет, но мне это уже практически без разницы - прога отлажена. А при серийном программировании - значения не имеет.
|
|
|
|
|
May 4 2008, 17:46
|

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

|
Цитата(ILYAUL @ May 4 2008, 14:22)  Не открываеется ссылка Странно... У меня и сейчас открывается. Может тогда на сахару протолкаться нельзя было? http://caxapa.ru/119698.htmlЦитата(SasaVitebsk @ May 4 2008, 14:50)  Только что писал прогу. Микруха м48. В прошивке вывел частоту 10кГц на OC2 (совмещён с MOSI). После этого AVREAL и JTAG ICE MK2 в режиме ISP микруху не берут. Есть у меня m168 в макетке, попробую на ней. Непонятно. Сброс-то подаётся, микросхема должна все выводы в Hi-Z перевести. p.s. -ai не для этого, а для супервизоров с затяжкой снятия сброса - после стирания надо сброс снять и опять подать, а некоторые супервизоры затягивают снятие на сотни милисекунд и сброс не успевает сняться, после чего не проходит вход в программирование.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
May 4 2008, 19:03
|

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

|
Цитата(ReAl @ May 4 2008, 16:43)  На внутреннем 128кГц с CKDIV8 дракон не входит в обмен и не может блокировать DW Подробности про две новости, плохую и хорошуюВчера я тоже наступил на эти же грабли, только с STK500 и Tiny13. Причем дважды. Первый раз, когда прошивал из CodeVision. Поднял фьюзы на внутренний RC-генератор на 128 кГц и сразу "потерял" кристал. STK500 (под CV) отказывался функционировать, хотя Танька13 сама по себе работала нормально. Ситуацию поправил так: загрузил AVRStudio, перевел STK500 с режима ISP в режим VHSP, поправил фьюзы, стер прошивку. Все восстановилось. Второй раз на грабли встал, когда установил предделитель частоты ядра на максимум (на 256) при частоте внутреннего RC-гернератора 4.8 МГц. При тактовой 4.8 МГц и предделителе на 8 все работало нормально. Стоило только увеличить коэфиициент предделителя, программатор потерял чип. Вылечил кристалл аналогично. Я не стал выяснять вопрос -- "а начиная с какого коэф. предделителя программатор теряет чип?" Просто для себя отметил территорию "Осторожно! Здесь грабли!"
Сообщение отредактировал zhevak - May 4 2008, 19:06
--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
|
|
|
|
|
May 4 2008, 19:26
|

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

|
Цитата(zhevak @ May 4 2008, 22:03)  Вчера я тоже наступил на эти же грабли, только с STK500 и Tiny13. Причем дважды.
Первый раз, когда прошивал из CodeVision. Поднял фьюзы на внутренний RC-генератор на 128 кГц и сразу "потерял" кристал. STK500 (под CV) отказывался функционировать, хотя Танька13 сама по себе работала нормально. Ну в режиме ISP тот же дракон, кажется, хоть 10Гц тактовой может выставить и ничего не потеряется. avreal насильно ограничен 1кГц тактирования ядра (т.е. 250Гц SPI), чтобы меньше вопросов было на тему "оно что, зависло?". А тут речь о DW, которую сам дракон поставить может при 128кГц/8, а снять - нет. Цитата(zhevak @ May 4 2008, 22:03)  Второй раз на грабли встал, когда установил предделитель частоты ядра на максимум (на 256) при частоте внутреннего RC-гернератора 4.8 МГц. При тактовой 4.8 МГц и предделителе на 8 все работало нормально. Стоило только увеличить коэфиициент предделителя, программатор потерял чип. Вылечил кристалл аналогично. "Становится всё чудесатее и чудесатее". Вроде бы ж при входе в программирование сброс должен вернуть предделитель на место (по документации CLKPS сбрасывается в 0000 или в 0011 в зависимости от фьюза CKDIV8), от тех 256 ничего не должно оставаться. Интересно... Проверю на днях и это.
--------------------
Ну, я пошёл… Если что – звоните…
|
|
|
|
|
May 4 2008, 19:46
|

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

|
Цитата(ReAl @ May 5 2008, 01:26)  Интересно... Проверю на днях и это. Да, было бы не полохо. Добавлю, что у меня тарджет-питалово было 3.3 В. (Моя цель -- ищу алтернативу MSP430F2xxx; пытаюсь понять, сможет-ли что-нибудь из АВР работать так же. Основные два противоположных требования -- экономия питания (макс = 50-70 мкА) и выдавать достаточно короткие импульсы (~ 1-2 мкс); ну еще плюс некоторая неспешная обработка входных/выходных сигналов. Но это к вопросу не относится.)
--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
|
|
|
|
|
May 4 2008, 20:56
|

кекс
     
Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326

|
Цитата(zhevak @ May 4 2008, 22:46)  (Моя цель -- ищу алтернативу MSP430F2xxx; пытаюсь понять, сможет-ли что-нибудь из АВР работать так же. Основные два противоположных требования -- экономия питания (макс = 50-70 мкА) и выдавать достаточно короткие импульсы (~ 1-2 мкс); ну еще плюс некоторая неспешная обработка входных/выходных сигналов. Но это к вопросу не относится.) Работать в пульсирующем режимы - PowerDown + WDT + Internal RC + максимально возможная частота - 9.6Mhz. t13 в PowerDown с включенным WDT потребляет <=5мкА. В активном режиме (при 3.3V питании) - <= 4 ma. Смысл пробудиться, быстро выполнить всю обработку, сгенерить требуемый пульс и уйти обратно в PowerDown. Если находиться в активном режиме 1/50 секунды - запросто можно выйти на интегральное потребление ~40мкА. 1/50 секунды на 9.6Mhz - это ~96..192 тыс. операций (в 1.5 раза больше чем если чип будет постоянно работать на 128kHz, поребление кстати при постоянной работе от 128kHz будет в ~1.5 раза выше). Где-то была статья о том, что AVR в пульсе бъет MSP по показателю производительность/потребление.
|
|
|
|
|
May 5 2008, 05:53
|

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

|
Цитата(defunct @ May 5 2008, 02:56)  Работать в пульсирующем режимы - PowerDown + WDT + Internal RC + максимально возможная частота - 9.6Mhz.
t13 в PowerDown с включенным WDT потребляет <=5мкА. В активном режиме (при 3.3V питании) - <= 4 ma. Смысл пробудиться, быстро выполнить всю обработку, сгенерить требуемый пульс и уйти обратно в PowerDown. Если находиться в активном режиме 1/50 секунды - запросто можно выйти на интегральное потребление ~40мкА. 1/50 секунды на 9.6Mhz - это ~96..192 тыс. операций (в 1.5 раза больше больше чем если чип будет постоянно работать на 128kHz, поребление кстати при постоянной работе от 128kHz будет в ~1.5 раза выше). Где-то была статья о том, что AVR в пульсе бъет MSP по показателю производительность/потребление. Да, я так и делаю. Ядро все время дрыхнет, просыпается по таймеру, делает свое дело и снова в спячку. Таймер срабатывает один раз в миллисекунду (1000 Гц). Ядро должно проснуться, включить компаратор, посмотреть результат, отключить компаратор и, в зависимости от результата, сформировать или не сформировать импульс на одной из ножек. Импульс должен быть коротким -- 1-2 мкс. Про попутную медленную обработку я ничего не говорю, т.к. там времени уходит не много. Проблема в том, что для формирования корокого импульса нужна "хорошая" тактовая частота. При такой частоте сам RC-генератор потребляет достаточно ощутимо. Поскольку используется счетчик (для отсчета времени в 1 мс), то уйти в Down или PowerSafe нельзя. Из этих режимов нельзя проснуться по таймеру. Актуальны только сброс, внешнее событие или вотч-дог. Этим объясняется большое энергопотребление. Конечно, задачу можно попытаться решить и другим способом. А именно -- увести частоту ядра куда-нибудь вниз на 128 или даже на 32 кГц, а импульс на выходе формировать такой, какой получится. Потом его пропустить через дифф. RC-цепочку, которая сформирует ему нужную ширину (1-2 мкс), а очень крутой задний фронт (это обязательно!) сделать жесткой логике. Но это уже получаются дополнительные элементы на плате, что выливается в габариты, пайку, увеличение цены изделия и т.д. Тоже плохо. Есть еще один вариант. Я его, правда, еще не пробовал. Отказаться от таймера и уходить в полный даун или пауэр-сэйф. А вместо таймера "будильником" сделать вотч-дог. Только у меня сомнения, что собака сможет гавкать 1000 раз в секунду. Цитата Где-то была статья о том, что AVR в пульсе бъет MSP по показателю производительность/потребление. да, что-то подобное читал. Давно, правда, -- год или два назад. Хорошо бы освежить. PS. блин, полный офф-топ получился.
--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
|
|
|
|
|
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, 12:59
|

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

|
Цитата(ReAl @ May 5 2008, 18:25)  А там разве нет возможности изменить частоту SPI при программировании? "Ви будете долго смеятся" (С), но в CV действительно нет никакой возможности, что бы изменить в STK500 частоту SPI.  Хотя, если быть до конца честным, то я особо-то и не искал. Я пощел коротким путем, загрузил AVR-Studio, из-под него вызывал STK-500 и там поправил частоту. После этого фьюзы у т13 поставил обратно на 9.6 МГц. Цитата ... у меня в одном месте контроллер просыпается из POWER DOWN по WDT interrupt с интервалом 250мс приблизительно на сотню тактов - ток укладывается в оценку по скважности исходя из потребления в непрерывном режиме и в POWER DOWN. 250 мс -- это очень редко. Мне нужно эдак разов в 250 чаще щелкать.
Сообщение отредактировал zhevak - May 5 2008, 13:07
--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
|
|
|
|
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0
|
|
|