AVR. Учебный курс. Архитектура.Print This Post

Автор DI HALT
Опубликовано 02 июля 2008 
Рубрики: 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, а также в других современных контроллерах.

Еще бывают встроенные 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. Учебный курс. Архитектура.»


  1. Beams 16 июля 2008 20:18

    Вопрос возник по этому абзацу:
    Блок регистров (РОН), он же регистровый файл.

    Если у нас 32 Регистра по 8 бит, то как регистровая пара образует 32 разряда?
    Мои представления подсказывают что получается 16 разрядов, но я могу быть не прав.

    Прошу внести ясность :)

    DI HALT

    Точно бля, косяк. В запаре был. Щас поправлю. да адресация там 16ти разрядная.


  2. Beams 16 июля 2008 20:35

    И в догонку…

    В первом абзаце:
    EEPROM это энергонезависимая память, что то вроде flash памяти, только допускает куда больше циклов перезаписи.

    Дальше по тексту
    EEPROM или энергонезависимая память…Используется, например, для складирования каких нибудь логов или другой какой собранной информации. Можно использовать как оперативку, но запись в нее осуществляется довольно медленно, а главное число циклов перезаписи порядка 100 000 раз, что не слишком много, если пользоваться ей десятки и сотни раз в секунду.

    Хотя, с оперативной памятью, исходя из первой цитаты, дела обстоят ещё более плачевно, но её не смотря на это используют как оперативную память.

    Думаю уместно привести сводную таблицу по циклам перезаписи скорости и объёму, но я могу ошибатся.

    DI HALT

    Не вижу проблемы. В первом случае идет речь о EEPROM и во втором о EEPROM где противоречие?

    Beams

    Описано что EEPROM допускает больше циклов перезаписи чем flash (ROM), при то что циклов перезаписи EEPROM (100 000) не позволяет использовать её в качестве ROM.

    Beams

    Тоесть следуя аналогии можно предположить что Flash имеет менне 100 000 циклов перезаписи.

    PS можно добавить тыкалку чтобы редактировать сообщение, а то я с первого раза не могу сформулировать, точнее могу но потом оказывается что сформулировал всё правильно, но не то что хотел сказать.

    Beams

    А….вот ещё случайно нажал не туда :)

    Тоесть следуя логике написанного можно предположить что Flash имеет менне 100 000 циклов перезаписи (которых ничтожно мало для ROM).

    Вопрос зачем использовать Flash для ROM ?

    DI HALT

    Flash разная бывает. Та что в контроллерх в качестве ROM перешивается всего несколько сот раз. Та что на флешках бытовых примерно 1000 циклов перезаписи.

    Ты часом не путаешь RAM и ROM? RAM это обычно оперативка, память с произвольным доступом как на чтение так и на запись. ROM это память только на чтение. Точнее записать то ее можно (тот же флеш) но это требует другой энергетики и в обычно режиме контроллером не используется (точнее используется, но крайне редко, в случаях Boot loader загрузки)

    Beams

    Конечно я про RAM…

    В порыве страсти перепутал букву. Пересмотри пожалуйста всё с учётом того что я писал про RAM.

    DI HALT

    Ну смотри. Конечно флеш в качестве оперативки юзать крайне неразумно. Сшаркивается быстро (хотя может щас придумали какую нибудь более износостойкую память), но если надо хранить какие нибудь переменные ,которые в принципе не нуждаются в сохранении, но которые меняются редко. Скажем раз в день. То их можно и в ЕЕПРОМ сунуть без особого вреда. Но эт на случай если основная ОЗУ забита уже донельзя. У меня на практике такая лажа была только пару раз.

    Beams

    ок понял, я не прав, прав не я :)

    Вот она коллизия в чистом виде (пить надо меньше, спать надо больше) интерпретатор поломался.

    Я из опуса уяснил что flash используется как RAM, виноват.


  3. Beams 16 июля 2008 20:50

    PS. О том как я сюда…

    На сайте http://www.dihalt.ru есть ссылка , как я на http://www.dihalt.ru
    Итог ответа Яндекса на Di Halt, почему такой запрос …
    Потому что работать на работе не интересно :)

    Ну и … Токс рекомендовал почитать на досуге, досуг появился.
    Да и … мелькать стало часто имя на страницах не без известного “бульварного чтива” (автор суждения строкою выше) имя, что ещё больше стимулировало интерес.

    Почему интересуюсь…Автоматизатор всё таки, хоть и в процессе обучения…ещё один вечный студент. (это не уже не первое образование)

    DI HALT

    Автоматчег? Гы, коллега! Я тоже автоматику заканчивал.

    Beams

    Я на 4 курсе Курганского Государственного Университета :)

    Только вот обманули меня немного.

    Автоматизация технологических процессов и производств нефтяной и газовой промышлености, я как дурак ждал когда нам начнут про микроконтроллеры, а нам всё задвижки да клапаны…

    Решил твёрдо освоить микроконтроллеры самостоятельно, и вот с этим желанием совпало рождение такого прекрасного проэкта.

    PS

    Только бы не загнулась всё на середине как у Калашникова…

    DI HALT

    У нас контроллеры тоже слабо. Все больше на аналоговую автоматику упирали. И только на 5м курсе пошли PLC контроллеры и микропроцессорные системы.


  4. Beams 16 июля 2008 22:31

    Дорогой Артемий поправьте пожалуйста строку

    “Оповещать о новых комментариев по почте”

    помоему она не согласована :)

    DI HALT

    Да тут много еще косяков. Так что править и править. Со временем поправим.


  5. Beams 16 июля 2008 22:42

    А ещё я честно не понял зачем ссылка администрирование, да ещё и весь движок на ладони с блогом разработчиков (если пройти по ссылке)?…

    Или я после регистрации стал богом :) или это не для меня регистрация была…

    DI HALT

    Це не движок, а твоя персональная админко. Да это стандартная вордпрессовская шняга. Ты просто юзером зарегился. Можешь свой профайл ковырять, пероснальное отображение сайта себе настроить.

    Beams

    Хорошо а мне не дают по ссылочкам тыкать говорят я не администратор :)


  6. Beams 16 июля 2008 23:05

    Только не бейте за флуд :)

    DI HALT

    Да какой нахрен флуд. Тут еще никого нету, вот будут юзеров побольше, тогда да, буду за порядком следить. А щас это дружеская беседа.

    Beams

    Безумно рад такому прекрасному проекту, что получится…

    Поживём - увидим, доживём - узнаем, а если переживём - то обязательно напъёмся!!!

    С удовольствием окажу посильную помощь, если таковой не требуется буду доблестным флудерастом :)


  7. NTRNO 21 июля 2008 9:54

    Уважаемый авторб подскажите в чем проблема компиляции при такой конструкции…
    Только начал изучать…
    Ниже кусок учебного примера который должен обнулять регистры с 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 ;

    DI HALT

    Ну так, а что ты хотел? Пытаешься адресовать ячейку с 16ти разрядной адресацией регистром ZH, который восмиразрядный. Да и засунуть в эту восьмразрядную ячейку пытаешься шестнадцатиразрядную регистровую пару. Вот у тебя компилер и офигевает от твоей наглости.

    Лезем в даташит на АТ90S1200 и глядим:

    ST Z, Rr ;Store Register Indirect (Z) ← Rr

    Поменяй операнды местами и будет тебе счастье.

    ST Z,ZH ; Должно сработать.

    Внимательней!

    Кстати, если потом, когда нибудь, надо будет тебе обнулить большой массив, не вздумай юзать этот пример. Гляди, у тебя в качестве нуля юзается ZH, а он нулем будет только первые 256 байт ,потом инкремент индексного регистра дойдет и до него.

    NTRNO

    Классно, когда есть кому помочь!! Пример взят букву в букву из книги :)
    Про то что, этот пример имеет недостаток в книге указано, но то что в книге будет не на своих местах стоять ZH и Z я не подозревал, отсюда и был вопрос что я делаю не так :)

    Спасибо!

    DI HALT

    А не стоит доверять безоговорочно книгам :)))) Там ляпы бывают и похлеще. Авторы же пишут примеры из головы и опечатки тут не редкость.

    FAndrey

    Я бы сказал резче недоверяй ничему что не проверил :)
    А в книгах как правильно заметили куча ляпов и от авторов и от редакторов и от наборшиков. а обшем примеры надо применять крайне обдуманно.

    Hryam

    Я так понимаю это книжка Джона Мортона AVR вводый курс. Там вообще много ошибок. я тоже с неё начал изучать МК. Скачал сначала перевод там уйма ошибок потом скачал оригинал, там тоже есть ошибки но меньше…


  8. Dghost 05 Сен 2008 12:13

    Хорший проект, автору респект!Нашел его случайно по нику автора после прочтения известного журнала, который выписываю уже несколько лет.
    Здесь все описано доступным языком! Не все конечно понимаю, но пока впитываю знания как губка в разных областях(электроника, кодинг, архитектура мк и тд.) и уже многие термины на слуху и общая картина проясняется!
    Вот собираюсь завтра идти в радио магазин за всем всем всем :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. Что скажите?

    DI HALT

    L298 это то же самое что и L293 НО раза в 4 мощней :) Так что она полюбому лучше. НО! К ней еще нужны и диоды. Так что купи 8 диодов Шоттки на ток в 1А и впаяй их как показано у меня на схеме.

    По поводу МК… возьми лучше АТМега168 она пофаршированней, а по корпусу полностью совместима с АТМега8. Я роботу скоро апгрейд сделаю :) Заменив процессор, не меняя платы. Если денех не жалко, все же вдвое дороже она вроде бы.

    А тини2313 тоже возьми, клевая вещь.


  9. Dghost 05 Сен 2008 14:14

    Как оперативно!Спасибо за ответ, с l298n понятно( кстати что означает буква n?)
    А мк такого как я понял в прайсе нет((( ( в моем списке его же нет? :))
    Из того что я написал какие лучше взять?

    DI HALT

    Тада лучше 88 возьми. в нем фарша больше.

    N.. эээ точно не помню, по моему тип корпуса.

    Кстати, если захочешь порулить шаговиком, то возмьи L297 еще до кучи.


  10. Dghost 05 Сен 2008 16:42

    Спасибо за советы, еще вопрос - где брать моторчики, шд?
    как они маркируются?
    а то в прайсе искал - не нашел ничего подобного….
    может машинку китайскую купить? если да то какую (дешевую)? )))
    может кто знает конкретное название?

    DI HALT

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

    DI HALT

    В китайских машинках стоят говеные моторы. Лучше в магнитофонах.


  11. Dghost 05 Сен 2008 23:33

    Кстати вопрос какую взять мс из предложенных?
    _MAX232CWE-T - 49.00
    _MAX232D PBF - 26.00
    _MAX232СРЕ - 29.50

    DI HALT

    они отличаются только корпусом. Бери ту которую тебе удобней будет паять.

    Скорей всего тебе будет нужна D как я полагаю, это DIP корпус.


  12. Granit 25 Окт 2008 17:31

    DI HALT - и я автоматчик))) Beams - я тоже учусь в Курганском Государственном Университете на Автоматизации Технлогических Процессов в производстве. Правда я на втором курсе. Также интересуюсь микроконтроллерами, но применительно в робототехнике=) Приятно узнать что такой хороший сайт сделал автоматчик;) Спасибо, всё очень ясно расписано=)


  13. outsider 03 Дек 2008 4:48

    Совсем ничего нет про fuse-биты. Где лежат, как управляются, на что влияют. Как раз сейчас сижу пытаюсь при помощи avrdude выставить сменить у атмеги8 частоту со штатной 1Мгц хотя бы на 4, а лучше на 8. В даташите либо плохо ищу, либо информация неполная 8(

    DI HALT

    В даташите есть все. ПРо фуз биты я уже писал.

    outsider

    Тогда извиняюсь. Пошел снова рыскать.

    Ridik911

    смотри
    например атмега8
    открываем
    кликаем по странице с названием “System Clock and Clock Options”
    далее “Clock Sources” и изучаем (совместно с Сократом:))
    вот впринципе и все.. аналогично и прочие АВР


  14. RMiSe 15 Апр 2009 23:14

    Здравствуйте DI HALT!
    Не подскажите чем отличается ATMmega8535L-8AI от ATMega8535-16PU, кроме максимальной частоты?
    Заранее благодарен за ответ.

    DI HALT

    A - корпус SOIC (поверхностный монтаж под паяльник на ура)
    P - корпус PDIP (монтаж в дырки)
    M (не уверен) - MLF корпус (поверхностный монтаж - без фена не соваться)
    U - коммерческий температурный диапазон (0…50с)
    I - промышленный температурный диапазон (-30…80С)

    Если паяльник в руки взял вот недавно, то бери PDIP его паять НАААМНОГО проще.

    RMiSe

    А в плане программирования?

    DI HALT

    Никакой.

    Кстати, Мега8535 изнутри практически ничем не отличается от Мега8 на которой у меня тут все примеры заточены. Там разница только в том, что у мега8 ног поменьше, да таблица векторов прерываний чуток отличается. А так один в один.

    RMiSe

    А вы интернет магазином пользовались (покупка МК или других радиодеталей)?

    DI HALT

    Пользовался и не раз. Доставка только кусачая очень.

    RMiSe

    А каким? Просто их куча, и к каждому доверие нет.

    DI HALT

    Платан
    ЭФО
    Терраэлектроника
    это в каких покупал.


  15. johnspace 30 Окт 2009 15:02

    Отличный сайт, пожалуй, лучше и не встречал))) Может подскажете как новичку возможно ли снятие дорожек с микросхем и каким образом???
    C Ув. JohNSpace


  16. 0sergey0 11 Ноя 2009 2:35

    Комрад, вопрос ты плантых консультаций по построению схем на AVR не оказываешь? Хорошему человеку по диплому нужно со знающим человеком вопрос решить…

    Может кого-нибудь рекомендуешь?


  17. Maximka 19 Фев 2010 11:50

    Добрый день! Вливаюсь в вашу дружную компанию. Читаю “в запой” две недели, но вот и появились вопросы. Как я понял в памяти МК с 0 адреса идут РОН, за ними РВВ, и потом такие же регистры для настройки остальных перифирийных устройств? Таких как таймеры, счетчики, компараторы…?

    Maximka

    и в догонку, а регистр SREG? Это какой то общий регистр? Не относящийся ни к перифирии ни к чему? И какие вообще бывают регистры?

    DI HALT

    SREG это регистр флагов. В нем стоят хитрые биты по которым можно определить результат операции предыдущей команды. Например вычитаем и появился нулевой результат - возникает флаг Z и так далее. Там много комбинаций. И все команды переходов условных делаются на основе этого регистра.

    DI HALT

    РВВ это и есть регистры переферийных устройств.

    Т.е. фактически вся память делится на
    РОН
    регистры переферии и ОЗУ.

    Maximka

    Ё-маё!! Понял! :) Дело в том, что у Евстифеева регистры РВВ, во вступлении в тему, расписаны как регистры для физических Входов Выходов (Портов) это и внесло непонятку.
    Та-а-а-ак, а все таки про регистр SREG, это наверно регистр АЛУ? (в него заносятся значения математических результатов.)

    DI HALT

    Это регистр состояния процессора. Почитай внимательней. Результат работы АЛУ остается в первом аргументе команды.

    А sreg это регистр флагов. Прочитай описание его битов и поймешь что это и зачем.


  18. 200_OK 21 марта 2010 20:27

    Di Halt, поправь опечатки плиз - в тексте несколько раз встречается регистр R32.
    Как я понимаю, всего есть 32 РОН (R0-R31). ( Или я что-то не понимаю?)

    P.S.
    Сайт - супер!

    DI HALT

    Спасиб, поправил.

Оставьте свой отзыв

Вы должны войти, чтобы оставлять комментарии.


Материалы сайта являются авторскими. Копирование и публикация материалов без активной ссылки на первоисточник запрещено.

Реклама: