Attiny 1-й серии как работать с регистрами напрямую?
Re: Attiny 1-й серии как работать с регистрами напрямую?
PORTA^=1<<PB2 - это чтение PORTA, модификация значения и запись обратно, а раз так, то, как я уже говорил, в середине может вклиниться прерывание.
PORTA.TGL = PORTA.OUT ^ 0x07 & 0x0F; -> PORTA.TGL = 0x02; - это одна атомарная операция, ей ничего помешать не может. Она меняет свои 4 бита не затрагивая остальные.
PORTA.TGL = PORTA.OUT ^ 0x07 & 0x0F; -> PORTA.TGL = 0x02; - это одна атомарная операция, ей ничего помешать не может. Она меняет свои 4 бита не затрагивая остальные.
- Реклама
Re: Attiny 1-й серии как работать с регистрами напрямую?
Продолжая изучение...
Вот скажите мне! По какой накурке можно было такое написать в даташите???

Здесь в пункте 2 приведен пример кода дабы перевести таймер TCA0 в режим "Normal mode".
Код этот выглядит так:
TCA0.SINGLE.CTRLB = TCA_SINGLE_WGMODE_NORMAL_gc;
Сук.. как это вообще ассоциируется с регистром CTRLB, названия битов которого приведены там же???
Как, Карл??
Как, читая даташит я должен понять и написать код??
Видя название регистра CTRLB и название его битов WGMODE [0:2], а так же ниже таблицу соответствия состояния этих битов режимам таймера - то я, следуя логике и предыдущим стандартам AVR, должен написать:
CTRLB&=~ (1<<WGMODE0|1<<WGMODE1|1<<WGMODE2);
А точнее - вообще ничего не писать в эти биты, ибо для режима "Normal mode" все биты WGMODE должны быть в "0".
Но следуя даташиту я должен написать:
TCA0.SINGLE.CTRLB = TCA_SINGLE_WGMODE_NORMAL_gc;
Как, как это вообще сопоставить? Зачем это?
Сук.. ловите наркоманов!
Добавлено after 6 minutes 25 seconds:
[uquote="Adrift",url="/forum/viewtopic.php?p=4664374#p4664374"]PORTA^=1<<PB2 - это чтение PORTA, модификация значения и запись обратно, а раз так, то, как я уже говорил, в середине может вклиниться прерывание.
PORTA.TGL = PORTA.OUT ^ 0x07 & 0x0F; -> PORTA.TGL = 0x02; - это одна атомарная операция, ей ничего помешать не может. Она меняет свои 4 бита не затрагивая остальные.[/uquote]
И для этого нужно убрать регистр DDR? Переименоваить остальные все регистры и наделать кучу масок??
Добавлено after 3 minutes 10 seconds:
Сукк.а... пойду застрелюсь в туалете!
Добавлено after 1 hour 5 minutes 7 seconds:
Акуеть... а еще нужно сбрасывать ПРОГРАММНО флаг прерывания в обработчике прерываний....

