Страница 3 из 3
Re: Attiny 1-й серии как работать с регистрами напрямую?
Добавлено: Пн дек 30, 2024 13:33:35
BOB51
Так и выбирайте соответственно наиболее удобный набор кристаллов.
Зачем лезть в навороченное раньше времени?
Если возможности имеющейся базы до конца не использованы?

Re: Attiny 1-й серии как работать с регистрами напрямую?
Добавлено: Пн дек 30, 2024 13:35:20
КРАМ
[uquote="dds7sdd",url="/forum/viewtopic.php?p=4665995#p4665995"]Ну значит будем посмотреть в другую сторону.[/uquote]
И ты внезапно обнаружишь, что описание регистров периферии как структур является практически тотальным. И происходит это в связи доменной архитектурой периферии в пространстве памяти. То есть все таймеры, например, отличаются только тем, что у них разные начальные адреса. А все регистры внутри домена смещены идентично. Даже если конкретного регистра у таймера нет, этот адрес остается пустым. Поэтому структура - идеальный способ описания регистров периферии.
И даташит тут вообще не причем. Тем более, что имена полей структур более-менее соответствуют названиям регистров и самой периферии в даташитах. А если что то не нравится, всегда можно поправить в хедерах.
Re: Attiny 1-й серии как работать с регистрами напрямую?
Добавлено: Пн дек 30, 2024 13:41:19
Adrift
[uquote="dds7sdd",url="/forum/viewtopic.php?p=4666015#p4666015"]Речь идет о мелкой 8 битной блохе за 1 дол., для которой нужно за час написать прошивку, залить и закинуть в какю нить железку и на МК 0-серии так и было.[/uquote]
0-серия точно такая же, те же порты, такой же двухрежимный TCA и CLKCTRL с делением на 6 по умолчанию. В 1 серию периферии добавили чуть и все.
Re: Attiny 1-й серии как работать с регистрами напрямую?
Добавлено: Пн дек 30, 2024 13:43:44
BOB51
Т. Е. В документации идёт "подгонка под СИ(ЯВУ).
Да и 1 и 0 серии это уже не атмел, а "микрочип стиль", причём с учётом всего ранее используемого.
И кой чего от ПИК24 возможно...

Насчёт своих заголовочников, файлов описания ресурсов - так их (как и макросы в ассемблере) никто не отменял.

Re: Attiny 1-й серии как работать с регистрами напрямую?
Добавлено: Пн дек 30, 2024 13:44:19
КРАМ
[uquote="dds7sdd",url="/forum/viewtopic.php?p=4666015#p4666015"]Речь идет о мелкой 8 битной блохе за 1 дол., для которой нужно за час написать прошивку, залить и закинуть в какю нить железку и на МК 0-серии так и было. Но вот в новой 1-серии нужно прочитать мануал на 500+ страниц дабы сделать тоже самое. Зачем? Производитель тот же, среда разработки та же, железо и архитектура прежние... Но нет... надо все переделать.[/uquote]
С какого перепуга? Производитель сменился. Сменилась группа технической поддержки. Это хорошо заметно по даташитам. Только старые тулчейны от Атмела никто не переделывал, но и не поддерживает.
И, что характерно, тоже самое произошло и с PIC-ами. Потому что чипмейкер решает свои проблемы с продвижением товара на рынке. Опираться на вкусовщину вменяемый бизнес не будет. Любая нишевость в тулчейнах приводит к потерям клиентов.
Re: Attiny 1-й серии как работать с регистрами напрямую?
Добавлено: Пн дек 30, 2024 13:44:39
dds7sdd
[uquote="КРАМ",url="/forum/viewtopic.php?p=4666019#p4666019"]Поэтому структура - идеальный способ описания регистров периферии.[/uquote]
Всё так, но нахиба всё это делать с 8-битным 8-ногим МК с памятью в 2кБ и ОЗУ 64б???
Re: Attiny 1-й серии как работать с регистрами напрямую?
Добавлено: Пн дек 30, 2024 13:47:34
КРАМ
[uquote="dds7sdd",url="/forum/viewtopic.php?p=4666025#p4666025"]нахиба всё это делать с 8-битным 8-ногим МК...?[/uquote]
Чтобы не вызывать баттхерта у тех, кто приходит к этим чипам со стороны.
Кстати, да, у тебя ИДЕ не выдает подсказки в виде списка полей структур?
Может все таки ты чего то делаешь не так?
Re: Attiny 1-й серии как работать с регистрами напрямую?
Добавлено: Пн дек 30, 2024 13:48:43
BOB51
Разделение весьма здравое -
Общая документация на серию и уточняющая на каждый конкретный кристалл. Плюс отдельно прошивка и обнаруженные ошибки.
Другое дело - доступность на сегодня по известным причинам мягко выражаясь........
Нецензурная...

