AVR. Учебный курс. Архитектура.
Автор DI HALT
Опубликовано 02 июля 2008
Рубрики: AVR. Учебный курс
Метки: AVR, Микроконтроллер
Итак, камрад, прежде чем ты начнешь работать с контроллером, то неплохо бы тебе узнать что у него внутри.
Поэтому дам тебе краткий ликбез по архитектуре контроллера AVR.
Основой любого микроконтроллера является вычислительное ядро. Во всех моделях AVR оно практически одинаковое и это большой плюс. Именно единство архитектуры обеспечивает легкую переносимость кода.
Итак, что же у нас в основе микроконтроллера, взгляни на диаграмму:
Ядро состоит, в первую очередь, из памяти программ (Flash Programm Memory) и Арифметико-логического устройства (ALU), блока управления (на диаграмме не показан) и программного счетчик (Program Counter). Также есть тактовый генератор, задающий импульсы относительно которых работают блоки микроконтроллера. Тактовый генератор можно сравнить с маятником и собачкой в будильнике: маятник туда сюда, собачка тикает по одному зубчику — шестеренки крутятся. Встала собачка — встал весь будильник.
При старте микроконтроллера значение программного счетчика равно 0000 - это адрес первой команды в нашей flash ROM. Микроконтроллер хватает оттуда два байта (код команды и ее аргументы) и отдает на выполнение в декодер команд (Instruction Decoder).
А дальнейшая судьба зависит от команды. Если это просто команда работы с какими-либо действиями, то они будут выполнены, а на следующем такте значение программного счетчика будет увеличено и из следующей пары ячеек памяти будут взяты еще два байта команды и также отправлены на выполнение.
Все интересней становится когда встречается команда перехода. В этом случае в Программный счетчик загружается адрес указанный в команде (абсолютный переход) или его значение увеличивается не на 1, а на столько сколько нужно и на следующем такте микроконтроллер возьмет команду уже с нового адреса.
Декодер команд загребает команду и скармливает ее логике блока управления, который уже пинает все остальные блоки, заставляя их делать нужные действия в нужном порядке.
Вся математика и обработка делается посредством ALU. Это, своего рода, калькулятор. Он может складывать, вычитать, сравнивать, сдвигать разными способами, иногда делить и умножать (это считается круто, встречается редко).
В качестве промежуточных операндов используются 32 ячейки - Оперативные регистры общего назначения РОН. Доступ к этим ячейкам самый быстрый, а число операций с их содержимым наиболее богатое. В ассемблере регистры эти называются просто R0,R1,R2 … R31. Причем делятся они на три группы:
Младшие R0..R15
Обычные регистры общего назначения, но какие то ущербные. С ними не работают многие команды, например, такие как загрузка непосредственного числа. Т.е. нельзя, например, взять и присвоить регистру число. Зато можно скопировать число из любого другого регистра.
Старшие R16..R31
Полноценные регистры, работающие со всеми командами без исключения.
Индексные R26…R31
Шесть последних регистров из старшей группы особенные. В принципе, их можно юзать и как обычные регистры общего назначения. Но, кроме этого, они могут образовывать регистровые пары X(R26:R27), Y(R28,R29), Z(R30:R31) которые используются как указатели при работе с памятью.
ОЗУ
Кроме 32 регистров в микроконтроллере есть оперативная память. Правда не везде — в младших семействах AVR Tiny12 и Tiny11 оперативной памяти нет, так что приходиться вертеться в 32 ячейках.
Оперативная память это несколько сотен ячеек памяти. От 64 байт до 4килобайт, в зависимости от модели. В этих ячейках могут храниться любые данные, а доступ к ним осуществляется через команды Load и Store.
То есть нельзя взять, например, и прибавить к ячейке в памяти, скажем, единицу. Нам сначала сделать операцию Load из ОЗУ в РОН, потом в регистре прибавить нашу единицу и операцией Store сохранить ее обратно в память. Только так.
EEPROM
Долговременная память. Память которая не пропадает после выключения питания. Если Flash может содержать только код и константы, а писать в нее при выполнении ничего нельзя (Это память Read Only), то в ЕЕПРОМ можно сколько угодно писать и читать. Но в качестве оперативки ее особо не поюзаешь. Дело в том, что цикл записи в EEPROM длится очень долго — миллисекунды. Чтение тоже не ахти какое быстрое. Да и число циклов перезаписи всего 100 000, что не очень много в масштабах работы оперативной памяти. ЕЕПРОМ используется для сохранения всяких настроек, предустановок, собранных данных и прочего барахла, что может потребоваться после включения питания и в основном на чтение. Эта память есть не во всех моделях AVR, но в подавляющем их большинстве.
Периферия
Периферия это внутренний фарш микроконтроллера. То что делает его таким универсальным. ALU, RAM, FLASH и Блок управления это как в компе Мать, Проц, Память, Винт — то без чего комп даже не запустится толком. То периферия это уже как сетевуха, видяха, звуковая карта и прочие прибамбасы. Они могут быть разными, разной степени крутости и навороченности, а также комбинироваться в разном порядке.
Именно по наличию на кристалле той или иной периферии происходит выбор микроконтроллера под задачу.
Периферии всякой придумано великое множество, всего я наверное даже не опишу. Но дам основной набор присутствующий почти во всех AVR, а также в других современных контроллерах.
- Порты ввода вывода — то без чего невозможно взаимодействие контроллера с внешним миром. Именно порты обеспечивают то самое “ножкодрыгательство” управляющее другими элементами схемы. Захотели получить на выводе единичку, дали приказ соответствующему порту — получите, распишитесь. Захотели узнать какой там сигнал на входе? Спросили у соответствующего порта — получили. Почти все выводы микроконтроллера могут работать в режиме портов ввода-вывода.
- UART/USART приемопередатчик — последовательный порт. Работает по тому же асинхронному протоколу что и древние диалапные модемы. Старый как мир, надежный и простой как кувалда. Подходит для связи с компьютером и другими контроллерами.
- Таймеры/счетчики — задача таймеров отсчитывать тики. Сказал ему отсчитать 100 тактов процессора — он приступит и как досчитает подаст сигнал. Им же можно подсчитывать длительность входных сигналов, подсчитывать число входных импульсов. Да много чего умеет таймер, особенно в AVR. Подробное описание функций таймера занимает добрых три десятка страниц в даташите. При том, что таймеров самих существует несколько видов и фарш у них разный.
- АЦП - аналоговый вход. Есть не у всех микроконтроллеров, но вещь полезная. Позволяет взять и замерить аналоговый сигнал. АЦП это своеобразный вольтметр.
- I2C(TWI) интерфейс — последовательная шина IIC. Через нее осуществляется связь с другими устройствами. На IIC можно организовать своеобразную локальную сеть из микроконтроллеров в пределах одного устройства.
- SPI — еще один последовательный протокол, похожа на IIC, но не позволяет организовывать сети. Работает только в режиме Мастер-Ведомый. Зато ОЧЕНЬ быстрая.
- Аналоговый Компаратор — еще один аналоговый интерфейс. Но, в отличии от АЦП, он не замеряет, а сравнивает два аналоговых сигнала, выдавая результат А>B или A<B в двоичном виде.
- JTAG/DebugWire — средство отладки, позволяет заглянуть в мозги контроллера с помощью специального адаптера, например такого, какой встроен в мою демоплату Pinboard. Иной раз без него как без рук.
- PWM — ШИМ генератор. Вообще это не отдельный блок, а дополнительная функция таймера, но тоже полезная. С помощью ШИМ генератора легко задать аналоговый сигнал. Например, менять яркость свечения светодиода или скорость вращения двигателя. Да мало ли куда его применить можно. Число каналов ШИМ разное от контроллера к контроллеру.
Еще бывают встроенные USB, Ethernet интерфейсы, часы реального времени, контроллеры ЖКИ дисплеев. Да чего там только нет, моделей микроконтроллеров столько, что задолбаешься только перечислять.
Взаимодействие ядра с периферией
Ядро одно на всех, периферия разная. Общение между ними происходит через память. Т.е. у периферии есть свои ячейки памяти — регистры периферии. У каждого периферийного устройства их не по одной штуки. В этих регистрах находятся биты конфигурации. В зависимости от того как эти биты выставлены в таком режиме и работает периферийное устройство. В эти же регистры нужно записывать данные которые мы хотим выдать, например, по последовательному порту, или считывать данные которые обработал АЦП. Для работы с периферией есть специальные команды IN и OUT для чтения из периферии в регистр РОН и записи из регистра РОН в периферию соответственно.
Поскольку ядро одинаковое, а периферия разная, то при переносе кода на другую модель микроконтроллера надо только подправить эти обращения так как название периферийных регистров от модели к модели может чуток отличаться. Например, если в контроллере один приемопередатчик UART то регистр прием данных зовется UDR, а если два, то у нас есть уже UDR0 и UDR1. Но, в целом, все прозрачно и логично. И, как правило, портирование кода с одного МК на другой, даже если он написан на ассемблере, не составляет большого труда. Особенно если он правильно написан.
Как узнать что есть в конкретном микроконтроллере?
Для этого на каждый МК есть даташит - техническая документация. И вот там, прям на первой странице, написано что почем и как. Вот тебе пример, даташит на Мегу16 с моим закадровым переводом :) Жирным шрифтом помечены опции которые я гляжу в первую очередь, как наиболее интересные для меня, остальное, как правило, присутствует по дефолту.
Features (фичи!)
• High-performance, Low-power AVR® 8-bit Microcontroller
(понтовая экономичная архитектура AVR)
• Advanced RISC Architecture
(просто офигенная вещь для рисковых чуваков!)
– 131 Powerful Instructions – Most Single-clock Cycle Execution
(131 крутая и быстрая команда! )
– 32 x 8 General Purpose Working Registers
(32 восьми разрядных регистра - те самые R0…R31)
– Fully Static Operation
(Полностью статические операции, т.е. тактовая частота может быть хоть 1 импульс в год)
– Up to 16 MIPS Throughput at 16 MHz
(скорость выполнения до 16миллионов операций в секунду!)
– On-chip 2-cycle Multiplier
(а числа умеем множить за два такта! Это правда круто, народ!)
• High Endurance Non-volatile Memory segments
– 16K Bytes of In-System Self-programmable Flash program memory
(памяти хватит набыдлокодить на 16кб кода)
– 512 Bytes EEPROM 8-bit
(и нажрать на века 512 байт мусора в ЕЕПРОМ)
– 1K Byte Internal SRAM
(оперативки 1кб, кому там 2Гигабайт не хватает? Программировать не умеете! =) Тут и 64 байтов за глаза хватает. Помните Билла Гейтса и его “640кб хватит всем!” он знал о чем говорил :)
– Write/Erase Cycles: 10,000 Flash/100,000 EEPROM Microcontroller
(перешивать флеш можно 10тыщь раз, еепром 100тыщь раз. Так что можешь не бояться экспериментировать)
– Data retention: 20 years at 85°C/100 years at 25°C(1)
(Если законсервируешь свой будильник на AVR, то твоих правнуков он еще и через 100 лет порадует)
– Optional Boot Code Section with Independent Lock Bits
In-System Programming by On-chip Boot Program
True Read-While-Write Operation
(поддержка бутлоадеров. Удобная вещь, позволяет прошиваться без программаторов)
– Programming Lock for Software Security In-System
(если жадный и умный, то можешь закрыть от посторонних прошивку и фиг кто выкрадет твои секреты)
• JTAG (IEEE std. 1149.1 Compliant) Interface
– Boundary-scan Capabilities According to the JTAG Standard Programmable
– Extensive On-chip Debug Support
– Programming of Flash, EEPROM, Fuses, and Lock Bits through the JTAG Interface Flash
(Отладочный интерфейс JTAG и его фичи)
• Peripheral Features
(А вот, собственно и периферия пошла)
– Two 8-bit Timer/Counters with Separate Prescalers and Compare Modes
(два таймера 8ми разрядных, с кучей всяких режимов разных.
– One 16-bit Timer/Counter with Separate Prescaler, Compare Mode, and Capture Mode ATmega16
(один 16ти разрядный таймер счетчик, с кучей всяких примочек и фишек)
– Real Time Counter with Separate Oscillator
(таймер может тикать от отдельного генератора, удобно если хочешь сделать часы)
– Four PWM Channels ATmega16L
(Четыре ШИМ канала — на тех же таймерах)
– 8-channel, 10-bit ADC
(восьмиканальный 10ти разрядный АЦП. Фичи его ниже)
8 Single-ended Channels
(можно замерять по очереди сразу 8 разных напряжений)
7 Differential Channels in TQFP Package Only
(7 дифференциальных каналов. Правда только в корпусе TQFP т.к. ног у него больше)
2 Differential Channels with Programmable Gain at 1x, 10x, or 200x
(два дифференциальных канала с программируемым усилением)
– Byte-oriented Two-wire Serial Interface
(Поддержка IIC с аппаратным кодированием байтов)
– Programmable Serial USART
(Последовательный интерфейс. Удобен для связи с компом)
– Master/Slave SPI Serial Interface
(SPI интерфейс, пригодится)
– Programmable Watchdog Timer with Separate On-chip Oscillator
(Спец таймер защиты от зависаний)
– On-chip Analog Comparator
(Тот самый компаратор)
• Special Microcontroller Features
(полезные свистоперделки)
– Power-on Reset and Programmable Brown-out Detection
(защита от косяков в работе при пониженном напряжении ака севшие батарейки)
– Internal Calibrated RC Oscillator
(А еще можно сэкономить 20рублей на покупке внешнего кварца. Он нафиг не нужен! :) И это круто!)
– External and Internal Interrupt Sources
(Есть внешние прерывания. Очень удобная вещь)
– Six Sleep Modes: Idle, ADC Noise Reduction, Power-save, Power-down, Standby
and Extended Standby
(Дофига режимов энергосбережения)
• I/O and Packages
– 32 Programmable I/O Lines
– 40-pin PDIP, 44-lead TQFP, and 44-pad QFN/MLF
(число полезных ножек, тем самых вводов выводов)
• Operating Voltages designs.
– 2.7 - 5.5V for ATmega16L
– 4.5 - 5.5V for ATmega16
(Питающие напряжения. Помните я говорил про низковольтные серии — вот они, во всей красе)
• Speed Grades
– 0 - 8 MHz for ATmega16L
– 0 - 16 MHz for ATmega16
(А это максимальные частоты для разных серий. Низковольтные лажают. Впрочем, они подвержены разгону)
• Power Consumption @ 1 MHz, 3V, and 25°C for ATmega16L
– Active: 1.1 mA
– Idle Mode: 0.35 mA
– Power-down Mode: < 1 µA
(Потребляемая мощность в разных режимах. 1мА даже в активном режиме это фигня. В 10 раз меньше самого тухлого светодиода)
Комментарии
61 комментариев на «AVR. Учебный курс. Архитектура.»
Оставьте свой отзыв
Вы должны войти, чтобы оставлять комментарии.





