Attiny 1-й серии как работать с регистрами напрямую?

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15570
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Attiny 1-й серии как работать с регистрами напрямую?

Сообщение BOB51 »

Так и выбирайте соответственно наиболее удобный набор кристаллов.
Зачем лезть в навороченное раньше времени?
Если возможности имеющейся базы до конца не использованы?
:dont_know:
Реклама
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25259
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Attiny 1-й серии как работать с регистрами напрямую?

Сообщение КРАМ »

[uquote="dds7sdd",url="/forum/viewtopic.php?p=4665995#p4665995"]Ну значит будем посмотреть в другую сторону.[/uquote]
И ты внезапно обнаружишь, что описание регистров периферии как структур является практически тотальным. И происходит это в связи доменной архитектурой периферии в пространстве памяти. То есть все таймеры, например, отличаются только тем, что у них разные начальные адреса. А все регистры внутри домена смещены идентично. Даже если конкретного регистра у таймера нет, этот адрес остается пустым. Поэтому структура - идеальный способ описания регистров периферии.
И даташит тут вообще не причем. Тем более, что имена полей структур более-менее соответствуют названиям регистров и самой периферии в даташитах. А если что то не нравится, всегда можно поправить в хедерах.
Реклама
Adrift
Вымогатель припоя
Сообщения: 543
Зарегистрирован: Вт окт 01, 2024 15:22:33

Re: Attiny 1-й серии как работать с регистрами напрямую?

Сообщение Adrift »

[uquote="dds7sdd",url="/forum/viewtopic.php?p=4666015#p4666015"]Речь идет о мелкой 8 битной блохе за 1 дол., для которой нужно за час написать прошивку, залить и закинуть в какю нить железку и на МК 0-серии так и было.[/uquote]
0-серия точно такая же, те же порты, такой же двухрежимный TCA и CLKCTRL с делением на 6 по умолчанию. В 1 серию периферии добавили чуть и все.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15570
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Attiny 1-й серии как работать с регистрами напрямую?

Сообщение BOB51 »

Т. Е. В документации идёт "подгонка под СИ(ЯВУ).
Да и 1 и 0 серии это уже не атмел, а "микрочип стиль", причём с учётом всего ранее используемого.
И кой чего от ПИК24 возможно...
:roll:
Насчёт своих заголовочников, файлов описания ресурсов - так их (как и макросы в ассемблере) никто не отменял.
:hunger:
Последний раз редактировалось BOB51 Пн дек 30, 2024 13:44:32, всего редактировалось 1 раз.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25259
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Attiny 1-й серии как работать с регистрами напрямую?

Сообщение КРАМ »

[uquote="dds7sdd",url="/forum/viewtopic.php?p=4666015#p4666015"]Речь идет о мелкой 8 битной блохе за 1 дол., для которой нужно за час написать прошивку, залить и закинуть в какю нить железку и на МК 0-серии так и было. Но вот в новой 1-серии нужно прочитать мануал на 500+ страниц дабы сделать тоже самое. Зачем? Производитель тот же, среда разработки та же, железо и архитектура прежние... Но нет... надо все переделать.[/uquote]
С какого перепуга? Производитель сменился. Сменилась группа технической поддержки. Это хорошо заметно по даташитам. Только старые тулчейны от Атмела никто не переделывал, но и не поддерживает.
И, что характерно, тоже самое произошло и с PIC-ами. Потому что чипмейкер решает свои проблемы с продвижением товара на рынке. Опираться на вкусовщину вменяемый бизнес не будет. Любая нишевость в тулчейнах приводит к потерям клиентов.
Реклама
dds7sdd
Прорезались зубы
Сообщения: 207
Зарегистрирован: Чт дек 07, 2017 13:48:44

Re: Attiny 1-й серии как работать с регистрами напрямую?

Сообщение dds7sdd »

[uquote="КРАМ",url="/forum/viewtopic.php?p=4666019#p4666019"]Поэтому структура - идеальный способ описания регистров периферии.[/uquote]

Всё так, но нахиба всё это делать с 8-битным 8-ногим МК с памятью в 2кБ и ОЗУ 64б???
Реклама
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25259
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Attiny 1-й серии как работать с регистрами напрямую?

Сообщение КРАМ »

[uquote="dds7sdd",url="/forum/viewtopic.php?p=4666025#p4666025"]нахиба всё это делать с 8-битным 8-ногим МК...?[/uquote]
Чтобы не вызывать баттхерта у тех, кто приходит к этим чипам со стороны.
Кстати, да, у тебя ИДЕ не выдает подсказки в виде списка полей структур?
Может все таки ты чего то делаешь не так?
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15570
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Attiny 1-й серии как работать с регистрами напрямую?

