Обсуждаем контроллеры компании Atmel.
Ответить

Re: Вопросы по архитектуре микроконтроллеров AVR

Вт сен 07, 2021 11:35:33

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

Добавлено after 2 minutes 53 seconds:
Кстати, в отличие от Microchip & ARM, где ЕРРАТА состоит в основном из заблуждений пользователя, в AVR ошибки настоящие тверезые.

Re: Вопросы по архитектуре микроконтроллеров AVR

Вт сен 07, 2021 11:58:55

ну, вот, это наверное ж более полезная инфа, чем расположение ронов

Re: Вопросы по архитектуре микроконтроллеров AVR

Вт сен 07, 2021 12:10:59

astrahard писал(а):Прерывание по переполнению не вызывается вовсе, если установлено прерывание по совпадению. Все писалось на Си
я пишу на ассемблере и у меня работают абсолютно ВСЕ прерывания.
и именно касательно ШИМ я делал тестовую программу - были поставлены прерывания по совпадению обоих каналов А и В и прерывание по переполнению - срабатывали в Протеусе все 3 прерывания.

Re: Вопросы по архитектуре микроконтроллеров AVR

Вт сен 07, 2021 12:27:20

В Протеусе? Он теоретичен, а я говорю о практике и errata sheet!!!! Прерывания то все работают по отдельности, просто вместе не работают.

Добавлено after 5 minutes 2 seconds:
Здесь написано, кстати, страница называться "Перечисление всех уродов" среди чипов Atmel AVR
https://www.avrfreaks.net/forum/avr-err ... s?page=all

Re: Вопросы по архитектуре микроконтроллеров AVR

Вт сен 07, 2021 12:41:06

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

Можно ссылку на эрату?
Я люблю Attiny441/841. C её таймерами чего только не вытворял. Никаких ошибок не встречал. В последнем проекте были задействованы все таймеры (включая собаку) и абсолютно все компараторы. Я умудрялся ШИМИТЬ 6 выходов и отмерять системные тики нужной мне длительности.
А вот в новой Attiny817 приходилось сталкиваться с кривым описанием в даташите.

Re: Вопросы по архитектуре микроконтроллеров AVR

Вт сен 07, 2021 12:51:24

Я же дал ссылку на неофициальную еррату Официальные на сайте Microchip, да, кстати, когда Microchip поглотила ATmel, первая, как более опытная, помогает избавиться от ошибок проектирования коллектива ATmel. ATmel основали студенты из Норвегии кажется, и средства разработки тогда были сопряжены с "ручным трудом", отсюда и ошибки в старых чипах.

Добавлено after 1 minute 48 seconds:
Интересно то, что ATmel никогда не имела своих фабрик, все производилось на заводах Microchip, не удивительно что последняя поглотила ATmel.

Re: Вопросы по архитектуре микроконтроллеров AVR

Чт сен 09, 2021 10:34:40

Правильно ли я понял?:
1) Счетчик команд - это просто регистр, в котором хранится очередной адрес памяти программ. При запуске МК, этот регистр устанавливается в $0000 и с каждым тактом (иногда за 2 такта) инкриминируется на единицу. Таким образом счетчик команд последовательно проходится по всей памяти программ. При каждом такте МК происходит переход в ячейку памяти программ по адресу памяти указанному в счетчике команд. После перехода из ячейки считываются команды, которые затем загружаются в РОН и обрабатываются АЛУ.
2) ЦПУ обрабатывает только те команды, которые находятся по адресу указанному в счетчике команд.
3) С учетом пункта "2" при прерывании адрес в счетчике команд меняется и чтобы потом вернутся к тому месту памяти, где возникло прерывание, это место необходимо где-то сохранить. Для этих целей используется "стек" - что-то вроде буфера для временного хранения адреса памяти.

Re: Вопросы по архитектуре микроконтроллеров AVR

Чт сен 09, 2021 10:59:48

при условных переходах, когда выполняется условие, счетчик команд переходит на адрес, который указан в условии.
команды загружаются не в РОН, а дешифратор команд.
да, при прерывании адрес следующей команды помещается в стек, а в счетчик команд помещается адрес обработчика прерывания. при выходе из прерывания из стека восстанавливается адрес команды, с которой нужно продолжить выполнение программы.

Re: Вопросы по архитектуре микроконтроллеров AVR

Чт сен 09, 2021 12:11:46

Starichok51 писал(а):команды загружаются не в РОН, а дешифратор команд.

Посмотрел схему. Там перед дешифратором еще стоит "регистр команд". Не совсем понятна его функция...?

А после дешифратора, команда поступает в устройство управления где и выполняется?
Устройство управления висит на внутренней шине данных и управляет периферией?
Устройство управление также может отправить инструкции на выполнение в АУЛ?
Устройство управление вообще управляет всей работой МК?

Re: Вопросы по архитектуре микроконтроллеров AVR

Чт сен 09, 2021 12:36:20