ISR(TCA0_OVF_vect){
PORTA.OUTTGL = PIN0_bm;
TCA0.SINGLE.INTFLAGS = TCA_SINGLE_OVF_bm;
}
То есть вместо:
ISR(TCA0_OVF_vect) {
PORTA^= 1<<PB0;
}
.......
Фсё... ну нах. Думал быстренько новый МК попробую, мол это вам не STM-ы всякие и ESP заново учить после AVR...
Ан нет! Учи считай новый даташит, методы, векторы, регистры, вызовы...
Кончилось время бородатых дядек и ассемблера... Чувствуется веяние современных пиздюков без оглядки на прошлое, совместимость, оптимизацию....
Нынче в тренде тучи мусорного кода на мощном железе чем оптимизированные решения... Arduino-мир победил...
Дайте яда!
"Пластмассовый мир победил
Макет оказался сильней
Последний кораблик остыл
Последний фонарик устал,
а в горле сопят комья воспоминаний" ©
И.Ф. Летов
Вот скажите мне! По какой накурке можно было такое написать в даташите???
Здесь в пункте 2 приведен пример кода дабы перевести таймер TCA0 в режим "Normal mode".
Код этот выглядит так:
TCA0.SINGLE.CTRLB = TCA_SINGLE_WGMODE_NORMAL_gc;
Сук.. как это вообще ассоциируется с регистром CTRLB, названия битов которого приведены там же???
Как, Карл??
Как, читая даташит я должен понять и написать код??
Видя название регистра CTRLB и название его битов WGMODE [0:2], а так же ниже таблицу соответствия состояния этих битов режимам таймера - то я, следуя логике и предыдущим стандартам AVR, должен написать:
CTRLB&=~ (1<<WGMODE0|1<<WGMODE1|1<<WGMODE2);
А точнее - вообще ничего не писать в эти биты, ибо для режима "Normal mode" все биты WGMODE должны быть в "0".
Но следуя даташиту я должен написать:
TCA0.SINGLE.CTRLB = TCA_SINGLE_WGMODE_NORMAL_gc;
Как, как это вообще сопоставить? Зачем это?
Сук.. ловите наркоманов!
Добавлено after 6 minutes 25 seconds:
[uquote="Adrift",url="/forum/viewtopic.php?p=4664374#p4664374"]PORTA^=1<<PB2 - это чтение PORTA, модификация значения и запись обратно, а раз так, то, как я уже говорил, в середине может вклиниться прерывание.
PORTA.TGL = PORTA.OUT ^ 0x07 & 0x0F; -> PORTA.TGL = 0x02; - это одна атомарная операция, ей ничего помешать не может. Она меняет свои 4 бита не затрагивая остальные.[/uquote]
И для этого нужно убрать регистр DDR? Переименоваить остальные все регистры и наделать кучу масок??
Добавлено after 3 minutes 10 seconds:
Сукк.а... пойду застрелюсь в туалете!
Добавлено after 1 hour 5 minutes 7 seconds:
Акуеть... а еще нужно сбрасывать ПРОГРАММНО флаг прерывания в обработчике прерываний....
ISR(TCA0_OVF_vect){
PORTA.OUTTGL = PIN0_bm;
TCA0.SINGLE.INTFLAGS = TCA_SINGLE_OVF_bm;
}
То есть вместо:
ISR(TCA0_OVF_vect) {
PORTA^= 1<<PB0;
}
.......
Фсё... ну нах. Думал быстренько новый МК попробую, мол это вам не STM-ы всякие и ESP заново учить после AVR...
Ан нет! Учи считай новый даташит, методы, векторы, регистры, вызовы...
Кончилось время бородатых дядек и ассемблера... Чувствуется веяние современных пиздюков без оглядки на прошлое, совместимость, оптимизацию....
Нынче в тренде тучи мусорного кода на мощном железе чем оптимизированные решения... Arduino-мир победил...
Дайте яда!
"Пластмассовый мир победил
Макет оказался сильней
Последний кораблик остыл
Последний фонарик устал,
а в горле сопят комья воспоминаний" ©
И.Ф. Летов
Re: Attiny 1-й серии как работать с регистрами напрямую?
[uquote="dds7sdd",url="/forum/viewtopic.php?p=4664331#p4664331"]Режимы таймера аля NORMAL, CTC и т. д. в AVR всегда выставлялись отдельными битами и это никак не связано с названиями регистров и что они как то могут пересекаться.
Например режим CTC mode в Attiny85:
TCCR1 = 1<<CTC1;
Что мешало сделать в Attiny212 так же?? Религия? Тем более регистры и биты ведь такие же...
[/uquote]
Это не те режимы... Normal и Split влияют как на количество используемых регистров, так и на их поля. Например, в режиме Normal младшие 3 бита CTRLB - это WGMODE, а в режиме Slit там уже 3 отдельных бита LCMP0EN/LCMP1EN/LCMP2EN.
Например режим CTC mode в Attiny85:
TCCR1 = 1<<CTC1;
Что мешало сделать в Attiny212 так же?? Религия? Тем более регистры и биты ведь такие же...
Это не те режимы... Normal и Split влияют как на количество используемых регистров, так и на их поля. Например, в режиме Normal младшие 3 бита CTRLB - это WGMODE, а в режиме Slit там уже 3 отдельных бита LCMP0EN/LCMP1EN/LCMP2EN.
Re: Attiny 1-й серии как работать с регистрами напрямую?
Плятьь....Я застрелился в пустую голову!
И пока там свистал ветер - решил хоть как то, на этом чудном говнокамне, попробовать накидать простую прошивку на пару ШИМ каналов...
И естественно уперся в тактирование!
По сложившейся уже говно-Mscrochip-ской традиции, ПОУМОЛЧАНИЮ, в тактировании основной шины стоит делитель на 6!!
Ну да ладно, можно ж выставить фьюзы, какие проблемы подумал я?... Угу...
Поправить фьюзы через AVRDude_v8, поправить так и не вышло.. Адекватные технические инструкции так и не нашел...
Фьюзы прочитал, в даташите описано одно, а читаетсо - другое!! Ну это, я так понял уже норм для этой конторы...
В итоге решил в юзеровском ПО поправить CLK_CPU PLL... угу...
За прескаллер отвечает регистр MCLKCTRLB ))))) 9 букв, Карл!)))
И естественно. как же без маски то! Что бы обратится к нему нужно написать CLKCTRL_MCLKCTRLB ......сукккааа!!
Но и это еще не всё!
Чтобы отключить делитель - нужно выставить бит "PEN" в "0" в этом регистре.
Есссеественно с помощью говномаски: CLKCTRL_MCLKCTRLB&=~CLKCTRL_PEN_bm;
Иии... И нихрена!
А почему?? Да потому, что говно-Microchip решил придумать систему защиты записи в критически важные (по их мнению) регистры "CCP"!
И теперь, что бы убрать делитель частоты (который цуко по умолчанию на 6) нужно еще записать соответствующий ключ, ссцука, в регистр CPP.......
В итоге, что бы отключить делитель чатоты пришлось курить 20 листов даташита и написать вот ЭТО:
CPU_CCP=0xD8;
CLKCTRL_MCLKCTRLB&=~CLKCTRL_PEN_bm;
ЭТО уже не AVR....
РАССТРЕЛЯТЬ ЭТИХ ПЛАНОКУРОВ!!