Сообщение BOB51 »

Разделение весьма здравое -
Общая документация на серию и уточняющая на каждый конкретный кристалл. Плюс отдельно прошивка и обнаруженные ошибки.
Другое дело - доступность на сегодня по известным причинам мягко выражаясь........
Нецензурная...
8)
Насчёт IDE...
Я пока ещё старыми версиями пользуюсь.
Остальное легче на адуринку свалить.
8)
dds7sdd
Прорезались зубы
Сообщения: 207
Зарегистрирован: Чт дек 07, 2017 13:48:44

Re: Attiny 1-й серии как работать с регистрами напрямую?

Сообщение 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 и микросхему самому спаять... И вообще лучше пойти нахрен старому пердуну и не мешать соувремённым технологиям.

Всё понятно, всем спасибо.
Adrift
Вымогатель припоя
Сообщения: 543
Зарегистрирован: Вт окт 01, 2024 15:22:33

Re: Attiny 1-й серии как работать с регистрами напрямую?

Сообщение 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) заканчиваются.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25259
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Attiny 1-й серии как работать с регистрами напрямую?

Сообщение КРАМ »

[uquote="dds7sdd",url="/forum/viewtopic.php?p=4666037#p4666037"]Подсказки то выделяет, но как мне понять что за конфигурацию 3-х битов WGMODE[0:2] отвечает групповая битовая маска TCA_SINGLE_WGMODE_NORMAL_gc;
В даташите написано что для режима "Normal" эти биты должны ровняться нулю.[/uquote]
И что мешает прямо так и написать =0;? Использовать дефайны констант совершенно не обязательно.
И таки да, это не маска.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15570
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Attiny 1-й серии как работать с регистрами напрямую?

Сообщение BOB51 »

[uquote="dds7sdd",url="/forum/viewtopic.php?p=4666037#p4666037"]...И вообще лучше пойти нахрен старому пердуну и не мешать соувремённым технологиям.

...[/uquote]
Вот только не надо зря фырчать!
8)
Никто ж не заставляет в режиме форс-мажора новинки осваивать. Другое дело не всегда приятно слушать "а чего Вы еще не на АРМе(STM32 или еще какой новинке)??"....
Просто при необходимости готовим заранее базу. Как и в старо-добрые время.
Тем более времени в достатке.
По мне так зачем за суперновинками раньше времени гнаться?
Да и Х/З чего в ближайшие годы актуальным будет. Возможно и китайский язык придется осваивать.
:roll:
А в "кащеевом сундуке" радиолюбителя и так добра лет на ... хватит.
:hunger: :wink:
Аватара пользователя
shonty
Мучитель микросхем
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

Re: Attiny 1-й серии как работать с регистрами напрямую?

Сообщение 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

Поправил, и дальше писать.. :dont_know:
Не проблема же :dont_know:
Аватара пользователя
shonty
Мучитель микросхем
Сообщения: 473
Зарегистрирован: Ср янв 11, 2012 18:20:26

Re: Attiny 1-й серии как работать с регистрами напрямую?

Сообщение shonty »

Далее по даташиту на 328-ю

В примерах по TWI на C и ASM-е:
Table 26-2. Assembly and C Code Example
Везде указан регистр TWCR0,

типа:
wait1:
in r16,TWCR0
sbrs r16,TWINT
rjmp wait1

и в описании TWCRn, как будто TWCR-ов несколько..
Да мне то пофиг.. я просто по накатанной свои конфиги в порядок привожу :dont_know:

А если первый раз и с "нуля", то да, придётся глубже изучать :dont_know:

Но это везде и повсюду такое, ничего необычного в этом нет :dont_know:



Добавлено after 1 minute 53 seconds:
PS: Atmel-42735B-ATmega328/P_Datasheet_Complete-11/2016
dds7sdd
Прорезались зубы
Сообщения: 207
Зарегистрирован: Чт дек 07, 2017 13:48:44

Re: Attiny 1-й серии как работать с регистрами напрямую?

Сообщение 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;
   }
   
Это просто п...ц!
И вы мне тут хором все говорите, что это нормально и современно?))
Adrift
Вымогатель припоя
Сообщения: 543
Зарегистрирован: Вт окт 01, 2024 15:22:33

Re: Attiny 1-й серии как работать с регистрами напрямую?

Сообщение Adrift »

Таймер то зачем, если для каждого пина можно прерывания по низкому уровню или любому фронту настроить?

Код: Выделить всё

PORTA.PIN6CTRL = PORT_ISC_FALLING_gc;
Ответить

Вернуться в «AVR»