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

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
Ga_ry
сообщение Jan 6 2016, 14:31
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 494
Регистрация: 23-06-09
Из: Полтава, UA
Пользователь №: 50 579



Цитата(adnega @ Jan 6 2016, 09:37) *
Дык, достаточно сбросить CKDIV8 перед установкой RC 128 kHz?

Достаточно, конечно же, так и надо делать!
Но ведь человек то считает раз по умолчанию - значит все должно быть хорошо, правильно и без подвоха.
Эту мелочь насчет CKDIV8 с первого раза можно и не разглядеть, понадеявшись на благоразумие авторитетного производителя и т.д. и т.п. а тут оно боком выходит.
Думаю хотя бы один раз каждый наступил на эти грабли с фьюзами для тини от Атмела и частотой 128к.

Правда на каком-то форуме один механизатор штуки 3-4 тини13 "задвинул" таким образом и только потом пришел на форум сказать, что ему какие-то ТИНИ бракованные попались и где купить нормальные небракованные. biggrin.gif
Go to the top of the page
 
+Quote Post
adnega
сообщение Jan 6 2016, 15:44
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(Ga_ry @ Jan 6 2016, 17:31) *
Думаю хотя бы один раз каждый наступил на эти грабли с фьюзами для тини от Атмела и частотой 128к.

Фьюзы - это вообще отдельный разговор. Без HW-программатора легко понаделать "кирпичиков".
Благо, я еще со времен ATtiny11 сделал себе HW-программатор и очень дотошно ставил и снимал галочки в PonyProg,
т.к. была возможна путаница с точностью до наоборот.
Go to the top of the page
 
+Quote Post
asc2000
сообщение Jan 6 2016, 23:56
Сообщение #18


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

Группа: Участник
Сообщений: 95
Регистрация: 5-08-10
Пользователь №: 58 763



Цитата(adnega @ Jan 4 2016, 20:03) *
Depending on CKSEL fuses, a valid clock must be present. The minimum low and high periods
for the serial clock (SCK) input are defined as follows:
Low: > 2 CPU clock cycles for fck < 12 MHz, 3 CPU clock cycles for fck >= 12 MHz
High: > 2 CPU clock cycles for fck < 12 MHz, 3 CPU clock cycles for fck >= 12 MHz

Цитата(adnega @ Jan 5 2016, 19:57) *
Мне кажется, что Fck == Fcpu.
Fcpu получается путем деления выбранного источника тактового сигнала на соответствующий предделитель, который меняется в зависимости от CKDIV8.

Но ведь для fck >= 12 MHz единственный возможный коэффициент деления предделителя - это 1 (т.е. без деления частоты), т.к. даже для коэф-та 2 получается, что частота источника тактового сигнала >= 24 MHz, а это недопустимо для ATtiny13. Следовательно, fck - это частота непосредственно самого источника тактового сигнала, а не после предделителя.

Цитата(Александр1 @ Jan 6 2016, 13:01) *
В процессе программирования и в рабочем режиме МК тактируется от выбранного источника (структурная схема в разделе System Clock and Clock Options) и CKDIV8 влияет на коэффициент деления частоты (в соответствии с установкой).


Но, во-первых, из структурной схемы в разделе System Clock and Clock Options непосредственно не видно, что CKDIV8 влияет именно в режиме программирования.
Во-вторых, в разделе Serial Programming сказано, что на процесс SPI-программирования влияют установки фьюзов CKSEL1 и CKSEL2, но ничего не сказано о влиянии фьюза CKDIV8.

Go to the top of the page
 
+Quote Post
adnega
сообщение Jan 7 2016, 06:22
Сообщение #19


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(asc2000 @ Jan 7 2016, 02:56) *
Но ведь для fck >= 12 MHz единственный возможный коэффициент деления предделителя - это 1 (т.е. без деления частоты), т.к. даже для коэф-та 2 получается, что частота источника тактового сигнала >= 24 MHz, а это недопустимо для ATtiny13. Следовательно, fck - это частота непосредственно самого источника тактового сигнала, а не после предделителя.

Ничего не понял, что вы пытаетесь сказать.
Подаем с генератора 20 МГц с предделителем /1, получаем необходимость минимум 3 тактов CPU в SCK для каждого уровня при программировании (т.е. 20/(3+3) => не более 3.333 МГц).
Устанавливаем предделитель /2, получаем необходимость минимум 2 тактов CPU в SCK для каждого уровня при программировании (т.е. (20/2)/(2+2) => не более 2.5 МГц).

