Обсуждение:Архитектура AVR в примерах

Материал из Викиверситета
Перейти к навигации Перейти к поиску

«Вводная»[править]

Конечно, можно отделаться ссылкой на Википедию, но лучше было бы в самом начале статьи описать, что такое AVR и почему это может представлять интерес. --SSJ (обсуждение) 00:59, 9 мая 2014 (UTC)

С замечанием, в целом, согласен, однако, с одной стороны, мне бы не хотелось создавать в практикуме «филиал» соответствующей статьи Википедии; с другой, — я склонен работать не с «определением» объекта («одна из многих распространенных сегодня архитектур микроконтроллеров…»), но с совокупностью свойств оного. Предполагается, что именно познакомиться с этими свойствами и позволит данный практикум. (Хотя, конечно, краткий их перечень не помешает.)
Кроме того, на май приоритетными для меня являются:
  1. написание еще нескольких (порядка 2–5) лабораторных работ (прежде всего — в раздел «Примеры», но также и лабораторную по встроенному АЦП во «Взаимодействие»);
  2. дополнение практикума принципиальными (а возможно и монтажными) схемами рассматриваемых блоков.
Ivan Shmakov (ов) 22:31, 9 мая 2014 (UTC)
Речь же не о формальном определении, которое описано в Википедии, речь о лекционном объяснении того для чего и с чем предстоит работать. --SSJ (обсуждение) 22:39, 9 мая 2014 (UTC)
Возможно. Но, опять-таки, — задача не первоочередная. Кроме того, очертить круг задач будет проще, когда сами эти «задачи» будут в наличии. — Ivan Shmakov (ов) 08:04, 12 мая 2014 (UTC)

Материально-техническое обеспечение[править]

Лично мне не хватает понимания зачем это все надо, некого предварительного обзора? Возникает впечатление, что это какое-то капание старого железа, зачем? Какие практические задачи можно решить с этими устройствами? Далее, если я вдруг заинтересовался предварительным обзором, которого тут нет, возникает вопрос что это за устройства, которые требуется для проведения работ. Надо какие-то изображения, понять как свободно можно купить эти устройства, допустимо даже ссылки на серьезных производителей и уровень цен, понять сколько надо затратить в домашних условиях, чтобы начать работу. --SSJ (обсуждение) 22:06, 9 мая 2014 (UTC)

Почему именно старого?
Изображения отдельных компонент, конечно, обнаружатся на Викискладе, однако ценность их для материала представляется несколько сомнительной. С другой стороны, изображения собранных схем мне, по-видимому, придется создавать самому, а я, честно говоря, не имею сколь угодно существенного опыта фотографа. Как упоминал выше, однако, — я рассматриваю возможность дополнения практикума монтажными схемами, как это уже сделано в «простейшем устройстве.»
Раздел с «методическими указаниями» у меня запланирован. Не уверен, что в нем следует дублировать перечень компонентов (из разделов «Перед началом» конкретных работ), но некая оценка стоимости действительно может оказаться полезной.
Ссылки именно на производителей, в общем случае, уместными не будут, поскольку последние, AIUI, обычно занимаются исключительно оптовыми партиями. Из торгующих в розницу — местные радиолюбительские магазины перечислять опять-таки едва ли есть смысл; при заказе почтой — w:AliExpress, w:eBay, для жителей США — w:en:Digi-Key, — точно также, как и для едва ли не любой другой радиолюбительской электроники.
Ivan Shmakov (ов) 08:04, 12 мая 2014 (UTC)

Интерактивность и требования к уровню подготовки[править]

  • Материал достаточно сухой, интерактивности легче добиться, когда ведешь разговор с потенциальным обучаемым. Далее тут так и сделано, но почему-то предполагается, что основы этого читателю уже известны. Вот например, когда я задался вопросом поработать с микроскопом у меня возникло много вопросов, можно не стесняться описать тривиальные на первый взгляд вопросы, они позволят войти в тему даже не знакомому с основами. вот как пример Изучение микромира под микроскопом/§3 --SSJ (обсуждение) 22:14, 9 мая 2014 (UTC)
Некие требования к уровню подготовки у материала, действительно, имеются, — как, например: навыки монтажа электронных схем; владение текстовым редактором, командным интерпретатором Bash, универсальным сборщиком Make. Другое дело, что их также следует указать явно (по-возможности, — дав ссылки на материал для изучения.)
Если при изучении возникают конкретные вопросы, — буду благодарен за их перечисление на соответствующих страницах обсуждения. Вполне возможно, что я действительно «оставил за кадром» некоторые неочевидные подробности.
По материалу Изучение микромира под микроскопом/§3 — оставил комментарий на странице обсуждения.
Ivan Shmakov (ов) 08:04, 12 мая 2014 (UTC)

Не работает PCINT[править]

Совсем новичок в AVR, так что вопрос почти наверняка нубский. Есть схема на МК ATtiny2313, вот сама схема. К PB3 там подключен генератор импульсов. Задумка в том, что бы на табло показывалось количество импульсов с момента старта девайса. Мучил гугл, не помогло. Методом тыка тоже попробовал, на всякий случай. Подозрения мои в том, что я так и не включил нужные прерывания. Вот код. Если кто-нибудь подскажет, где я накосячил, буду признателен. 188.162.64.125 08:24, 22 июля 2014 (UTC) kosc

Так и есть, — в коде отсутствует разрешающая прерывание PCINT строка GIMSK |= (1 << PCIE). См. General Interrupt Mask Register – GIMSK. ATtiny2313/V: 8-bit Microcontroller with 2K Bytes In-System Programmable Flash. Проверено 22 июля 2014.Ivan Shmakov (ов) 09:23, 22 июля 2014 (UTC)
Некоторые общие замечания по коду.
  1. #define F_CPU лучше вынести в Makefile (точнее, — в командную строку GCC; -DF_CPU=1000000UL), или по меньшей мере заключить в #ifndef F_CPU, #endif. Это позволит пересобирать код для разных частот без изменения .c-файла. (См. Архитектура AVR в примерах/Простейшая программа.)
  2. Стандарт допускает объявление main как int main (). Аргументы argc и argv лишены смысла при программировании для AVR и ради ясности кода их следует опускать.
  3. Функции setNumber, setDigit, setPower можно объявить как static — локальные для данного «модуля». Такой прием позволяет избежать конфликтов имен в более сложных программах, состоящих из нескольких модулей (.c-файлов.) Кроме того, их можно разместить в файле в таком порядке, что вызываемая функция всегда будет стоять перед вызывающей, — что сделает ненужными отдельные объявления этих функций.
  4. BTW, «верблюжий регистр» (namesLikeThis) в C используется редко; обычно «слова» разделяются _ (like_this_one.)
  5. Наконец, код в целом следует переписать для использования управляемого прерываниями «цикла событий.» В этом случае, отпадет необходимость в «холостых циклах» (_delay_ms.) Примеры можно найти в данном практикуме.
Ivan Shmakov (ов) 09:37, 22 июля 2014 (UTC)