Насчёт IDE...
Я пока ещё старыми версиями пользуюсь.
Остальное легче на адуринку свалить.

Re: Attiny 1-й серии как работать с регистрами напрямую?
Добавлено: Пн дек 30, 2024 14:17:52
dds7sdd
[uquote="КРАМ",url="/forum/viewtopic.php?p=4666027#p4666027"]Чтобы не вызывать баттхерта у тех, кто приходит к этим чипам со стороны.
Кстати, да, у тебя ИДЕ не выдает подсказки в виде списка полей структур?
Может все таки ты чего то делаешь не так?[/uquote]
Угу и вызвать "баттхерт" у тех кто не состороны)) Железная Л-огика))
IDE и всё т.п. в первом посте первого обзаца.
PlatformIO.
Подсказки то выделяет, но как мне понять что за конфигурацию 3-х битов WGMODE[0:2] отвечает групповая битовая маска TCA_SINGLE_WGMODE_NORMAL_gc;
В даташите написано что для режима "Normal" эти биты должны ровняться нулю. Маска ведь не называется CTRLB_WGMODE0_0_WGMODE1_0_WGMODE2_0
Тоесть я по подсказке и встречающемуся WGMODE_NORMAL в названии маски должем сам догадаться??
Но не это главное, можно почитать, попробовать и подстроится, но весь вопрос поста в том что нахрена так было делать и можно ли по прежнему.
Из всей писанины тут суть стала понятна: нахрена? - а ШО б было соувремённо; можно ли прежнему - можно, написав свой макрос, тулчайн, IDE и микросхему самому спаять... И вообще лучше пойти нахрен старому пердуну и не мешать соувремённым технологиям.
Всё понятно, всем спасибо.
Re: Attiny 1-й серии как работать с регистрами напрямую?
Добавлено: Пн дек 30, 2024 14:22:24
Adrift
[uquote="dds7sdd",url="/forum/viewtopic.php?p=4666037#p4666037"]Подсказки то выделяет, но как мне понять что за конфигурацию 3-х битов WGMODE[0:2] отвечает групповая битовая маска TCA_SINGLE_WGMODE_NORMAL_gc;[/uquote]
TCA_SINGLE_WGMODE_NORMAL_gc - это не маска, маски на _bm(bit mask) заканчиваются.
Re: Attiny 1-й серии как работать с регистрами напрямую?
Добавлено: Пн дек 30, 2024 14:35:15
КРАМ
[uquote="dds7sdd",url="/forum/viewtopic.php?p=4666037#p4666037"]Подсказки то выделяет, но как мне понять что за конфигурацию 3-х битов WGMODE[0:2] отвечает групповая битовая маска TCA_SINGLE_WGMODE_NORMAL_gc;
В даташите написано что для режима "Normal" эти биты должны ровняться нулю.[/uquote]
И что мешает прямо так и написать =0;? Использовать дефайны констант совершенно не обязательно.
И таки да, это не маска.
Re: Attiny 1-й серии как работать с регистрами напрямую?
Добавлено: Пн дек 30, 2024 16:30:35
BOB51
[uquote="dds7sdd",url="/forum/viewtopic.php?p=4666037#p4666037"]...И вообще лучше пойти нахрен старому пердуну и не мешать соувремённым технологиям.
...[/uquote]
Вот только не надо зря фырчать!
Никто ж не заставляет в режиме форс-мажора новинки осваивать. Другое дело не всегда приятно слушать "а чего Вы еще не на АРМе(STM32 или еще какой новинке)??"....
Просто при необходимости готовим заранее базу. Как и в старо-добрые время.
Тем более времени в достатке.
По мне так зачем за суперновинками раньше времени гнаться?
Да и Х/З чего в ближайшие годы актуальным будет. Возможно и китайский язык придется осваивать.