И пока там свистал ветер - решил хоть как то, на этом чудном говнокамне, попробовать накидать простую прошивку на пару ШИМ каналов...
И естественно уперся в тактирование!
По сложившейся уже говно-Mscrochip-ской традиции, ПОУМОЛЧАНИЮ, в тактировании основной шины стоит делитель на 6!!
Ну да ладно, можно ж выставить фьюзы, какие проблемы подумал я?... Угу...
Поправить фьюзы через AVRDude_v8, поправить так и не вышло.. Адекватные технические инструкции так и не нашел...
Фьюзы прочитал, в даташите описано одно, а читаетсо - другое!! Ну это, я так понял уже норм для этой конторы...
В итоге решил в юзеровском ПО поправить CLK_CPU PLL... угу...
За прескаллер отвечает регистр MCLKCTRLB ))))) 9 букв, Карл!)))
И естественно. как же без маски то! Что бы обратится к нему нужно написать CLKCTRL_MCLKCTRLB ......сукккааа!!
Но и это еще не всё!
Чтобы отключить делитель - нужно выставить бит "PEN" в "0" в этом регистре.
Есссеественно с помощью говномаски: CLKCTRL_MCLKCTRLB&=~CLKCTRL_PEN_bm;
Иии... И нихрена!
А почему?? Да потому, что говно-Microchip решил придумать систему защиты записи в критически важные (по их мнению) регистры "CCP"!
И теперь, что бы убрать делитель частоты (который цуко по умолчанию на 6) нужно еще записать соответствующий ключ, ссцука, в регистр CPP.......
В итоге, что бы отключить делитель чатоты пришлось курить 20 листов даташита и написать вот ЭТО:
CPU_CCP=0xD8;
CLKCTRL_MCLKCTRLB&=~CLKCTRL_PEN_bm;
ЭТО уже не AVR....
РАССТРЕЛЯТЬ ЭТИХ ПЛАНОКУРОВ!!
Re: Attiny 1-й серии как работать с регистрами напрямую?
Ну как бы по дефолту делитель на 8 много где стоит и стоял, ещё до микрочипа..dds7sdd писал(а):По сложившейся уже говно-Mscrochip-ской традиции, ПОУМОЛЧАНИЮ, в тактировании основной шины стоит делитель на 6!!
Это проблема исключительно AvrDude))dds7sdd писал(а):Поправить фьюзы через AVRDude_v8, поправить так и не вышло.. Адекватные технические инструкции так и не нашел...
dds7sdd писал(а):В итоге, что бы отключить делитель чатоты пришлось курить 20 листов даташита
Могу только что-нибудь позабористее предложить.. Например китайского курнуть))
А так.. неочевидная подача информации сплошь и рядом
Добавлено after 16 minutes 16 seconds:
PS: Просто немногим раньше изучать было проще. Ассортимент чипов был меньше, а энтузиастов, размещающих статьи в интернете, больше. Поэтому в ДШ заглядывали не часто. Сейчас уже не те мотивации для энтузиазма))
- Реклама
- КРАМ
- Друг Кота
- Сообщения: 25261
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Attiny 1-й серии как работать с регистрами напрямую?
[uquote="dds7sdd",url="/forum/viewtopic.php?p=4665864#p4665864"]ЭТО уже не AVR....[/uquote]А никто и не обещал старый AVR. Потому и нет уже давно Atmel-а, что пытался масштабировать старые нравы в новые времена.
Re: Attiny 1-й серии как работать с регистрами напрямую?
[uquote="dds7sdd",url="/forum/viewtopic.php?p=4664257#p4664257"][/uquote]
Вместо этого, кстати, лучше писать так:
Код: Выделить всё
PORTA.DIR = PIN1_bm | PIN2_bm | PIN3_bm;
PORTA.DIR &= ~(PIN7_bm | PIN6_bm);
PORTA.OUT = PIN0_bm | PIN6_bm | PIN7_bm;
PORTA.OUT &= ~(PIN1_bm | PIN2_bm | PIN3_bm);Вместо этого, кстати, лучше писать так:
Код: Выделить всё
PORTA.DIRSET = PIN1_bm | PIN2_bm | PIN3_bm;
PORTA.DIRCLR = PIN7_bm | PIN6_bm;
PORTA.OUTSET = PIN0_bm | PIN6_bm | PIN7_bm;
PORTA.OUTCLR = PIN1_bm | PIN2_bm | PIN3_bm;
Re: Attiny 1-й серии как работать с регистрами напрямую?
dds7sdd, а что тебе мешает завести свой io.h, в котором сделать описания нужных тебе портов/регистров/бит как тебе нравится). Не?
Re: Attiny 1-й серии как работать с регистрами напрямую?
[uquote="OKF",url="/forum/viewtopic.php?p=4665952#p4665952"]dds7sdd, а что тебе мешает завести свой io.h, в котором сделать описания нужных тебе портов/регистров/бит как тебе нравится). Не?[/uquote]
Память, время и религия...
И потом писать для каждой серии свой io с toolchain? Для таких страданий есть Arduino.h со всеми вытекающими..
Добавлено after 20 minutes 6 seconds:
[uquote="КРАМ",url="/forum/viewtopic.php?p=4665903#p4665903"]А никто и не обещал старый AVR. Потому и нет уже давно Atmel-а, что пытался масштабировать старые нравы в новые времена.[/uquote]
Ммм, как бы тебе объяснить? Вот представь если бы с выходом нового стандарта USB 3.0 (например) небыло бы обратной поддержки USB 2.0. И тебе пришлось бы менять все устройства, провода, программы, драйвера и т. д.
Представил?
Точно такое и происходит с ATmel после поглощения Microchip-ом! То что я годами учил в ходе разработки, накопил наработки в собственных проектах и могу при необходимости быстро набросать прошивку на пару килобайт за час-полтора... Теперь выходит нужно всё забыть нахрен и учить даташиты заново, раздупляться как инициализировать, тактировать, читать, работать с векторами, таймерами и т. д. и т. п.
Но даже если и углубляться то из-за таких длинючих и запутанных битовых говномасок в головеи ничего не остается - ты банально не можешь это запомнить... И ты постоянно должен лезть в даташит... но и это не помогает ибо в даташите описаны названия регистров и битов, но напрямую ты к ним обратиться не можешь - только через говномаски битовые, для которы не описаны в даташите, а разбросаны по техническим примерам использования той или иной переферии в виде отдельных технических описаний.... плять как такое гг можно было придумать??
Память, время и религия...
И потом писать для каждой серии свой io с toolchain? Для таких страданий есть Arduino.h со всеми вытекающими..
Добавлено after 20 minutes 6 seconds:
[uquote="КРАМ",url="/forum/viewtopic.php?p=4665903#p4665903"]А никто и не обещал старый AVR. Потому и нет уже давно Atmel-а, что пытался масштабировать старые нравы в новые времена.[/uquote]
Ммм, как бы тебе объяснить? Вот представь если бы с выходом нового стандарта USB 3.0 (например) небыло бы обратной поддержки USB 2.0. И тебе пришлось бы менять все устройства, провода, программы, драйвера и т. д.
Представил?
Точно такое и происходит с ATmel после поглощения Microchip-ом! То что я годами учил в ходе разработки, накопил наработки в собственных проектах и могу при необходимости быстро набросать прошивку на пару килобайт за час-полтора... Теперь выходит нужно всё забыть нахрен и учить даташиты заново, раздупляться как инициализировать, тактировать, читать, работать с векторами, таймерами и т. д. и т. п.
Но даже если и углубляться то из-за таких длинючих и запутанных битовых говномасок в головеи ничего не остается - ты банально не можешь это запомнить... И ты постоянно должен лезть в даташит... но и это не помогает ибо в даташите описаны названия регистров и битов, но напрямую ты к ним обратиться не можешь - только через говномаски битовые, для которы не описаны в даташите, а разбросаны по техническим примерам использования той или иной переферии в виде отдельных технических описаний.... плять как такое гг можно было придумать??
- КРАМ
- Друг Кота
- Сообщения: 25261
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Attiny 1-й серии как работать с регистрами напрямую?
[uquote="dds7sdd",url="/forum/viewtopic.php?p=4665982#p4665982"]Представил?
Точно такое и происходит с ATmel после поглощения Microchip-ом! То что я годами учил в ходе разработки, накопил наработки в собственных проектах и могу при необходимости быстро набросать прошивку на пару килобайт за час-полтора... Теперь выходит нужно всё забыть нахрен и учить даташиты заново[/uquote]
Да именно так.
Даташиты правда учить не нужно. Ими нужно просто пользоваться.
А так, да, сейчас Микрочип в товарных количествах ограниченно доступен настолько, что все приходится переписывать на ARM в лице Artery. И там все по другому. Другая периферия, другие маски, другие правила работы с ядром.
В этом и состоит работа эмбеддера.
В отличии от USB, контроллеры не являются стандартными изделиями. И в новых поколениях, прежде всего, изменяется периферия.
Если у тебя это вызывает такой баттхерт, значит ты что то делаешь не так.
Точно такое и происходит с ATmel после поглощения Microchip-ом! То что я годами учил в ходе разработки, накопил наработки в собственных проектах и могу при необходимости быстро набросать прошивку на пару килобайт за час-полтора... Теперь выходит нужно всё забыть нахрен и учить даташиты заново[/uquote]
Да именно так.
Даташиты правда учить не нужно. Ими нужно просто пользоваться.
А так, да, сейчас Микрочип в товарных количествах ограниченно доступен настолько, что все приходится переписывать на ARM в лице Artery. И там все по другому. Другая периферия, другие маски, другие правила работы с ядром.
В этом и состоит работа эмбеддера.
В отличии от USB, контроллеры не являются стандартными изделиями. И в новых поколениях, прежде всего, изменяется периферия.
Если у тебя это вызывает такой баттхерт, значит ты что то делаешь не так.
Re: Attiny 1-й серии как работать с регистрами напрямую?
Та без проблем, можно заниматься херней годами по кругу переписывая переписанное чисто для переписывания...
У меня же подгорело не из-за технической сложнасти, а из-за того что сделали через жопу! Какой жаль... Ну значит будем посмотреть в другую сторону.
У меня же подгорело не из-за технической сложнасти, а из-за того что сделали через жопу! Какой жаль... Ну значит будем посмотреть в другую сторону.
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1907
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: Attiny 1-й серии как работать с регистрами напрямую?
Либо делаете, либо нет. Выберите путь, по которому идти. Старые типы AVR существуют и производятся. Программы для прогр. кода к ним не перестали работать.
А в остальном по цене ATtiny13A (оригинал, от официальных представителей) получаете в 2 раза больше Flash и SRAM, DAC, 3 + 1 16/12 bit таймера, VREF, 2 аппаратных I2c и т.д. функциях.
Всех что-то возмущает (в сфере МК). Но рано или поздно (или никогда) к этому привыкаешь. Потом при 10-100-1000 ... программах/устройства/теста становится легко. И с улыбкой вспоминаете "простых МК и их окружение".
А в остальном по цене ATtiny13A (оригинал, от официальных представителей) получаете в 2 раза больше Flash и SRAM, DAC, 3 + 1 16/12 bit таймера, VREF, 2 аппаратных I2c и т.д. функциях.
Всех что-то возмущает (в сфере МК). Но рано или поздно (или никогда) к этому привыкаешь. Потом при 10-100-1000 ... программах/устройства/теста становится легко. И с улыбкой вспоминаете "простых МК и их окружение".
Re: Attiny 1-й серии как работать с регистрами напрямую?
Та причем тут AVR путь? Есть же здравый смысл!
Если у тебя в даташите описан ADC регистр ADCSRA с битами ADEN, ADIF и т. д. то это значит что ты можешь обратиться к нему так как он описан в даташите ADCSRA= 1<<DEN|1<<ADIF;
Здесь же, например, ты видишь в даташите название регистра конфигурации таймера CTRLB и названия его битов WGMODE [0:2].
Но ты не можешь написать CTRLB&=~ (1<<WGMODE0|1<<WGMODE1|1<<WGMODE2); НЕТ!
Ты должен написать: TCA0.SINGLE.CTRLB = TCA_SINGLE_WGMODE_NORMAL_gc;
И это не описано в даташите! Это нужно нарыть в заголовочном io файле и отдельных примерах по использованию переферии...
Именно из-за этого у меня бомбит!
Если у тебя в даташите описан ADC регистр ADCSRA с битами ADEN, ADIF и т. д. то это значит что ты можешь обратиться к нему так как он описан в даташите ADCSRA= 1<<DEN|1<<ADIF;
Здесь же, например, ты видишь в даташите название регистра конфигурации таймера CTRLB и названия его битов WGMODE [0:2].
Но ты не можешь написать CTRLB&=~ (1<<WGMODE0|1<<WGMODE1|1<<WGMODE2); НЕТ!
Ты должен написать: TCA0.SINGLE.CTRLB = TCA_SINGLE_WGMODE_NORMAL_gc;
И это не описано в даташите! Это нужно нарыть в заголовочном io файле и отдельных примерах по использованию переферии...
Именно из-за этого у меня бомбит!
Re: Attiny 1-й серии как работать с регистрами напрямую?
Заголовочный файл тоже от микрочипа?dds7sdd писал(а):И это не описано в даташите! Это нужно нарыть в заголовочном io файле и отдельных примерах по использованию переферии...
Добавлено after 1 minute 50 seconds:
Но вам уже ответили:
OKF писал(а):dds7sdd, а что тебе мешает завести свой io.h, в котором сделать описания нужных тебе портов/регистров/бит как тебе нравится). Не?
Re: Attiny 1-й серии как работать с регистрами напрямую?
А от кого? WinAVR.
Вам тоже ответили:
[uquote="dds7sdd",url="/forum/viewtopic.php?p=4665982#p4665982"][uquote="OKF",url="/forum/viewtopic.php?p=4665952#p4665952"]dds7sdd, а что тебе мешает завести свой io.h, в котором сделать описания нужных тебе портов/регистров/бит как тебе нравится). Не?[/uquote]
Память, время и религия...
И потом писать для каждой серии свой io с toolchain? Для таких страданий есть Arduino.h со всеми вытекающими..[/uquote]
Вам тоже ответили:
[uquote="dds7sdd",url="/forum/viewtopic.php?p=4665982#p4665982"][uquote="OKF",url="/forum/viewtopic.php?p=4665952#p4665952"]dds7sdd, а что тебе мешает завести свой io.h, в котором сделать описания нужных тебе портов/регистров/бит как тебе нравится). Не?[/uquote]
Память, время и религия...
И потом писать для каждой серии свой io с toolchain? Для таких страданий есть Arduino.h со всеми вытекающими..[/uquote]
-
veso74
- Поставщик валерьянки для Кота
- Сообщения: 1907
- Зарегистрирован: Сб май 05, 2012 20:24:52
- Откуда: KN34PC, Болгария
- Контактная информация:
Re: Attiny 1-й серии как работать с регистрами напрямую?
Да, удалил строка о ADC как оффтоп. И код чужой.
Попробуйте изучить документацию современного МК. Напр. 1258 страниц
. Если им можно пользоваться годами - то да. Но часто на 3-30-100-й день его меняешь. Даташит: вначале, затем: при необходимости.
Попробуйте изучить документацию современного МК. Напр. 1258 страниц
Последний раз редактировалось veso74 Пн дек 30, 2024 13:21:13, всего редактировалось 1 раз.
Re: Attiny 1-й серии как работать с регистрами напрямую?
[uquote="dds7sdd",url="/forum/viewtopic.php?p=4665999#p4665999"]Ты должен написать: TCA0.SINGLE.CTRLB = TCA_SINGLE_WGMODE_NORMAL_gc;
И это не описано в даташите! Это нужно нарыть в заголовочном io файле и отдельных примерах по использованию переферии...
Именно из-за этого у меня бомбит![/uquote]
Таймер у которого два режима работы с разными наборами регистров - это исключение. В большинстве случаев будет:
И чтобы такое написать достаточно знать как регистр и поле называется. Или у тебя IDE даже автодополнение не умеет?
И это не описано в даташите! Это нужно нарыть в заголовочном io файле и отдельных примерах по использованию переферии...
Именно из-за этого у меня бомбит![/uquote]
Таймер у которого два режима работы с разными наборами регистров - это исключение. В большинстве случаев будет:
Код: Выделить всё
TCA0.CTRLB = TCA_WGMODE_NORMAL_gc;Re: Attiny 1-й серии как работать с регистрами напрямую?
Зачем???? Это не очевидно!
Зачем тогда писать в даташите названия регистров? Тогда надо было делать описани с масками уже... Или и то и другое...
Зачем тогда писать в даташите названия регистров? Тогда надо было делать описани с масками уже... Или и то и другое...
Re: Attiny 1-й серии как работать с регистрами напрямую?
Нужно проще смотреть на эти вопросы.
Есть базовое ядро МК - судя по системе команд оно не изменилось.
Есть набор аппаратной периферии - эта часть может в любое время "взбрыкнуть" - особо ежли объявлено новое семейство. Тут уж без проработки даташитов и еррат не обойтись.
АВРки не 51е, где стандартный минимум ядра прописан (хотя и там "поползновения" на ядро были даже у атмела - да эволюционно отмерли) ...
При подходе к МК как к микропроцессора с набором периферии всё на свои места станет - как пример
есть сам микропроцессор, схема тактироавния и интерфейс с памятью программ/данных - основное ядро.
Оно постоянно (редко в тактирование могут изменения вносить)
А есть периферия - таймеры, порты ввода/вывода, контроллеры доступа к внешним запоминающимся устройствам и прочие приятности.
Это в МК они по большей части уже внутри, но раньше на каждый такой кристалл своя документация была (и весьма не маленькая). Плюс изменения/модификации там много чаще происходили.
Для многих уже те времена равны археологическим раскопкам.