3) С учетом пункта "2" при прерывании адрес в счетчике команд меняется и чтобы потом вернутся к тому месту памяти, где возникло прерывание, это место необходимо где-то сохранить. Для этих целей используется "стек" - что-то вроде буфера для временного хранения адреса памяти.

Начните с чего попроще - команды rjmp. Она просто записывает новое значение в PC.
Команда rcall грубо говоря выполняет следующую последовательность:
Код:
push PC_1
push PC_0
rjmp label

чтобы потом команда ret могла сделать
Код:
pop PC_0
pop PC_1

благодаря чему произойдет прыжок обратно.
Прерывание еще более грубо говоря подставляет rcall между инструкциями, во время выполнения которых ему повезло возникнуть. Ну плюс оно управляет битом I регистра SREG.
Правильно ли я понял?

В первом приближении да. Есть еще тонкости вроде конвейера, но пока не заморачивайтесь.
Посмотрел схему. Там перед дешифратором еще стоит "регистр команд". Не совсем понятна его функция...?

Ну флеш-память ведь не входит в ядро. Команду из нее надо сначала сохранить во временном регистре, в котором она не изменится до самого конца выполнения. Доступа к этом регистру снаружи нет.
Устройство управления висит на внутренней шине данных и управляет периферией?

Не совсем понятно что вы имеете в виду под "устройством управления". Если речь о ядре, то оно совместно с декодером выбирает вычислительный блок, который отвечает за данную команду. То есть для сложения один блок, для перехода другой и т.д. Разные блоки имеют доступ к разным частям ядра. Одни только к РОНам и SREG, другие к периферии, третьи к памяти и т.д.
Периферией ядро напрямую не управляет. Оно может только записывать и читать значения ее регистров (in, out, ld, st), а уж как на это реагировать периферия решает сама.
.
Ассемблер учите! Когда трогаешь это все руками гораздо понятнее становится, чем пытаться расшифровать пересказ даташитов на форуме.

Re: Вопросы по архитектуре микроконтроллеров AVR

Чт сен 09, 2021 13:35:14

COKPOWEHEU писал(а):Если речь о ядре, то оно совместно с декодером выбирает вычислительный блок, который отвечает за данную команду.


Т.е. единого блока управления нет? А то вот на этой картинке есть какой-то блок "статус и управление":
Изображение

Было интересно что происходит с командой после дешифратора.

Добавлено after 8 minutes 4 seconds:
Kalisnik писал(а):Периферией ядро напрямую не управляет. Оно может только записывать и читать значения ее регистров (in, out, ld, st), а уж как на это реагировать периферия решает сама.

Полезная информация.

Добавлено after 10 minutes 50 seconds:
COKPOWEHEU писал(а):Ассемблер учите! Когда трогаешь это все руками гораздо понятнее становится, чем пытаться расшифровать пересказ даташитов на форуме.

Планирую начать с Си (уже знаком с общим синтаксисом этого языка, будет проще). Мои программы пока не требовательны к производительности МК. Но понимать как эта кухня работает все равно нужно (как работает архитектура МК). Потому что без этого вся работа сведется к установки битов в определенных регистрах по заученной схеме. И вряд ли так получится выйти на какой-то серьезный уровень в написании программ для МК. Потом, когда появится опыт и необходимость в быстродействии можно будет ознакомиться и с ассемблером. Я так думаю.

Re: Вопросы по архитектуре микроконтроллеров AVR

Чт сен 09, 2021 14:45:13

Т.е. единого блока управления нет?
Управления чем?
Но понимать как эта кухня работает все равно нужно
Вот именно для этого ассемблер и нужен. С него начинать надо.
Было интересно что происходит с командой после дешифратора.
Выполнение происходит, очевидно. У вас есть блок сложения, блок сравнения, блок перехода, блок ввода-вывода. Дешифратор выставляет сигнал разрешения на нужный блок и тот запускается. Блок выполняет свою задачу. Увеличивается PC. Происходит выборка следующей команды. И так далее.
Не знаю что вы пытаетесь понять без малейшего знания основ ассемблера и цифровой схемотехники.

Re: Вопросы по архитектуре микроконтроллеров AVR

Чт сен 09, 2021 15:01:49

Для начала надо понимать "откуда лапы ростут"...
Или начинаем разборки с древней классики - I8080 с комплектом периферийной обвязки, который чуток позже загнали в один маахонький кристалл, дабы облегчить работу эти МК использующему люду...
Или принимаем МК так как есть - не вникая в особенности работ на уровне отдельных транзисторов.
Иначе каша и полный ступор начинающему гарантирован.
8)

Re: Вопросы по архитектуре микроконтроллеров AVR

Чт сен 09, 2021 16:14:56

Я бы сказал ответы форумчан помогают. Картинка понемногу складывается.

Добавлено after 14 minutes 57 seconds:
COKPOWEHEU писал(а): У вас есть блок сложения, блок сравнения, блок перехода, блок ввода-вывода.

