Сообщение от
Жорж
вообще, если не влом накидай плз полезных ссылок как это все программируется, ну типа введение для чайников )))
Ммм... мне довольно сложно тут что-то советовать, т.к. я изначально имел некий навык программирования под ПК (на паскале, C++ и ассемблере). Принципы программирования для любого процессора - общие. У МК основное отличие от ПК в том, что абсолютно всё надо делать самому (нет никакого управления памятью, операционки, драйверов и т.д.).
В общем, я учебниками почти не пользовался, а сразу стал читать описание ассемблера для нужных мне МК. Разобравшись с набором команд процессора, перешел к даташитам - там описано, как пользоваться конкретной периферией. Ну и старшие коллеги на работе помогали.
Дальше я буду говорить конкретно про архитектуру AVR (мне она больше всех нравится из 8-битных, т.к. там почти ничего не сделано перректально
, и Atmel её активно развивает).
Сайт производителя, раздел "продукты":
http://www.atmel.com/products/avr/de...rce=global_nav
Современных 8-битных семейств сейчас 3: tinyAVR, megaAVR, AVR XMEGA (выбираем в меню слева). Всякие AT90 и прочее лучше не трогать - потеря времени, т.к. они считаются устаревшими.
На сайте всё есть в открытом доступе - даташиты, всякие полезные документы с советами по применению, ПО AVR Studio (официальная бесплатная среда разработки) и т.д.
AVR Studio я использовал, когда учился писать на ассемблере. Сейчас я пишу на C в среде под названием IAR:
http://www.iar.com/website1/1.0.1.0/107/1/ (она уже конечно платная, но...
).
На ассемблере целесообразно писать под МК, у которых мало памяти программ. Машинный код получается компактнее.
Сейчас я в основном пишу под МК с большим объемом памяти (например, ATmega128 - 128 кбайт памяти программ). Тут можно спокойно писать на C, не боясь, что памяти не хватит.
На русском вводные руководства легко ищутся в гугле, например "AVR программирование", "AVR организация памяти", "AVR самодельный программатор" и т.д. Но чтобы писать что-то сложное, без чтения оригинальных даташитов не обойтись. Они очень подробны, хорошо структурированы, и если английский на достаточном уровне - всё изучается просто.
Я бы советовал начать с ассемблера. Нужно в первую очередь понять структуру памяти (сколько типов памяти в процессоре, какая для чего нужна, как в них читать/писать, для чего нужны регистры и т.д.).
Далее сам ассемблер - ознакомиться с перечнем команд, понять, для чего каждая из них обычно используется (как организовать циклы, условные переходы, умножение больших чисел и прочие часто применяемые мелкие "шаблоны").
Третий шаг - ознакомление с периферией. Надо написать на ассемблере N-ое кол-во простых, но хорошо работающих прошивок, работающих с различными устройствами - шинами передачи данных, АЦП, компараторами, таймерами, ШИМ, EEPROM и т.д.
Когда на ассемблере писать станет скучно (точнее, мутроно, т.к. на каждое действие нужно писать много букв, а чем больше пишешь - тем сложнее и навороченнее становятся прошивки), можно переходить на С. Это значительно ускоряет процесс написания, и чтения программ. Потом через полгода не нужно будет запасаться ящиком водки, чтобы понять "а что это я тут понаписал" (хватит пары бутылок
).
Ну и немного про сами контроллеры.
Семейство tiny - самое простое. У них маленькие корпуса (мало выводов), поэтому мало периферийных устройств (шины UART, I2C, SPI, АЦП, ШИМ и т.д. - все это считается периферией), малый объем всех типов памяти. Эти контроллеры как раз подходят для простейших автоматических задач типа нашей. Плюсы - компактность и низкое потребление.
Семейство mega - тут просто всего больше.
XMEGA - новое семейство, отчасти пришедшее на замену старшим моделям mega. Новый функционал, гораздо более удобный процесс разработки, снижено энергопотребление.
[свернуть]