Вопрос по ATtiny10
Вопрос по ATtiny10
Вопрос к гуру по ATtiny10
Хочу правильно с_инициализировать STACK POINTER
Какое значение загружать в SPL? 0х005F или 0х007F?
Вопрос возник, т.к. (кажись) у ATtiny10 "Register File"
оказался вне адресации, чего не случалось у прочих
AVR-ок (например, тини13, мега8 и многие остальные)
Хочу правильно с_инициализировать STACK POINTER
Какое значение загружать в SPL? 0х005F или 0х007F?
Вопрос возник, т.к. (кажись) у ATtiny10 "Register File"
оказался вне адресации, чего не случалось у прочих
AVR-ок (например, тини13, мега8 и многие остальные)
..всего две 6Ф1П, включенные последовательно,
высушат обое ваших сапог даже в автомобиле..
высушат обое ваших сапог даже в автомобиле..
- Реклама
- oleg110592
- Друг Кота
- Сообщения: 3832
- Зарегистрирован: Сб сен 10, 2011 17:46:25
Re: Вопрос по ATtiny10
Спасибо, примерчик весьма в тему 
..всего две 6Ф1П, включенные последовательно,
высушат обое ваших сапог даже в автомобиле..
высушат обое ваших сапог даже в автомобиле..
Re: Вопрос по ATtiny10
Вообще-то
лучше по фэн-шую
ведь файлик tn10def.inc даже в студии 4.19 присутствует

Код: Выделить всё
ldi r16, 0x5F
out SPL, r16Код: Выделить всё
ldi r16,Low(RAMEND)
out SPL, r16
Последний раз редактировалось BOB51 Чт дек 10, 2020 11:50:08, всего редактировалось 1 раз.
Re: Вопрос по ATtiny10
..я такой вариант инициализации для Tiny10 делаю:
Код: Выделить всё
;***********************************************************************
;*********************** RESET *****************************************
;***********************************************************************
reset:
; Set Stack Pointer (SP)
LDI R16,Low(RAMEND) ;Инициализация стека
OUT SPL,R16 ;Обязательно!!!
LDI R16,High(RAMEND)
OUT SPH,R16
;***************** Start coreinit.inc *********************************
;Set clock to 8MHz
ldi temp,0xD8 ; Unprotect CLKPSR reg
out CCP,temp
CLR temp
out CLKPSR,temp
; Calibrate Oscillator
ldi temp,0xAD ; <- подбираю гдет 8,3 MHz
out OSCCAL,temp
LDI temp,0b00000010 ;
OUT PRR,temp ;отключаю для экономии ADC
RAM_Flush:
LDI ZL,Low(SRAM_START) ;Адрес начала ОЗУ в индекс
LDI ZH,High(SRAM_START)
CLR temp ;Очищаем R16
Flush: ST Z+,temp ;Сохраняем 0 в ячейку памяти
CPI ZH,High(RAMEND) ;Достигли конца оперативки?
BRNE Flush ;Нет? Крутимся дальше!
CPI ZL,Low(RAMEND) ;А младший байт достиг конца?
BRNE Flush ;И очищаем все индексы в цикле
- Реклама
Re: Вопрос по ATtiny10
В DS есть такая картинка. Может и не нужно стек устанавливать.
Студия тоже согласна с DS

Спойлер
- Вложения
-
- INIT_TN10.PNG
- (36.78 КБ) 426 скачиваний
Последний раз редактировалось akl Чт дек 10, 2020 15:58:20, всего редактировалось 1 раз.
Re: Вопрос по ATtiny10
То надо бы вчитаться... Да из-за отсутствия таких МК - даже в архив даташит не ложил...

Re: Вопрос по ATtiny10
Классный МК !!! Очь много где использовал. Хорошо подходит, когда над чёт подремонтировать - например сдохла у какого большого МК нога, заменить МК никак, но если знать алгоритм работы этой ноги, то можно навесить эту мелочь и сэмитировать нужный алгоритм:

