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

Обсуждаем контроллеры компании Atmel.
Ответить
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1405
Зарегистрирован: Чт фев 19, 2015 12:41:04

Сообщение astrahard »

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

Добавлено after 2 minutes 53 seconds:
Кстати, в отличие от Microchip & ARM, где ЕРРАТА состоит в основном из заблуждений пользователя, в AVR ошибки настоящие тверезые.
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
Реклама
Опытный кот
Аватара пользователя
Сообщения: 882
Зарегистрирован: Ср дек 01, 2010 00:38:15
Откуда: Харьков

Сообщение slav0n »

ну, вот, это наверное ж более полезная инфа, чем расположение ронов
ohmycode!
primuss3.com
Контактная информация:
Реклама
Модератор
Аватара пользователя
Сообщения: 19055
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

astrahard писал(а):Прерывание по переполнению не вызывается вовсе, если установлено прерывание по совпадению. Все писалось на Си
я пишу на ассемблере и у меня работают абсолютно ВСЕ прерывания.
и именно касательно ШИМ я делал тестовую программу - были поставлены прерывания по совпадению обоих каналов А и В и прерывание по переполнению - срабатывали в Протеусе все 3 прерывания.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1405
Зарегистрирован: Чт фев 19, 2015 12:41:04

Сообщение astrahard »

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

Добавлено after 5 minutes 2 seconds:
Здесь написано, кстати, страница называться "Перечисление всех уродов" среди чипов Atmel AVR
https://www.avrfreaks.net/forum/avr-err ... s?page=all
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
Реклама
Эиком - электронные компоненты и радиодетали
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

Сообщение parovoZZ »

[uquote="astrahard",url="/forum/viewtopic.php?p=4087719#p4087719"]Даташит, вернее еррата шиит говорит, что это так и есть, тоесть контроллер с ошибками, причем эта ошибка ооочень принципиальная и не поддается коррекции кодом.[/uquote]
Можно ссылку на эрату?
Я люблю Attiny441/841. C её таймерами чего только не вытворял. Никаких ошибок не встречал. В последнем проекте были задействованы все таймеры (включая собаку) и абсолютно все компараторы. Я умудрялся ШИМИТЬ 6 выходов и отмерять системные тики нужной мне длительности.
А вот в новой Attiny817 приходилось сталкиваться с кривым описанием в даташите.
Реклама
Это не хвост, это антенна
Аватара пользователя
Сообщения: 1405
Зарегистрирован: Чт фев 19, 2015 12:41:04

Сообщение astrahard »

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

Добавлено after 1 minute 48 seconds:
Интересно то, что ATmel никогда не имела своих фабрик, все производилось на заводах Microchip, не удивительно что последняя поглотила ATmel.
"Every profession is a conspiracy against the uninitiated" (B. Shaw)
"A textbook can be defined as a book unsuitable for reading" (B. Shaw)
Tautology is humor in "this" place (Vigo Carpathian)
Реклама
Мучитель микросхем
Сообщения: 430
Зарегистрирован: Вс апр 18, 2021 15:43:55

Сообщение Kalisnik »

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

Сообщение Starichok51 »

при условных переходах, когда выполняется условие, счетчик команд переходит на адрес, который указан в условии.
команды загружаются не в РОН, а дешифратор команд.
да, при прерывании адрес следующей команды помещается в стек, а в счетчик команд помещается адрес обработчика прерывания. при выходе из прерывания из стека восстанавливается адрес команды, с которой нужно продолжить выполнение программы.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Мучитель микросхем
Сообщения: 430
Зарегистрирован: Вс апр 18, 2021 15:43:55

Сообщение Kalisnik »

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

А после дешифратора, команда поступает в устройство управления где и выполняется?
Устройство управления висит на внутренней шине данных и управляет периферией?
Устройство управление также может отправить инструкции на выполнение в АУЛ?
Устройство управление вообще управляет всей работой МК?
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

[uquote="Kalisnik",url="/forum/viewtopic.php?p=4088610#p4088610"]3) С учетом пункта "2" при прерывании адрес в счетчике команд меняется и чтобы потом вернутся к тому месту памяти, где возникло прерывание, это место необходимо где-то сохранить. Для этих целей используется "стек" - что-то вроде буфера для временного хранения адреса памяти.[/uquote]
Начните с чего попроще - команды 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), а уж как на это реагировать периферия решает сама.
.
Ассемблер учите! Когда трогаешь это все руками гораздо понятнее становится, чем пытаться расшифровать пересказ даташитов на форуме.
Мучитель микросхем
Сообщения: 430
Зарегистрирован: Вс апр 18, 2021 15:43:55

Сообщение Kalisnik »

COKPOWEHEU писал(а):Если речь о ядре, то оно совместно с декодером выбирает вычислительный блок, который отвечает за данную команду.
Т.е. единого блока управления нет? А то вот на этой картинке есть какой-то блок "статус и управление":
Изображение

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

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

Добавлено after 10 minutes 50 seconds:
COKPOWEHEU писал(а):Ассемблер учите! Когда трогаешь это все руками гораздо понятнее становится, чем пытаться расшифровать пересказ даташитов на форуме.
Планирую начать с Си (уже знаком с общим синтаксисом этого языка, будет проще). Мои программы пока не требовательны к производительности МК. Но понимать как эта кухня работает все равно нужно (как работает архитектура МК). Потому что без этого вся работа сведется к установки битов в определенных регистрах по заученной схеме. И вряд ли так получится выйти на какой-то серьезный уровень в написании программ для МК. Потом, когда появится опыт и необходимость в быстродействии можно будет ознакомиться и с ассемблером. Я так думаю.
Говорящий с текстолитом
Аватара пользователя
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Сообщение COKPOWEHEU »