Есть базовое ядро МК - судя по системе команд оно не изменилось.
Есть набор аппаратной периферии - эта часть может в любое время "взбрыкнуть" - особо ежли объявлено новое семейство. Тут уж без проработки даташитов и еррат не обойтись.
АВРки не 51е, где стандартный минимум ядра прописан (хотя и там "поползновения" на ядро были даже у атмела - да эволюционно отмерли) ...
При подходе к МК как к микропроцессора с набором периферии всё на свои места станет - как пример
есть сам микропроцессор, схема тактироавния и интерфейс с памятью программ/данных - основное ядро.
Оно постоянно (редко в тактирование могут изменения вносить)
А есть периферия - таймеры, порты ввода/вывода, контроллеры доступа к внешним запоминающимся устройствам и прочие приятности.
Это в МК они по большей части уже внутри, но раньше на каждый такой кристалл своя документация была (и весьма не маленькая). Плюс изменения/модификации там много чаще происходили.
Для многих уже те времена равны археологическим раскопкам.
Re: Attiny 1-й серии как работать с регистрами напрямую?
[uquote="veso74",url="/forum/viewtopic.php?p=4666007#p4666007"]Да, удалил строка о ADC как оффтоп. И код чужой.
Попробуйте изучить документацию современного МК. Напр. 1258 страниц
. Если им можно пользоваться годами - то да. Но часто на 3-30-100-й день его меняешь. Даташит: вначале, затем: при необходимости.[/uquote]
Так я и не говорю здесь про 32-64 бит МК. Речь идет о мелкой 8 битной блохе за 1 дол., для которой нужно за час написать прошивку, залить и закинуть в какю нить железку и на МК 0-серии так и было. Но вот в новой 1-серии нужно прочитать мануал на 500+ страниц дабы сделать тоже самое. Зачем? Производитель тот же, среда разработки та же, железо и архитектура прежние... Но нет... надо все переделать.
Попробуйте изучить документацию современного МК. Напр. 1258 страниц
Так я и не говорю здесь про 32-64 бит МК. Речь идет о мелкой 8 битной блохе за 1 дол., для которой нужно за час написать прошивку, залить и закинуть в какю нить железку и на МК 0-серии так и было. Но вот в новой 1-серии нужно прочитать мануал на 500+ страниц дабы сделать тоже самое. Зачем? Производитель тот же, среда разработки та же, железо и архитектура прежние... Но нет... надо все переделать.