...игрушки делал(игральный электронный кубик:

Также использовал как управлятель фонариком, вообщим всё от фантазии зависит

...игрушки делал(игральный электронный кубик:

Также использовал как управлятель фонариком, вообщим всё от фантазии зависит
Re: Вопрос по ATtiny10
Проц. "рисовое зёрнышко" оказалось не просто подружить с avrdude,
поэтому для желающих убить своё время дам хотя бы "лайфхак" по
изготовлению более-менее простой панельки с золотыми контактами.
Находим на помойке старую компячую материнку и выгрызаем кусок
панельки (согласно рисунку), вынимаем пружино-контакты, аккуратно
их выпрямляем и собираем нужное нам "гнездо" для чипа, контакты
имеют настолько удачный шаг, что удерживают SOT-23 оч. надёжно.
Проц. красавчик, кушает 0,2mA на такте 128kHz, удачных дерзаний!

поэтому для желающих убить своё время дам хотя бы "лайфхак" по
изготовлению более-менее простой панельки с золотыми контактами.
Спойлер

панельки (согласно рисунку), вынимаем пружино-контакты, аккуратно
их выпрямляем и собираем нужное нам "гнездо" для чипа, контакты
имеют настолько удачный шаг, что удерживают SOT-23 оч. надёжно.
Спойлер

Спойлер

..всего две 6Ф1П, включенные последовательно,
высушат обое ваших сапог даже в автомобиле..
высушат обое ваших сапог даже в автомобиле..
Re: Вопрос по ATtiny10
Эт да, программировать этот МК удовольствие ещё то
Похожим способом и я решил проблему подключения к этому МК. Правд я ставил перед собой задачу ещё чтоб можно было подключится к уже впаянному ATtiny10.
Свой вариант я выкладывал в 2015-ом на другом форуме, а сейчас просто здесь продублирую свой пост. Хочу отметить , что с тех пор мой вариант не доробатывался и вполне нормально справляется с программированием до сих пор:
Высмотрел на какой то платке разъемчик, куда втыкивался плоский шлейф - в нём подходящий шаг и довольно неплохие пружинистые контактики:

Поработав немного скальпелем, надфилем - получил вот такие загатовочки:

Добвил немного клея и эпоксидки, и получилася вполне такая прикольная "клипса"

Прямь на контактики сразу напаял резак на RESET и кондик по питанию:

Так как для программирования AVR использую оригинальный AVRISP mkII, а он не может программить эти тиньки, если был активирован фуз RSTDISBL (т.е. пин RESET используется как порт ввода\вывода общего назначения), пришлось чуток допилить и подключение программатора вот такой простенькой схемкой:

Теперь без проблем можно использовать и вывод RESET для своих нужд.
Всё в сборе получилось вполне неплохо - можно программить просто вставив МК в клипсу или же напялив клипсу на МК, который в свою очередь уже впаян в какую платку:

Похожим способом и я решил проблему подключения к этому МК. Правд я ставил перед собой задачу ещё чтоб можно было подключится к уже впаянному ATtiny10.
Свой вариант я выкладывал в 2015-ом на другом форуме, а сейчас просто здесь продублирую свой пост. Хочу отметить , что с тех пор мой вариант не доробатывался и вполне нормально справляется с программированием до сих пор:
Высмотрел на какой то платке разъемчик, куда втыкивался плоский шлейф - в нём подходящий шаг и довольно неплохие пружинистые контактики:

Поработав немного скальпелем, надфилем - получил вот такие загатовочки:

Добвил немного клея и эпоксидки, и получилася вполне такая прикольная "клипса"

Прямь на контактики сразу напаял резак на RESET и кондик по питанию:

Так как для программирования AVR использую оригинальный AVRISP mkII, а он не может программить эти тиньки, если был активирован фуз RSTDISBL (т.е. пин RESET используется как порт ввода\вывода общего назначения), пришлось чуток допилить и подключение программатора вот такой простенькой схемкой:

Теперь без проблем можно использовать и вывод RESET для своих нужд.
Всё в сборе получилось вполне неплохо - можно программить просто вставив МК в клипсу или же напялив клипсу на МК, который в свою очередь уже впаян в какую платку:

Re: Вопрос по ATtiny10
Только часто другие штуки по линиям могут мешать. Особенно по RESET, куда +12В будет подаваться.
Я себе платки делал тут: https://PCBs.io/share/40xoX
Для отладки на макетке вполне подходит.
Я себе платки делал тут: https://PCBs.io/share/40xoX
Для отладки на макетке вполне подходит.
Re: Вопрос по ATtiny10
Вопрос прямой и откровенный - прежде чем устанавливать бит PRADCJurkin писал(а):..я такой вариант инициализации для Tiny10 делаю:
регистра PRR, разработчик требует сперва "поднять" бит ACD регистра
ACSR, но Вы этого не делаете, почему?
..всего две 6Ф1П, включенные последовательно,
высушат обое ваших сапог даже в автомобиле..
высушат обое ваших сапог даже в автомобиле..
Re: Вопрос по ATtiny10
Ну фиг знает, может я и не прав. Но как по мне, ОТКЛЮЧАТЬ компаратор (ACSR.ACD=1) нужно если в режиме ожидания, при ВКЛЮЧЕННОМ ADC компаратор не используется для пробуждения МК - тогда типа, и рекомендуют отключить этот компаратор для экономия потребления.
Re: Вопрос по ATtiny10
леМурр, а где вы увидели требование поднять ACD? Не нашел такого.
Хотя просто выключить его логично, если не используется, чтобы не потреблял.
Jurkin, так вы же АЦП выключаете, а компаратор остается включенным.
Я на C инициализирую т10 так:
Думаю понятно и так всё должно быть даже тем, кто только асм знает.
Хотя просто выключить его логично, если не используется, чтобы не потреблял.
Jurkin, так вы же АЦП выключаете, а компаратор остается включенным.
Я на C инициализирую т10 так:
Код: Выделить всё
RSTFLR = 0;
wdt_disable();
CCP = CCP_MAGIC; // Magic number to enable configuration access
CLKPSR = (1 << CLKPS2) | (1 << CLKPS0); // Prescaler 1:32 = 250 kHz system clock
ACSR = (1 << ACD); // ACD (ACD: Analog Comparator Disable = 1)
PRR = (1 << PRADC) | (1 << PRTIM0); // Power Reduction Register
sei(); // Enable interrupts
Re: Вопрос по ATtiny10
Ну я к сожалению не имею чем померять скока потребляет этот МК при отключенном\включенном компараторе, потому думаю на всякий случай может и стоит отключить и компаратор.
Вот как то не обращал внимание, на других МК (Tiny, Mega) нужно ли для экономии отключать И компаратор с ADC ?
Вот как то не обращал внимание, на других МК (Tiny, Mega) нужно ли для экономии отключать И компаратор с ADC ?
Последний раз редактировалось Jurkin Ср дек 16, 2020 17:54:24, всего редактировалось 1 раз.
Re: Вопрос по ATtiny10
Короче, кто-то внёс сумятицу во всю эту предновогоднюю дискуссию и,
естественно, это был леМурр. Поэтому раскладываю всё по полочкам,
отключать для экономии питания Analog Comparator конечно же нужно,
отключать (для экономии) ADC не нужно по той причине, что он и так
дефолтно отключён. Останавливать ADC нужно только в выключенном
состоянии, а он и так у нас был выключен, ну и всякие ADC1D, ADC0D
тоже не трогаем без нужды. Единственное, что мне непонятно, так это
предложение "The analog comparator cannot use the ADC input MUX when
the ADC is shut down" в чём смысл ума не приложу, ещё раз извиняюсь
за сумятецу.
естественно, это был леМурр. Поэтому раскладываю всё по полочкам,
отключать для экономии питания Analog Comparator конечно же нужно,
отключать (для экономии) ADC не нужно по той причине, что он и так
дефолтно отключён. Останавливать ADC нужно только в выключенном
состоянии, а он и так у нас был выключен, ну и всякие ADC1D, ADC0D
тоже не трогаем без нужды. Единственное, что мне непонятно, так это
предложение "The analog comparator cannot use the ADC input MUX when
the ADC is shut down" в чём смысл ума не приложу, ещё раз извиняюсь
за сумятецу.
..всего две 6Ф1П, включенные последовательно,
высушат обое ваших сапог даже в автомобиле..
высушат обое ваших сапог даже в автомобиле..
Re: Вопрос по ATtiny10
Так. Есть включение-выключение АЦП через бит ADCSRA.ADEN. Когда тут 0 (по-умолчанию) - АЦП ничего не преобразует. А есть бит PRR.PRADC, который отключает питание от АЦП, когда он 1. А по-умолчанию он 0. Поэтому для снижения энергопотребления, если АЦП не нужен, надо сюда записать 1.
Фраза про Input MUX похоже неудачно перекочевала из ДШ к старшим МК линейки AVR, где входы компаратора можно было переключать через ADMUX. Вот как в меге48, например:

Добавлено after 1 minute 12 seconds:
[uquote="Jurkin",url="/forum/viewtopic.php?p=3942362#p3942362"]Вот как то не обращал внимание, на других МК (Tiny, Mega) нужно ли для экономии отключать И компаратор с ADC ?[/uquote]
Возможность отключать их питание полностью отдельно (регистр PRR) не так много где есть. На старых, "классических" мегах и тиньках его просто еще не было.
Фраза про Input MUX похоже неудачно перекочевала из ДШ к старшим МК линейки AVR, где входы компаратора можно было переключать через ADMUX. Вот как в меге48, например:
Добавлено after 1 minute 12 seconds:
[uquote="Jurkin",url="/forum/viewtopic.php?p=3942362#p3942362"]Вот как то не обращал внимание, на других МК (Tiny, Mega) нужно ли для экономии отключать И компаратор с ADC ?[/uquote]
Возможность отключать их питание полностью отдельно (регистр PRR) не так много где есть. На старых, "классических" мегах и тиньках его просто еще не было.
- Вложения
-
- mega48-admux-ac.png
- (31.7 КБ) 792 скачивания
Re: Вопрос по ATtiny10
[uquote="леМурр",url="/forum/viewtopic.php?p=3942413#p3942413"]Единственное, что мне непонятно, так это
предложение "The analog comparator cannot use the ADC input MUX when
the ADC is shut down" в чём смысл ума не приложу, ещё раз извиняюсь
за сумятецу.
[/uquote]
Я так думаю, что они этим хотели сказать, что аналоговый компаратор хрен будет работать пока не включите ADC.
Косвенно они это подтверждают в начале описания компаратора:"The Power Reduction ADC bit in the Power Reduction Register (PRR.PRADC) must be written to '0' in
order to be able to use the ADC input MUX."
Видать этот MUX использует не только ADC но и компаратор. Ну и как вывод - ADC без компаратора может работать, а вот компаратор без ADC нет.
Ну ADC я использовал на практике у этого МК, а вот компаратор не приходилось, потому подтвердить практикой свой вывод не могу:)
предложение "The analog comparator cannot use the ADC input MUX when
the ADC is shut down" в чём смысл ума не приложу, ещё раз извиняюсь
за сумятецу.
Я так думаю, что они этим хотели сказать, что аналоговый компаратор хрен будет работать пока не включите ADC.
Косвенно они это подтверждают в начале описания компаратора:"The Power Reduction ADC bit in the Power Reduction Register (PRR.PRADC) must be written to '0' in
order to be able to use the ADC input MUX."
Видать этот MUX использует не только ADC но и компаратор. Ну и как вывод - ADC без компаратора может работать, а вот компаратор без ADC нет.
Ну ADC я использовал на практике у этого МК, а вот компаратор не приходилось, потому подтвердить практикой свой вывод не могу:)
Re: Вопрос по ATtiny10
Стало понятно, за что их впоследствии поглотит Microchip, за то что они
в далёком 2020-м году попытаются сломать мосг леМурру своими чудо
-даташитами, ну а теперь серьёзно пару слов. PRR или Power Reduction
Register (регистр энергоэкономии) не коммутирует питание, а наоборот,
"provides a method to reduce power consumption by stopping the clock to
individual peripherals", то бишь, реализует метод снижения потребления
энергии путём прекращения тактирования конкретного периферийного
узла, ну вот и разобрались
Пойду попаяю для снятия стресса.
в далёком 2020-м году попытаются сломать мосг леМурру своими чудо
-даташитами, ну а теперь серьёзно пару слов. PRR или Power Reduction
Register (регистр энергоэкономии) не коммутирует питание, а наоборот,
"provides a method to reduce power consumption by stopping the clock to
individual peripherals", то бишь, реализует метод снижения потребления
энергии путём прекращения тактирования конкретного периферийного
узла, ну вот и разобрались
..всего две 6Ф1П, включенные последовательно,
высушат обое ваших сапог даже в автомобиле..
высушат обое ваших сапог даже в автомобиле..
Re: Вопрос по ATtiny10
На мой взгляд родные описания на МК не сахар конечно, но очень даже сносные. Возможно поэтому и распространение среди любителей AVR получили вполне достойное.