Т.е. единого блока управления нет?
Управления чем?
Но понимать как эта кухня работает все равно нужно
Вот именно для этого ассемблер и нужен. С него начинать надо.
Было интересно что происходит с командой после дешифратора.
Выполнение происходит, очевидно. У вас есть блок сложения, блок сравнения, блок перехода, блок ввода-вывода. Дешифратор выставляет сигнал разрешения на нужный блок и тот запускается. Блок выполняет свою задачу. Увеличивается PC. Происходит выборка следующей команды. И так далее.
Не знаю что вы пытаетесь понять без малейшего знания основ ассемблера и цифровой схемотехники.
Друг Кота
Аватара пользователя
Сообщения: 15598
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

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

Сообщение Kalisnik »

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

Добавлено after 14 minutes 57 seconds:
COKPOWEHEU писал(а): У вас есть блок сложения, блок сравнения, блок перехода, блок ввода-вывода.
А сколько всего блоков?
Они физически на кристалле расположены также в виде блоков?
Получается все блоки и дешифратор расположены на одной шине данных?
Взаимосвязь происходит как в некоторых интерфейсах?:
-Шину данных "слушают" сразу все блоки.
-Дешифратор отправляет в шину данных "опознавательный код" ("называет по имени") для того или иного блока. Блок переходит в режим приема данных.
-Пересылаются инструкции от дешифратора к блоку. Блок выполняет инструкции. Так?
Модератор
Аватара пользователя
Сообщения: 19055
Зарегистрирован: Сб авг 14, 2010 15:05:51
Откуда: г. Озерск, Челябинская обл.

Сообщение Starichok51 »

подобные вопросы нужно задавать разработчикам МК, а не нам.
мы знаем о взаимодействии блоков на блок-схеме ровно столько же, сколько и ты.
Мудрость приходит вместе с импотенцией...
Когда на русском форуме переходят на Вы, в реальной жизни начинают бить морду.
Мучитель микросхем
Сообщения: 430
Зарегистрирован: Вс апр 18, 2021 15:43:55

Сообщение Kalisnik »

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

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

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

Сообщение COKPOWEHEU »

[uquote="Kalisnik",url="/forum/viewtopic.php?p=4088779#p4088779"]А сколько всего блоков?[/uquote]
Зависит от кристалла. В некоторых больше, в некоторых меньше. В некоторых даже одноименные блоки имеют разную сложность и структуру.
Получается все блоки и дешифратор расположены на одной шине данных?
Нет, шина данных это то, чем ядро связывается с памятью, периферией и прочим. Внутри ядра про шину данных говорить не очень-то корректно.
-Дешифратор отправляет в шину данных "опознавательный код" ("называет по имени") для того или иного блока. Блок переходит в режим приема данных.
Скорее, куча отдельных линий "включить этот блок", "включить тот блок". Аналогично линии CS (chip select) или OE (output enable) на обычных микросхемах.
-Пересылаются инструкции от дешифратора к блоку. Блок выполняет инструкции. Так?
Зачем блоку инструкция? Он ее и так знает, поскольку физически может быть выбран только если пришла нужная.
Я бы сказал ответы форумчан помогают. Картинка понемногу складывается.
А теперь представьте, что бы было если бы вы еще и к советам прислушались!
И начали изучать цифровую схемотехнику и ассемблер.
А вообще, если все очень-очень упростить, то работа с МК сводится к нескольким пунктам, как мне кажется:
Какая-то у вас странная классификация.
Если говорить об освоении МК "снизу вверх", то изучать надо в следующем порядке:

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

базовая электротехника (резисторы, транзисторы) -> цифровая схемотехника (вплоть до интегральных счетчиков наверное) -> ассемблер -> Си
Если изучать "сверху вниз" то порядок обратный.. Хотя базовую схемотехнику изучить придется не в конце, а при переходе к железу
А то, что перечислили вы... 1-й пункт это конечная цель, остальные пункты - средства.
Ну и специфика контроллеров - помимо программирования там еще и схемотехнику знать надо, иначе получится Ардуина или Куб.
Мучитель микросхем
Сообщения: 430
Зарегистрирован: Вс апр 18, 2021 15:43:55

Сообщение Kalisnik »

COKPOWEHEU, спасибо за ответ!
Kalisnik писал(а):Ну и специфика контроллеров - помимо программирования там еще и схемотехнику знать надо, иначе получится Ардуина или Куб.
До ветки МК, я сидел в ветке "аналоговой техники". :)
Мудрый кот
Сообщения: 1849
Зарегистрирован: Вс дек 25, 2016 08:34:54

Сообщение Dimon456 »

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

Я ассемблер плотненько изучал только на МК51 и PIC. На AVR так, поверхностно, но могу.
При переходе на STM32 я ни единого слова по asm не знаю, что не мешает мне осваивать и STM32.
Друг Кота
Аватара пользователя
Сообщения: 15598
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Сообщение BOB51 »

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

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