Вопрос возник по этому абзацу:
Блок регистров (РОН), он же регистровый файл.
Если у нас 32 Регистра по 8 бит, то как регистровая пара образует 32 разряда?
Мои представления подсказывают что получается 16 разрядов, но я могу быть не прав.
Прошу внести ясность :)
Точно бля, косяк. В запаре был. Щас поправлю. да адресация там 16ти разрядная.
И в догонку…
В первом абзаце:
EEPROM это энергонезависимая память, что то вроде flash памяти, только допускает куда больше циклов перезаписи.
Дальше по тексту
EEPROM или энергонезависимая память…Используется, например, для складирования каких нибудь логов или другой какой собранной информации. Можно использовать как оперативку, но запись в нее осуществляется довольно медленно, а главное число циклов перезаписи порядка 100 000 раз, что не слишком много, если пользоваться ей десятки и сотни раз в секунду.
Хотя, с оперативной памятью, исходя из первой цитаты, дела обстоят ещё более плачевно, но её не смотря на это используют как оперативную память.
Думаю уместно привести сводную таблицу по циклам перезаписи скорости и объёму, но я могу ошибатся.
Не вижу проблемы. В первом случае идет речь о EEPROM и во втором о EEPROM где противоречие?
Описано что EEPROM допускает больше циклов перезаписи чем flash (ROM), при то что циклов перезаписи EEPROM (100 000) не позволяет использовать её в качестве ROM.
Тоесть следуя аналогии можно предположить что Flash имеет менне 100 000 циклов перезаписи.
PS можно добавить тыкалку чтобы редактировать сообщение, а то я с первого раза не могу сформулировать, точнее могу но потом оказывается что сформулировал всё правильно, но не то что хотел сказать.
А….вот ещё случайно нажал не туда :)
Тоесть следуя логике написанного можно предположить что Flash имеет менне 100 000 циклов перезаписи (которых ничтожно мало для ROM).
Вопрос зачем использовать Flash для ROM ?
Flash разная бывает. Та что в контроллерх в качестве ROM перешивается всего несколько сот раз. Та что на флешках бытовых примерно 1000 циклов перезаписи.
Ты часом не путаешь RAM и ROM? RAM это обычно оперативка, память с произвольным доступом как на чтение так и на запись. ROM это память только на чтение. Точнее записать то ее можно (тот же флеш) но это требует другой энергетики и в обычно режиме контроллером не используется (точнее используется, но крайне редко, в случаях Boot loader загрузки)
Конечно я про RAM…
В порыве страсти перепутал букву. Пересмотри пожалуйста всё с учётом того что я писал про RAM.
Ну смотри. Конечно флеш в качестве оперативки юзать крайне неразумно. Сшаркивается быстро (хотя может щас придумали какую нибудь более износостойкую память), но если надо хранить какие нибудь переменные ,которые в принципе не нуждаются в сохранении, но которые меняются редко. Скажем раз в день. То их можно и в ЕЕПРОМ сунуть без особого вреда. Но эт на случай если основная ОЗУ забита уже донельзя. У меня на практике такая лажа была только пару раз.
ок понял, я не прав, прав не я :)
Вот она коллизия в чистом виде (пить надо меньше, спать надо больше) интерпретатор поломался.
Я из опуса уяснил что flash используется как RAM, виноват.
PS. О том как я сюда…
На сайте http://www.dihalt.ru есть ссылка , как я на http://www.dihalt.ru …
Итог ответа Яндекса на Di Halt, почему такой запрос …
Потому что работать на работе не интересно :)
Ну и … Токс рекомендовал почитать на досуге, досуг появился.
Да и … мелькать стало часто имя на страницах не без известного “бульварного чтива” (автор суждения строкою выше) имя, что ещё больше стимулировало интерес.
Почему интересуюсь…Автоматизатор всё таки, хоть и в процессе обучения…ещё один вечный студент. (это не уже не первое образование)
Автоматчег? Гы, коллега! Я тоже автоматику заканчивал.
Я на 4 курсе Курганского Государственного Университета :)
Только вот обманули меня немного.
Автоматизация технологических процессов и производств нефтяной и газовой промышлености, я как дурак ждал когда нам начнут про микроконтроллеры, а нам всё задвижки да клапаны…
Решил твёрдо освоить микроконтроллеры самостоятельно, и вот с этим желанием совпало рождение такого прекрасного проэкта.
PS
Только бы не загнулась всё на середине как у Калашникова…
У нас контроллеры тоже слабо. Все больше на аналоговую автоматику упирали. И только на 5м курсе пошли PLC контроллеры и микропроцессорные системы.
Дорогой Артемий поправьте пожалуйста строку
“Оповещать о новых комментариев по почте”
помоему она не согласована :)
Да тут много еще косяков. Так что править и править. Со временем поправим.
А ещё я честно не понял зачем ссылка администрирование, да ещё и весь движок на ладони с блогом разработчиков (если пройти по ссылке)?…
Или я после регистрации стал богом :) или это не для меня регистрация была…
Це не движок, а твоя персональная админко. Да это стандартная вордпрессовская шняга. Ты просто юзером зарегился. Можешь свой профайл ковырять, пероснальное отображение сайта себе настроить.
Хорошо а мне не дают по ссылочкам тыкать говорят я не администратор :)
Только не бейте за флуд :)
Да какой нахрен флуд. Тут еще никого нету, вот будут юзеров побольше, тогда да, буду за порядком следить. А щас это дружеская беседа.
Безумно рад такому прекрасному проекту, что получится…
Поживём - увидим, доживём - узнаем, а если переживём - то обязательно напъёмся!!!
С удовольствием окажу посильную помощь, если таковой не требуется буду доблестным флудерастом :)
Уважаемый авторб подскажите в чем проблема компиляции при такой конструкции…
Только начал изучать…
Ниже кусок учебного примера который должен обнулять регистры с R0 по R29
.device AT90S1200
.nolist
.include “C:\Program Files\Atmel\AVR Tools\AvrAssembler\Appnotes\1200def.inc”
.list
.org 0×0030
;===========================================
.def temp = r16
Start:
clr ZL ;
clr ZH ;
ClearLoop:
st ZH,Z ; На эту строку РУГАЕТСЯ!!!!
inc ZL ;
cpi ZL,30 ;
brne ClearLoop ;
rjmp Start ;
Ну так, а что ты хотел? Пытаешься адресовать ячейку с 16ти разрядной адресацией регистром ZH, который восмиразрядный. Да и засунуть в эту восьмразрядную ячейку пытаешься шестнадцатиразрядную регистровую пару. Вот у тебя компилер и офигевает от твоей наглости.
Лезем в даташит на АТ90S1200 и глядим:
ST Z, Rr ;Store Register Indirect (Z) ← Rr
Поменяй операнды местами и будет тебе счастье.
ST Z,ZH ; Должно сработать.
Внимательней!
Кстати, если потом, когда нибудь, надо будет тебе обнулить большой массив, не вздумай юзать этот пример. Гляди, у тебя в качестве нуля юзается ZH, а он нулем будет только первые 256 байт ,потом инкремент индексного регистра дойдет и до него.
Классно, когда есть кому помочь!! Пример взят букву в букву из книги :)
Про то что, этот пример имеет недостаток в книге указано, но то что в книге будет не на своих местах стоять ZH и Z я не подозревал, отсюда и был вопрос что я делаю не так :)
Спасибо!
А не стоит доверять безоговорочно книгам :)))) Там ляпы бывают и похлеще. Авторы же пишут примеры из головы и опечатки тут не редкость.
Я бы сказал резче недоверяй ничему что не проверил :)
А в книгах как правильно заметили куча ляпов и от авторов и от редакторов и от наборшиков. а обшем примеры надо применять крайне обдуманно.
Я так понимаю это книжка Джона Мортона AVR вводый курс. Там вообще много ошибок. я тоже с неё начал изучать МК. Скачал сначала перевод там уйма ошибок потом скачал оригинал, там тоже есть ошибки но меньше…
Хорший проект, автору респект!Нашел его случайно по нику автора после прочтения известного журнала, который выписываю уже несколько лет.
Здесь все описано доступным языком! Не все конечно понимаю, но пока впитываю знания как губка в разных областях(электроника, кодинг, архитектура мк и тд.) и уже многие термины на слуху и общая картина проясняется!
Вот собираюсь завтра идти в радио магазин за всем всем всем :D
В прайсе нашел почти все нужное, кроме микросхемы l293d, но там есть
L297 и L298n (105 руб.) . Подойдут ли они для простых роботов и экспириментов?
А из мк есть такие: ATmega8L-8PU (58 руб.), ATmega88-20PU(139 руб.), ATmega16-16PU(88 руб.), ATmega8515-16PU( 85 руб.), ATtiny2313-20PU(46 руб.),
ATtiny12L-4PU (39 руб.). Я думаю взять для начала :)) 2 ATmega8L-8PU и 2 ATtiny2313-20PU. Что скажите?
L298 это то же самое что и L293 НО раза в 4 мощней :) Так что она полюбому лучше. НО! К ней еще нужны и диоды. Так что купи 8 диодов Шоттки на ток в 1А и впаяй их как показано у меня на схеме.
По поводу МК… возьми лучше АТМега168 она пофаршированней, а по корпусу полностью совместима с АТМега8. Я роботу скоро апгрейд сделаю :) Заменив процессор, не меняя платы. Если денех не жалко, все же вдвое дороже она вроде бы.
А тини2313 тоже возьми, клевая вещь.
Как оперативно!Спасибо за ответ, с l298n понятно( кстати что означает буква n?)
А мк такого как я понял в прайсе нет((( ( в моем списке его же нет? :))
Из того что я написал какие лучше взять?
Тада лучше 88 возьми. в нем фарша больше.
N.. эээ точно не помню, по моему тип корпуса.
Кстати, если захочешь порулить шаговиком, то возмьи L297 еще до кучи.
Спасибо за советы, еще вопрос - где брать моторчики, шд?
как они маркируются?
а то в прайсе искал - не нашел ничего подобного….
может машинку китайскую купить? если да то какую (дешевую)? )))
может кто знает конкретное название?
Маркировку не помню. Отличить его просто - из него выходит четыре или шесть проводов. Это главный признак шаговика. Навыдирать можно из флопов 5дюймовых. В 3.5 они тоже есть, но там шаговик обычно одношарнирный и если его выдрать из родного шасси, то работать не будет, т.к. вал будет болтаться.
В китайских машинках стоят говеные моторы. Лучше в магнитофонах.
Кстати вопрос какую взять мс из предложенных?
_MAX232CWE-T - 49.00
_MAX232D PBF - 26.00
_MAX232СРЕ - 29.50
они отличаются только корпусом. Бери ту которую тебе удобней будет паять.
Скорей всего тебе будет нужна D как я полагаю, это DIP корпус.
DI HALT - и я автоматчик))) Beams - я тоже учусь в Курганском Государственном Университете на Автоматизации Технлогических Процессов в производстве. Правда я на втором курсе. Также интересуюсь микроконтроллерами, но применительно в робототехнике=) Приятно узнать что такой хороший сайт сделал автоматчик;) Спасибо, всё очень ясно расписано=)
Совсем ничего нет про fuse-биты. Где лежат, как управляются, на что влияют. Как раз сейчас сижу пытаюсь при помощи avrdude выставить сменить у атмеги8 частоту со штатной 1Мгц хотя бы на 4, а лучше на 8. В даташите либо плохо ищу, либо информация неполная 8(
В даташите есть все. ПРо фуз биты я уже писал.
Тогда извиняюсь. Пошел снова рыскать.
смотри
например атмега8
открываем
кликаем по странице с названием “System Clock and Clock Options”
далее “Clock Sources” и изучаем (совместно с Сократом:))
вот впринципе и все.. аналогично и прочие АВР
Здравствуйте DI HALT!
Не подскажите чем отличается ATMmega8535L-8AI от ATMega8535-16PU, кроме максимальной частоты?
Заранее благодарен за ответ.
A - корпус SOIC (поверхностный монтаж под паяльник на ура)
P - корпус PDIP (монтаж в дырки)
M (не уверен) - MLF корпус (поверхностный монтаж - без фена не соваться)
U - коммерческий температурный диапазон (0…50с)
I - промышленный температурный диапазон (-30…80С)
Если паяльник в руки взял вот недавно, то бери PDIP его паять НАААМНОГО проще.
А в плане программирования?
Никакой.
Кстати, Мега8535 изнутри практически ничем не отличается от Мега8 на которой у меня тут все примеры заточены. Там разница только в том, что у мега8 ног поменьше, да таблица векторов прерываний чуток отличается. А так один в один.
А вы интернет магазином пользовались (покупка МК или других радиодеталей)?
Пользовался и не раз. Доставка только кусачая очень.
А каким? Просто их куча, и к каждому доверие нет.
Платан
ЭФО
Терраэлектроника
это в каких покупал.
Отличный сайт, пожалуй, лучше и не встречал))) Может подскажете как новичку возможно ли снятие дорожек с микросхем и каким образом???
C Ув. JohNSpace
Комрад, вопрос ты плантых консультаций по построению схем на AVR не оказываешь? Хорошему человеку по диплому нужно со знающим человеком вопрос решить…
Может кого-нибудь рекомендуешь?
Добрый день! Вливаюсь в вашу дружную компанию. Читаю “в запой” две недели, но вот и появились вопросы. Как я понял в памяти МК с 0 адреса идут РОН, за ними РВВ, и потом такие же регистры для настройки остальных перифирийных устройств? Таких как таймеры, счетчики, компараторы…?
и в догонку, а регистр SREG? Это какой то общий регистр? Не относящийся ни к перифирии ни к чему? И какие вообще бывают регистры?
SREG это регистр флагов. В нем стоят хитрые биты по которым можно определить результат операции предыдущей команды. Например вычитаем и появился нулевой результат - возникает флаг Z и так далее. Там много комбинаций. И все команды переходов условных делаются на основе этого регистра.
РВВ это и есть регистры переферийных устройств.
Т.е. фактически вся память делится на
РОН
регистры переферии и ОЗУ.
Ё-маё!! Понял! :) Дело в том, что у Евстифеева регистры РВВ, во вступлении в тему, расписаны как регистры для физических Входов Выходов (Портов) это и внесло непонятку.
Та-а-а-ак, а все таки про регистр SREG, это наверно регистр АЛУ? (в него заносятся значения математических результатов.)
Это регистр состояния процессора. Почитай внимательней. Результат работы АЛУ остается в первом аргументе команды.
А sreg это регистр флагов. Прочитай описание его битов и поймешь что это и зачем.
Di Halt, поправь опечатки плиз - в тексте несколько раз встречается регистр R32.
Как я понимаю, всего есть 32 РОН (R0-R31). ( Или я что-то не понимаю?)
P.S.
Сайт - супер!
Спасиб, поправил.