Программирование Си
- Сообщения: 218
- Зарегистрирован: Вс мар 18, 2012 09:31:23
Добрый день. Вот собрался изучить язык Си, для программирования МК типа Atmega ну и т.п. Не знаю с чего начать, где взять простейший учебник по программированию микроконтроллеров, что значит 0xFF и т.п. там не описывается... Короче мне нужен учебник чтобы было всё понятно даже такому тупому существу как я.... Есть ли такие и с чего начать?
- Реклама
http://avr123.nm.ru/01.htm Настоятельно рекомендую и пользуясь случаем, еще раз благодарю автора этого изумительно изложенного труда !!!
Автору этого, с позволения сказать, "труда" нужно глаза выколоть за абсолютно нечитабельный и невоспринимаемый текст и скачущие шрифты.
Рекомендую книгу Лебедева "CodeVision AVR. Пособие для начинающих"
Все, что касается CVAVR, можно пропустить, а вот азы программирования МК AVR на Си там изложены великолепно.
Рекомендую книгу Лебедева "CodeVision AVR. Пособие для начинающих"
Все, что касается CVAVR, можно пропустить, а вот азы программирования МК AVR на Си там изложены великолепно.
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

Есть очень толковый учебник по программированию встроенных систем на C: Michael Barr, Anthony Massa. Programming Embedded Systems: With C and GNU Development Tools.Nikitka писал(а):мне нужен учебник чтобы было всё понятно даже такому тупому существу как я.... Есть ли такие и с чего начать?

Судя по вопросу по 0xFF, не мешало бы также подтянуть основы. Рекомендую пару учебников:
Steven F. Barrett, Daniel J. Pack. Microcontrollers Fundamentals for Engineers and Scientists

Steven F. Barrett, Daniel Pack. Atmel AVR Microcontroller Primer: Programming and Interfacing