А в "кащеевом сундуке" радиолюбителя и так добра лет на ... хватит.

Re: Attiny 1-й серии как работать с регистрами напрямую?
Добавлено: Сб янв 04, 2025 22:42:33
shonty
Вспомнилась эта тема
Пишу сейчас под мегу328-ю..
Даташит 16-го года..
В даташите регистры в TIMSK0:
OCIEB OCIEA TOIE
А в m328Pdef.inc
.equ
TOIE0 = 0 ; Timer/Counter0 Overflow Interrupt Enable
.equ
OCIE0A = 1 ; Timer/Counter0 Output Compare Match A Interrupt Enable
.equ
OCIE0B = 2 ; Timer/Counter0 Output Compare Match B Interrupt Enable
Поправил, и дальше писать..

Не проблема же

Re: Attiny 1-й серии как работать с регистрами напрямую?
Добавлено: Вс янв 05, 2025 11:10:18
shonty
Далее по даташиту на 328-ю
В примерах по TWI на C и ASM-е:
Table 26-2. Assembly and C Code Example
Везде указан регистр TWCR
0,
типа:
wait1:
in r16,TWCR
0
sbrs r16,TWINT
rjmp wait1
и в описании TWCR
n, как будто TWCR-ов несколько..
Да мне то пофиг.. я просто по накатанной свои конфиги в порядок привожу
А если первый раз и с "нуля", то да, придётся глубже изучать
Но это везде и повсюду такое, ничего необычного в этом нет
Добавлено after 1 minute 53 seconds:
PS:
Atmel-42735B-ATmega328/P_Datasheet_Complete-11/2016
Re: Attiny 1-й серии как работать с регистрами напрямую?
Добавлено: Пт янв 31, 2025 22:25:21
dds7sdd
Тут надо было быстренько проверить одну задумку с прерыванием по внешнему событию (спадающий фронт на выводе МК).
За 10 мин. накидал код для ATtiny85 и всё что мне нужно было проверил в железе.
Инициализация таймера для генерации прерывания по спадающему фронту на выводе PB0 выглядит так:
Код: Выделить всё
PCMSK = (1<<PCINT0);
GIMSK = (1<<PCIE);
MCUCR = (1<<ISC01);
ISR (PCINT0_vect) {}
И тут мне вспомнилось как у меня бомбило от Микрочиповских говномасок в битах конфигурации для новых серий AVR.
Думаю, валяется ж где-то недопаяная плата с Attiny212. Посмотрю для интересу как там сиё наваять получитсо)))
Угу, 40 минут курения даташита и гугления родили ЭТО...
Инициализации таймера для генерации прерывания по спадающему фронту на пине PA6:
Код: Выделить всё
TCD0.CTRLB = TCD_WGMODE_ONERAMP_gc;
TCD0.INTCTRL = TCD_TRIGA_bm;//разрешить прерывания по событию
TCD0.EVCTRLA= TCD_EDGE_FALL_LOW_gc | TCD_ACTION_bm | TCD_TRIGEI_bm;//сработка про спадающему фронту, включение захвата по каналу А и включение входных событий по каналу А
TCD0.CTRLA = TCD_CLKSEL_SYSCLK_gc | TCD_CNTPRES_DIV4_gc | TCD_ENABLE_bm;//источник тактирования, делитель и включение таймера
EVSYS.ASYNCCH0 = EVSYS_ASYNCCH0_PORTA_PIN6_gc;//сопоставление канала событий ch0 выводу PA6
EVSYS.ASYNCUSER6 = EVSYS_ASYNCUSER6_ASYNCCH0_gc;//сопоставление таймера TCD0 (ASYNCUSER6) каналу событий ch0
ISR (TCD0_TRIG_vect) {
TCD0.INTFLAGS=TCD_TRIGA_bm;
}
Это просто п...ц!
И вы мне тут хором все говорите, что это нормально и современно?))
Re: Attiny 1-й серии как работать с регистрами напрямую?
Добавлено: Пт янв 31, 2025 22:42:43
Adrift
Таймер то зачем, если для каждого пина можно прерывания по низкому уровню или любому фронту настроить?