А сколько всего блоков?
Они физически на кристалле расположены также в виде блоков?
Получается все блоки и дешифратор расположены на одной шине данных?
Взаимосвязь происходит как в некоторых интерфейсах?:
-Шину данных "слушают" сразу все блоки.
-Дешифратор отправляет в шину данных "опознавательный код" ("называет по имени") для того или иного блока. Блок переходит в режим приема данных.
-Пересылаются инструкции от дешифратора к блоку. Блок выполняет инструкции. Так?

Re: Вопросы по архитектуре микроконтроллеров AVR

Чт сен 09, 2021 16:34:13

подобные вопросы нужно задавать разработчикам МК, а не нам.
мы знаем о взаимодействии блоков на блок-схеме ровно столько же, сколько и ты.

Re: Вопросы по архитектуре микроконтроллеров AVR

Чт сен 09, 2021 17:01:11

COKPOWEHEU писал(а):Есть еще тонкости вроде конвейера, но пока не заморачивайтесь.

Про конвейер я тоже вкратце почитал. Это выборка и загрузка инструкций параллельно с их выполнением. Это позволяет выполнять большинство инструкций за один такт ядра. Соответственно это вносит коррективы при условных переходах, так как на следующий так инструкция уже загружена. По этому условный переход занимает более 1 такта.

Добавлено after 17 minutes 7 seconds:
Starichok51 писал(а):мы знаем о взаимодействии блоков на блок-схеме ровно столько же, сколько и ты.

Постараюсь задавать вопросы в рамках литературы. :beer:

Добавлено after 8 minutes 37 seconds:
А вообще, если все очень-очень упростить, то работа с МК сводится к нескольким пунктам, как мне кажется:
1) Язык программирования и разработка программы.
2) Работа с побитовыми операциями и различными системами счисления.
3) Работа с регистрами.
4) Работа с памятью.
5) Работа с внешними интерфейсами.

Re: Вопросы по архитектуре микроконтроллеров AVR

Чт сен 09, 2021 18:27:17

А сколько всего блоков?

Зависит от кристалла. В некоторых больше, в некоторых меньше. В некоторых даже одноименные блоки имеют разную сложность и структуру.
Получается все блоки и дешифратор расположены на одной шине данных?

Нет, шина данных это то, чем ядро связывается с памятью, периферией и прочим. Внутри ядра про шину данных говорить не очень-то корректно.
-Дешифратор отправляет в шину данных "опознавательный код" ("называет по имени") для того или иного блока. Блок переходит в режим приема данных.
Скорее, куча отдельных линий "включить этот блок", "включить тот блок". Аналогично линии CS (chip select) или OE (output enable) на обычных микросхемах.
-Пересылаются инструкции от дешифратора к блоку. Блок выполняет инструкции. Так?

Зачем блоку инструкция? Он ее и так знает, поскольку физически может быть выбран только если пришла нужная.
Я бы сказал ответы форумчан помогают. Картинка понемногу складывается.

А теперь представьте, что бы было если бы вы еще и к советам прислушались!
И начали изучать цифровую схемотехнику и ассемблер.
А вообще, если все очень-очень упростить, то работа с МК сводится к нескольким пунктам, как мне кажется:

Какая-то у вас странная классификация.
Если говорить об освоении МК "снизу вверх", то изучать надо в следующем порядке:
Код:
базовая электротехника (резисторы, транзисторы) -> цифровая схемотехника (вплоть до интегральных счетчиков наверное) -> ассемблер -> Си

Если изучать "сверху вниз" то порядок обратный.. Хотя базовую схемотехнику изучить придется не в конце, а при переходе к железу
А то, что перечислили вы... 1-й пункт это конечная цель, остальные пункты - средства.
Ну и специфика контроллеров - помимо программирования там еще и схемотехнику знать надо, иначе получится Ардуина или Куб.

Re: Вопросы по архитектуре микроконтроллеров AVR

Чт сен 09, 2021 18:37:16

COKPOWEHEU, спасибо за ответ!

Kalisnik писал(а):Ну и специфика контроллеров - помимо программирования там еще и схемотехнику знать надо, иначе получится Ардуина или Куб.

До ветки МК, я сидел в ветке "аналоговой техники". :)

Re: Вопросы по архитектуре микроконтроллеров AVR

Чт сен 09, 2021 18:41:55

Что-то я не понимаю - на кой х ему ассемблер сдался?

Я ассемблер плотненько изучал только на МК51 и PIC. На AVR так, поверхностно, но могу.
При переходе на STM32 я ни единого слова по asm не знаю, что не мешает мне осваивать и STM32.

Re: Вопросы по архитектуре микроконтроллеров AVR

Чт сен 09, 2021 19:21:42

Ассемблер не для STM32, а для ARM ов вообще-то там надо учить.
СТМки всего лишь разновидность.
А тут вопрос именно в наличии бесплатного компилятора с одной стороны и сложностью начинки аппаратными блоками с другой.
В принципе так и для любого МК справедливо - одна часть задачи собственно ядро - АЛУ, ядро, регистры специальных функций, память - оперативная и программная, система обслуживания прерываний, управление вводом/выводом(порты), система сброса.
Вторая часть - аппаратные модули - тут уже по каждому надо отдельно вычитывать.
8)
Ответить