Страница 1 из 1

Программирование Си

Добавлено: Вс июл 15, 2012 12:13:20
Nikitka
Добрый день. Вот собрался изучить язык Си, для программирования МК типа Atmega ну и т.п. Не знаю с чего начать, где взять простейший учебник по программированию микроконтроллеров, что значит 0xFF и т.п. там не описывается... Короче мне нужен учебник чтобы было всё понятно даже такому тупому существу как я.... Есть ли такие и с чего начать?

Re: Программирование Си

Добавлено: Вс июл 15, 2012 14:04:37
Minor/2
http://avr123.nm.ru/01.htm Настоятельно рекомендую и пользуясь случаем, еще раз благодарю автора этого изумительно изложенного труда !!!

Re: Программирование Си

Добавлено: Вс июл 15, 2012 17:31:32
SubDia
Автору этого, с позволения сказать, "труда" нужно глаза выколоть за абсолютно нечитабельный и невоспринимаемый текст и скачущие шрифты.
Рекомендую книгу Лебедева "CodeVision AVR. Пособие для начинающих"
Все, что касается CVAVR, можно пропустить, а вот азы программирования МК AVR на Си там изложены великолепно.

Re: Программирование Си

Добавлено: Вс июл 15, 2012 19:00:09
Goldsmith
Nikitka писал(а):мне нужен учебник чтобы было всё понятно даже такому тупому существу как я.... Есть ли такие и с чего начать?
Есть очень толковый учебник по программированию встроенных систем на C: Michael Barr, Anthony Massa. Programming Embedded Systems: With C and GNU Development Tools.
Изображение
Судя по вопросу по 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
Изображение
Книги написаны достаточно доступно для начинающих.

Re: Программирование Си

Добавлено: Вт июл 17, 2012 10:46:40
Jack_A
Насчет бесплатного выпуска "изумительного труда"... Эйцвейдрей, пинками прогнанный с нескольких любительских форумов за навязчивую рекламу самого себя ( кстати, на этом форуме он тоже тусовался с саморекламой, что-то затих, видимо - наваляли ) , эту обучалку использует тоже для рекламы своих "детали-почтой" . И аляповатый балаганный стиль - это не от желания доступно изложить основы, а для привлечения клиентов, как дикарей - стеклянными бусами. Что ж, каждый делает свой бизнес как можешь, без настырности --разоришься.
Заметьте, я поступил политкорректно - не стал расшифровывать его данные, которые вы легко найдете, есл дочитаете рекламируемую "Мурзилку" до конца. :)

Re: Программирование Си

Добавлено: Ср июл 18, 2012 23:16:21
Goldsmith
Господа, а не слишком ли много чести для вышеупомянутого курса быть обсуждаемым столь долго и бурно? А уж в качестве повода для ссоры он и вовсе мелковат.

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

Re: Программирование Си

Добавлено: Пт июл 20, 2012 15:10:37
Alexeyslav
Вот не знаю, я начал изучение именно с даташита на контроллер. Это наиболее полное и концентрированное собрание всей необходимой информации. А дальше - простая логика...

Конечно, чрезвычайно трудно понять какие кнопки надо нажимать в современных средах чтобы написать программу и при этом без ошибок компиляции. Нужно просто всегда представлять что и зачем нужно.

"0xFF" - это лишь одна из форм записи целых чисел, причем именно эта - самая популярная, остальные формы записи могут варьироваться для разных компиляторов. Некоторые воспринимают ЛЮБОЕ число изначально как шестнадцатеричное а не десятичное. Из-за этого случаются непонятки когда пишешь 10 а программа почему-то выполняет 16 итераций. иногда прокатывают числа 0FFh но они всегда должны начинаться с цифры, поэтому такая форма записи требует внимания - когда надо вначале ноль поставить а когда не обязательно, а это место потенциальных ошибок.

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

Re: Программирование Си

Добавлено: Пт июл 20, 2012 17:28:03
Goldsmith
Alexeyslav писал(а):...формы записи могут варьироваться для разных компиляторов. Некоторые воспринимают ЛЮБОЕ число изначально как шестнадцатеричное а не десятичное. Из-за этого случаются непонятки...
Вообще-то это грубейшее нарушение стандартов языка C. Например, в стандарте ISO/IEC 9899:1999 (E) (C99) в п. 6.4.4.1 Integer constants указано:

Код: Выделить всё

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
Лучше от такого компилятора держаться подальше, если только заказчик, вооруженный пистолетом, не требует пользоваться именно этим под страхом смерти. Нестандартное всегда чревато.

(Прошу прощения за оффтопик).

Re: Программирование Си

Добавлено: Пт июл 20, 2012 23:44:09
Alexeyslav
Достаточно взять за привычку указывать тип числа.

Re: Программирование Си

Добавлено: Сб июл 21, 2012 00:14:26
Goldsmith
Alexeyslav писал(а):Достаточно взять за привычку указывать тип числа.
Уточните, пожалуйста.

Допустим, я указал, что переменная имеет тип short int. Например:
short int i = 10;
Какой компилятор C инициализируют переменную i значением 16 в десятичной системе счисления? Это действительно интересно, чтобы не нарваться на него невзначай.

Re: Программирование Си

Добавлено: Сб июл 21, 2012 00:17:26
Alexeyslav
Я с С дела не имел, это в ассемблере микрочиповском.

Re: Программирование Си

Добавлено: Сб июл 21, 2012 00:22:38
Goldsmith
Alexeyslav писал(а):Я с С дела не имел, это в ассемблере микрочиповском.
Так тема-то, обратите внимание, называется "Программирование Си". Человек только начинает, просит помощи по программированию AVR на C. Не нужно его запутывать дополнительно, ему и так трудно.

Re: Программирование Си

Добавлено: Сб июл 21, 2012 00:27:41
Alexeyslav
Это только призыв к осторожности. Всякое может быть, надо иметь в виду что такие вещи надо выяснять до начала написания программы. А лучше записывать числа так чтобы не было неоднозначности.

Re: Программирование Си

Добавлено: Сб июл 21, 2012 01:06:43
Goldsmith
Это точно. Залог успеха - доскональное понимание того, что делаешь, без домыслов и "авосей". А для понимания нужно знание. Ну а знания мы добываем в основном из книг. Так что вернулись к исходной теме - что почитать, чтобы не просто потратить время впустую, а действительно научиться?

Вот еще настоятельно рекомендую: James W. Grenning, "Test Driven Development for Embedded C".

Изображение

Книга о разработке действительно качественных программ для встроенных микропроцессоров, без надежды на "авось", который так часто подводит.

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

Re: Программирование Си

Добавлено: Сб июл 21, 2012 15:26:07
Goldsmith
SubDia писал(а):За посоветованные книги от меня большое человеческое спасибо.
Рад, что Вам понравилось.

Если интересуетесь качественной технической литературой, то не исключено, что найдете еще что-нибудь полезное для себя в моем мини-блоге. Ну а если захотите добавить свои личные рекомендации, буду очень благодарен - хороших книг слишком много не бывает.

Re: МЯЯЯУ!

Добавлено: Вс июл 22, 2012 15:51:30
aen
Оффтоп убрал.