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

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> AVRdragon против CKDIV8 & DWEN :), Кто кого?
ReAl
сообщение May 4 2008, 10:43
Сообщение #1


Нечётный пользователь.
******

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



На внутреннем 128кГц с CKDIV8 дракон не входит в обмен и не может блокировать DW

Подробности про две новости, плохую и хорошую


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
ILYAUL
сообщение May 4 2008, 11:22
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 940
Регистрация: 16-12-07
Из: Москва
Пользователь №: 33 339



Цитата(ReAl @ May 4 2008, 14:43) *
На внутреннем 128кГц с CKDIV8 дракон не входит в обмен и не может блокировать DW

Подробности про две новости, плохую и хорошую

Не открываеется ссылка


--------------------
Закон Мерфи:

Чем тщательнее составлен проект, тем больше неразбериха, если что-то пошло не так
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение May 4 2008, 11:50
Сообщение #3


Гуру
******

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



Только что писал прогу. Микруха м48. В прошивке вывел частоту 10кГц на OC2 (совмещён с MOSI). После этого AVREAL и JTAG ICE MK2 в режиме ISP микруху не берут.
AVREALом проблему победить не смог, а вот JTAGом взял таким образом. Выставляешь частоту 100 Гц и выполняешь только операцию ERASE. После этого, естественно, всё работает.
Go to the top of the page
 
+Quote Post
defunct
сообщение May 4 2008, 14:05
Сообщение #4


кекс
******

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



Цитата(SasaVitebsk @ May 4 2008, 14:50) *
Только что писал прогу. Микруха м48. В прошивке вывел частоту 10кГц на OC2 (совмещён с MOSI). После этого AVREAL и JTAG ICE MK2 в режиме ISP микруху не берут.

Странно. А как же 20ms reset пульс?
ISP алгоритм предусматривает ввод последовательности входа в режим программирования не ранее чем через 20ms после перевода Reset в 0. Неужели таймер продолжает тикать после сброса?

ЗЫ: а если сместить инициализацию таймера подальше от начала программы?
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение May 4 2008, 14:15
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 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 вообще может привести к фатальным последствиям. Хорошо что сразу заметил. Она типа сразу фузы читает, и естественно - совершенно не верно. Поэтому появляются галочки типа "похезать ресет". Если это не исправить и при автоматическом программировании установить галочку "программить фузы", то прощай кристалл. smile.gif
Цитата
ЗЫ: а если сместить инициализацию таймера подальше от начала программы?

Наверное поможет, но мне это уже практически без разницы - прога отлажена. А при серийном программировании - значения не имеет.
Go to the top of the page
 
+Quote Post
ReAl
сообщение May 4 2008, 17:46
Сообщение #6


Нечётный пользователь.
******

Группа: Свой
Сообщений: 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 не для этого, а для супервизоров с затяжкой снятия сброса - после стирания надо сброс снять и опять подать, а некоторые супервизоры затягивают снятие на сотни милисекунд и сброс не успевает сняться, после чего не проходит вход в программирование.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
zhevak
сообщение May 4 2008, 19:03
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 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


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post
ReAl
сообщение May 4 2008, 19:26
Сообщение #8


Нечётный пользователь.
******

Группа: Свой
Сообщений: 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 ничего не должно оставаться.
Интересно... Проверю на днях и это.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
zhevak
сообщение May 4 2008, 19:46
Сообщение #9


Знающий
****

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



Цитата(ReAl @ May 5 2008, 01:26) *
Интересно... Проверю на днях и это.


Да, было бы не полохо. Добавлю, что у меня тарджет-питалово было 3.3 В.

(Моя цель -- ищу алтернативу MSP430F2xxx; пытаюсь понять, сможет-ли что-нибудь из АВР работать так же. Основные два противоположных требования -- экономия питания (макс = 50-70 мкА) и выдавать достаточно короткие импульсы (~ 1-2 мкс); ну еще плюс некоторая неспешная обработка входных/выходных сигналов. Но это к вопросу не относится.)


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post
defunct
сообщение May 4 2008, 20:56
Сообщение #10


кекс
******

Группа: Свой
Сообщений: 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 по показателю производительность/потребление.
Go to the top of the page
 
+Quote Post
galjoen
сообщение May 4 2008, 21:13
Сообщение #11


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(defunct @ May 5 2008, 00:56) *
Смысл пробудиться, быстро выполнить всю обработку, сгенерить требуемый пульс и уйти обратно в PowerDown. Запросто можно выйти на интегральное потребление 50-70мкА.

Если делить тактовую частоту, например, на 256 и поотключать всё компараторы, порты, АЦП и т.п., то даже без ухода в PowerDown АВР будет по потреблению укладываться. Из PowerDown АВР выходит больно долго и энергию при этом потребляет. Не считая режима IDLE конечно.
Go to the top of the page
 
+Quote Post
zhevak
сообщение May 5 2008, 05:53
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 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.
блин, полный офф-топ получился.


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post
ReAl
сообщение May 5 2008, 12:25
Сообщение #13


Нечётный пользователь.
******

Группа: Свой
Сообщений: 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.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
zhevak
сообщение May 5 2008, 12:59
Сообщение #14


Знающий
****

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



Цитата(ReAl @ May 5 2008, 18:25) *
А там разве нет возможности изменить частоту SPI при программировании?

"Ви будете долго смеятся" (С), но в CV действительно нет никакой возможности, что бы изменить в STK500 частоту SPI. sad.gif Хотя, если быть до конца честным, то я особо-то и не искал. Я пощел коротким путем, загрузил AVR-Studio, из-под него вызывал STK-500 и там поправил частоту. После этого фьюзы у т13 поставил обратно на 9.6 МГц.

Цитата
... у меня в одном месте контроллер просыпается из POWER DOWN по WDT interrupt с интервалом 250мс приблизительно на сотню тактов - ток укладывается в оценку по скважности исходя из потребления в непрерывном режиме и в POWER DOWN.

250 мс -- это очень редко. Мне нужно эдак разов в 250 чаще щелкать. smile.gif

Сообщение отредактировал zhevak - May 5 2008, 13:07


--------------------
Хочешь рассмешить Бога -- расскажи ему о своих планах!
Go to the top of the page
 
+Quote Post
galjoen
сообщение May 5 2008, 13:02
Сообщение #15


Знающий
****

Группа: Свой
Сообщений: 841
Регистрация: 10-05-07
Из: Чебоксары (Россия)
Пользователь №: 27 640



Цитата(ReAl @ May 5 2008, 16:25) *
Если работа от кварца - то кто угодно будет выходить долго и печально, так как надо раскачаться кварцу в генераторе и дождаться стабилизации его амплитуды. А от внутреннего RC - по документации старт за 6 тактов и я не замечал отклонений. Мерять время старта я не мерял, но у меня в одном месте контроллер просыпается из POWER DOWN по WDT interrupt с интервалом 250мс приблизительно на сотню тактов - ток укладывается в оценку по скважности исходя из потребления в непрерывном режиме и в POWER DOWN.

При выходе из sleep происходит то-же, что и при запуске процессора. Т.е. если у вас SUT1..0=00, то действительно будет за 6 тактов просыпаться. А в других случаях добавляется 4 или 64 мс. Кстати 6 тактов это уже после делителя CLKPR. Если делитель = 128, то 768 тактов процессор будет просыпаться. А лишний ток при старте конечно только при работе от кварца потребляется.
Go to the top of the page
 
+Quote Post

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

 


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


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