программирование на си для микроконтроллеры avr ( c для avr 'операторы цикла')

preview_player
Показать описание
Рекомендации по теме
Комментарии
Автор

Здравствуйте. Данная тема касается языка программирования си а не особенности компилятора. А насчет компилятора я упоминал в уроках по Atmel Studio . Широко эту тему нет смысла развевать така при написании кода оптимизатор ведет себя по разному и решать проблемы луче исходя из написаного кода .

АлександрПисанец
Автор

Немного не точно сказано на 2:30. Сначала s присваивается 1 однократно, потом проверяется условие, потом выполняется тело цикла, а потом идет счетчику++ Иначе конструкция for (uint8_t i = 1; i < 2; i++) { asm("nop"); } не выполнится ни разу согласно Вашим словам. Да и так как это обучение то пусть учатся люди негласный стандарт использовать только для счетчиков цикла - i, j, k По сути разницы никакой но все уже привыкли и поэтому исключены ошибки что переменная S или D уже имеется глобальная и ее в цикле попортят)) Так же негласно рекомендуется счетчик начинать с нуля, тогда i < N выполнится ровно N раз и ненужно каждый раз считать и прикидывать 5 или 6 раз цикл пройдет если начинать с 1 и менять строгое неравенство на нестрогое.


Боюсь ошибиться но разве на 6:48 (S < 4) == (T == 0) не истинно при Т = 1 и S = 5? Получается (Ложь) == (Ложь) то есть условие Истина, можно не хилых косяков нахватать в программе. Правильно писать (S < 4) && (T == 0)

ВарвЙо
Автор

Александр, может где пропустил конечно, Вы не давали уроков по типам данных?
Требуется разложить переменную  uint16_t на 2 байта.
я честно сказать уже начинаю путаться в этих переменных. uint16_t - этот тип появился с подключением avr/eeprom.h я так понимаю (судя по имени) это без знаковое число 2 байта (что такое t я не понял), можно ли это тип заменить "стандартным" AVR студии, с теми же характеристиками (16 бит без знака). и как подобный тип данных разложить? нужно в порт отправить 16 битное число (со стороны ПК я знаю как его собрать обратно) а вот как правильно отправить?

vitalimitko
Автор

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

electronicsengineer-ru
Автор

Здравствуйте Александр. у меня на разных компьютерах стоит avr studio 6 и 6.2, учусь программированию контроллеров по вашим видео, повторить получается всё, кроме оператора for (char s = 0; s<5 ; s++), программа один в один, но не работает на обеих версиях, пока выходил из положения прописывая небольшую конструкцию из цикла while с условием внутри но хочется всё-таки понять. может быть подскажите почему не работает или где можно посмотреть исходник for в самом avr studio.

Mihailys
Автор

Здравствуйте Александр.
Скажите пожалуйста каким образом возможно скачать все ваши уроки, что-бы была возможность просматривать их без интернета?
Если у Вас есть возможность, залейте пожалуйста все Ваши уроки на фалообменик какой нибудь.

ИванМихеев-ук
Автор

Александр подскажите. Можно ли такое реализовать. Есть микроконтроллер, к нему подключен трехпозиционный переключатель на ножки PD7, PD6, PD5. Хочется написать код, который бы реагировал на переключения, при помощи оператора switch(). Не могу сообразить как можно это реализовать.

shizlgizI
Автор

Здраствуйте, Александр!
Вот когда у нас есть локальная переменная S в цыкле и мы переходим во время цыкла в функцию у нас переменная какбы пропадает. Возможна ли ситуация, что мы в этой функции создаем еще одну локальную переменную, и компилятор даст ей ячейку в ОЗУ с тем же адресом что и в цыкле? Ведь по сути у нас локальная переменная S исчезает и для работы освобождается ячейка памяти в которой сохранялись данные этой переменной. Я предполагаю что новая локальная переменная вполне может занять место в освободившейся ячейке памяти и в функции туда запишуться другие данные, тем самым мы потеряем данные переменной S и программа может дать сбой.

nichteinstein
Автор

думаю в обзоре стоило бы больше внимания уделить особенностям компилятора для avr, а не особенностям языка Си.

VictorShapovalove