Книги написаны достаточно доступно для начинающих.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
J. Ganssle
Насчет бесплатного выпуска "изумительного труда"... Эйцвейдрей, пинками прогнанный с нескольких любительских форумов за навязчивую рекламу самого себя ( кстати, на этом форуме он тоже тусовался с саморекламой, что-то затих, видимо - наваляли ) , эту обучалку использует тоже для рекламы своих "детали-почтой" . И аляповатый балаганный стиль - это не от желания доступно изложить основы, а для привлечения клиентов, как дикарей - стеклянными бусами. Что ж, каждый делает свой бизнес как можешь, без настырности --разоришься.
Заметьте, я поступил политкорректно - не стал расшифровывать его данные, которые вы легко найдете, есл дочитаете рекламируемую "Мурзилку" до конца.
Заметьте, я поступил политкорректно - не стал расшифровывать его данные, которые вы легко найдете, есл дочитаете рекламируемую "Мурзилку" до конца.
- Реклама
Господа, а не слишком ли много чести для вышеупомянутого курса быть обсуждаемым столь долго и бурно? А уж в качестве повода для ссоры он и вовсе мелковат.
Давайте лучше вернемся к теме. Я собираю книги по этой теме, и мне, как и топикстартеру, было бы интересно выслушать ваши рекомендации по поводу действительно хороших учебников. Вдруг что-то достойное ускользнуло от моего внимания.
Давайте лучше вернемся к теме. Я собираю книги по этой теме, и мне, как и топикстартеру, было бы интересно выслушать ваши рекомендации по поводу действительно хороших учебников. Вдруг что-то достойное ускользнуло от моего внимания.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
J. Ganssle
Вот не знаю, я начал изучение именно с даташита на контроллер. Это наиболее полное и концентрированное собрание всей необходимой информации. А дальше - простая логика...
Конечно, чрезвычайно трудно понять какие кнопки надо нажимать в современных средах чтобы написать программу и при этом без ошибок компиляции. Нужно просто всегда представлять что и зачем нужно.
"0xFF" - это лишь одна из форм записи целых чисел, причем именно эта - самая популярная, остальные формы записи могут варьироваться для разных компиляторов. Некоторые воспринимают ЛЮБОЕ число изначально как шестнадцатеричное а не десятичное. Из-за этого случаются непонятки когда пишешь 10 а программа почему-то выполняет 16 итераций. иногда прокатывают числа 0FFh но они всегда должны начинаться с цифры, поэтому такая форма записи требует внимания - когда надо вначале ноль поставить а когда не обязательно, а это место потенциальных ошибок.
А в общем, для начала пойдет любая книжка где есть пример создания простого устройства - мигалки светодиодом с подробным описанием в какой среде набирается программа и какие кнопки жать, один раз проходишь а дальше можно методом научного тыка выяснить что за остальные кнопки, менюшки и т.д.
Конечно, чрезвычайно трудно понять какие кнопки надо нажимать в современных средах чтобы написать программу и при этом без ошибок компиляции. Нужно просто всегда представлять что и зачем нужно.
"0xFF" - это лишь одна из форм записи целых чисел, причем именно эта - самая популярная, остальные формы записи могут варьироваться для разных компиляторов. Некоторые воспринимают ЛЮБОЕ число изначально как шестнадцатеричное а не десятичное. Из-за этого случаются непонятки когда пишешь 10 а программа почему-то выполняет 16 итераций. иногда прокатывают числа 0FFh но они всегда должны начинаться с цифры, поэтому такая форма записи требует внимания - когда надо вначале ноль поставить а когда не обязательно, а это место потенциальных ошибок.
А в общем, для начала пойдет любая книжка где есть пример создания простого устройства - мигалки светодиодом с подробным описанием в какой среде набирается программа и какие кнопки жать, один раз проходишь а дальше можно методом научного тыка выяснить что за остальные кнопки, менюшки и т.д.
Вообще-то это грубейшее нарушение стандартов языка C. Например, в стандарте ISO/IEC 9899:1999 (E) (C99) в п. 6.4.4.1 Integer constants указано:Alexeyslav писал(а):...формы записи могут варьироваться для разных компиляторов. Некоторые воспринимают ЛЮБОЕ число изначально как шестнадцатеричное а не десятичное. Из-за этого случаются непонятки...
Код: Выделить всё
decimal-constant:
nonzero-digit
decimal-constant digit
octal-constant:
0
octal-constant octal-digit
hexadecimal-constant:
hexadecimal-prefix hexadecimal-digit
hexadecimal-constant hexadecimal-digit
hexadecimal-prefix: one of
0x 0X(Прошу прощения за оффтопик).
Последний раз редактировалось Goldsmith Сб июл 21, 2012 15:27:30, всего редактировалось 1 раз.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
J. Ganssle
Достаточно взять за привычку указывать тип числа.
Уточните, пожалуйста.Alexeyslav писал(а):Достаточно взять за привычку указывать тип числа.
Допустим, я указал, что переменная имеет тип short int. Например:
Какой компилятор C инициализируют переменную i значением 16 в десятичной системе счисления? Это действительно интересно, чтобы не нарваться на него невзначай.short int i = 10;
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
J. Ganssle
Я с С дела не имел, это в ассемблере микрочиповском.
Так тема-то, обратите внимание, называется "Программирование Си". Человек только начинает, просит помощи по программированию AVR на C. Не нужно его запутывать дополнительно, ему и так трудно.Alexeyslav писал(а):Я с С дела не имел, это в ассемблере микрочиповском.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
J. Ganssle
Это только призыв к осторожности. Всякое может быть, надо иметь в виду что такие вещи надо выяснять до начала написания программы. А лучше записывать числа так чтобы не было неоднозначности.
Это точно. Залог успеха - доскональное понимание того, что делаешь, без домыслов и "авосей". А для понимания нужно знание. Ну а знания мы добываем в основном из книг. Так что вернулись к исходной теме - что почитать, чтобы не просто потратить время впустую, а действительно научиться?
Вот еще настоятельно рекомендую: James W. Grenning, "Test Driven Development for Embedded C".

Книга о разработке действительно качественных программ для встроенных микропроцессоров, без надежды на "авось", который так часто подводит.
Прошу прощения, что рекомендую книги только на английском. Действительно стоящие книги почему-то переводят крайне редко. Может, их издание коммерчески невыгодно, а может, кто-то не заинтересован, чтобы мы умнели. Не знаю, но факт.
Вот еще настоятельно рекомендую: James W. Grenning, "Test Driven Development for Embedded C".

Книга о разработке действительно качественных программ для встроенных микропроцессоров, без надежды на "авось", который так часто подводит.
Прошу прощения, что рекомендую книги только на английском. Действительно стоящие книги почему-то переводят крайне редко. Может, их издание коммерчески невыгодно, а может, кто-то не заинтересован, чтобы мы умнели. Не знаю, но факт.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
J. Ganssle
Рад, что Вам понравилось.SubDia писал(а):За посоветованные книги от меня большое человеческое спасибо.
Если интересуетесь качественной технической литературой, то не исключено, что найдете еще что-нибудь полезное для себя в моем мини-блоге. Ну а если захотите добавить свои личные рекомендации, буду очень благодарен - хороших книг слишком много не бывает.
Любой дурак может писать код. Настоящий профессионал - это тот, кто способен постоянно создавать продукт высокого качества, укладываясь при этом в бюджет.
J. Ganssle
J. Ganssle