Цитата(asc2000 @ Jan 7 2016, 02:56) *
Но, во-первых, из структурной схемы в разделе System Clock and Clock Options непосредственно не видно, что CKDIV8 влияет именно в режиме программирования.
Во-вторых, в разделе Serial Programming сказано, что на процесс SPI-программирования влияют установки фьюзов CKSEL1 и CKSEL2, но ничего не сказано о влиянии фьюза CKDIV8.

Вот если бы было сказано, что CKDIV8 не влияет в режиме программирования, и устанавливается принудительно предделитель /1, то это был бы факт.
Сейчас же все логично: CKDIV8 и предделитель ведут себя документировано и одинаково в штатном режиме и режиме программирования.
Go to the top of the page
 
+Quote Post
asc2000
сообщение Jan 7 2016, 12:56
Сообщение #20


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

Группа: Участник
Сообщений: 95
Регистрация: 5-08-10
Пользователь №: 58 763



Цитата(adnega @ Jan 7 2016, 10:22) *
Вот если бы было сказано, что CKDIV8 не влияет в режиме программирования, и устанавливается принудительно предделитель /1, то это был бы факт.
Сейчас же все логично: CKDIV8 и предделитель ведут себя документировано и одинаково в штатном режиме и режиме программирования.

Может быть и так.

Но напомню, что данная ветка форума начиналась с другого вопроса: почему программатором перестали читаться фьюзы и записанная программа?
Ведь я не менял CKDIV8, а только применил в своей программе коэффициент деления 256 установкой регистра CLKPR. Неужели эти установки сохраняются и в режиме программирования? В даташите я не нашел никакого объяснения по этому поводу.

Go to the top of the page
 
+Quote Post
adnega
сообщение Jan 7 2016, 17:01
Сообщение #21


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(asc2000 @ Jan 7 2016, 15:56) *
Ведь я не менял CKDIV8, а только применил в своей программе коэффициент деления 256 установкой регистра CLKPR. Неужели эти установки сохраняются и в режиме программирования?

Если программа успеет записать CLKPR, то частота понизится и программировать на высокой частоте SCK не получится.
Если успеть подключиться программатором (а программа при этом останавливается?) до записи делителя /256, то программировать можно на высокой частоте SCK.
Go to the top of the page
 
+Quote Post
asc2000
сообщение Jan 7 2016, 20:52
Сообщение #22


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

Группа: Участник
Сообщений: 95
Регистрация: 5-08-10
Пользователь №: 58 763



Цитата(adnega @ Jan 7 2016, 21:01) *
Если программа успеет записать CLKPR, то частота понизится и программировать на высокой частоте SCK не получится.

Кажется, начинает проясняться. Как известно, SPI-программирование происходит при низком уровне на входе RESET. А в даташите сказано: "During reset, all I/O Registers are set to their initial values...". Т.к. CLKPR является одним из I/O Registers, то он также должен установиться в начальное значение. Я почему-то считал, что начальное значение - это 0, но получается, что это не всегда так. И вот тут опять непонятно: ведь CLKPR относится к энергозависимой памяти (SRAM), и при отключении питания его содержимое должно сбрасываться, и этот регистр должен устанавливаться в 0 ? Каким же образом в нем все же сохраняются его установки?

Сообщение отредактировал asc2000 - Jan 7 2016, 21:25
Go to the top of the page
 
+Quote Post
rx3apf
сообщение Jan 8 2016, 18:25
Сообщение #23


Гуру
******

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



В имеющемся под рукой экземпляре даташита на tiny13 начальное состояние битов прескалера не указано, вместо этого идет ссылка на таблицу значений прескалера. На эту же таблицу ссылается и упоминание CKDIV8. Сложив 2 и 2, можно предположить, что при CKDIV8=0 прескалер будет делить на 8 сразу же после сброса и его действие может распространяться и на программирование тоже. Да, в даташитах от Atmel регулярно приходится "догадываться"...
Go to the top of the page
 
+Quote Post
nagisa
сообщение Apr 11 2016, 08:39
Сообщение #24


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 25-02-13
Пользователь №: 75 777



Цитата(asc2000 @ Jan 4 2016, 17:41) *
Я записал новую программу, в которой применил коэф-т деления генератора на 256. Программа записалась и правильно работает, но контроллер перестал читаться и я больше не могу его перепрограммировать. Подскажите, что могло произойти и как избежать этого в дальнейшем?

из опыта, следует уделять особое внимание наличию блокировочной емкости по питанию МК
сам сталкивался со случайной прошивкой лишних фьюзов из-за помех.
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 3rd July 2025 - 15:27
Рейтинг@Mail.ru


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