Есть ли ограничения в коде для МК ?

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Прорезались зубы
Сообщения: 244
Зарегистрирован: Вс янв 09, 2011 00:34:11

Сообщение cat-dog-god0 »

Здравствуйте!
Есть ли ограничения в коде для МК ? Т.е чем ограничивается код, допусти, не желательно использовать много ответвлений (конструкция if...else). Или все зависит от "веса" кода ?
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

Размер кода ограничен размером флеша МК. Если размер получается больше нужно либо:
1) брать контроллер потолще (самый простой путь)
2) оптимизировать программу
3) использовать другой язык/компилятор (или вообще ассемблер)
Ну и конечно не стоит ставить кучу строк if...else там, где можно обойтись конструкцией switch-case
Реклама
Прорезались зубы
Сообщения: 244
Зарегистрирован: Вс янв 09, 2011 00:34:11

Сообщение cat-dog-god0 »

А так МК что одна строчка кода, что сотня (условно), только если сотня значительно уменьшится скорость. Правильно ли я понял ???
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

Каждую строку кода на языке высокого уровня компилятор преобразует в машинные коды (или в один, если это что-то простое). Каждый машинный код выполняется (для AVR) 1 или 2 такта. Так что все просто: 10 одинаковых строк кода с простым оператором (например, вывод в порт) поставленные одна за другой выполняются ровно в 10 раз медленнее, чем одна (при условии, что в выполнение не вмешается прерывание).
Реклама
Эиком - электронные компоненты и радиодетали
Поставщик валерьянки для Кота
Сообщения: 1957
Зарегистрирован: Пт окт 31, 2008 09:38:55
Откуда: Одесса

Сообщение clawham »

вы лучше скажите что вам нужно в конечном итоге
с точки зрения программиста на языке С - МК такой же как и компьютер....одна команда исполняется за 1 такт так что на 16-ти мегагерцах даже вся память МК самого толстого из атмег - 128 килобайт - пробежится 125 раз...но я точно уверен что кроме кода в памяти так же будут и константы-блоки данных-таблички и .тд. это тоже заносится в память программ

но....вообще....одна строчка
a=1.2566 + 2.568 * 2.14;

для МК превратится в 2-3 тысячи :) если конечно она первый раз встретилась
дальшейшее использование подобных действий не вызовет особого увелдичения размера прошивки но на выполнение всёравно потребуется очень много тактов...

также довольно ресурсоёмкие и отъедающие память программ есть библиотеки printf ... в мигалках можно обойтись и без них а вот в любой системе с знаковым экраном или того хуже - графическим - эта комманда просто незаменима....

что ещё?
ну есть например в CVAVR и IARe такая проблема - не контролируется вылет за пределы массива....тоесть если есть массив
char a[10];
то если обращаться к например a[10] то это не будет ошибкой и обращение будет идти к ячейке озу следующей за последним элементом массива - а это чревато затиранием переменной там находящейся ...сам недавно 2 часа искал подобную глюку...

да много всякой мелочи есть....это всё прийдёт с опытом...пробуйте...изучайте поле...грабли расставлены до нас и они не передвигаемые....со временем выучите где какие стоят...
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
Контактная информация:
Реклама
Прорезались зубы
Сообщения: 244
Зарегистрирован: Вс янв 09, 2011 00:34:11

Сообщение cat-dog-god0 »

Просто я только не давно начал изучать МК. Симулировал работу в Proteus. Но, он не всегда воспроизводит происходящие процессы в реальном времени. Вот я и подумал, что если компьютер не справляется, то МК... Сейчас определяюсь с программатором. Буду тогда изучать "в живую", но не хотелось бы чтобы МК был сильно загружен. Поэтому хочу понять как поведет МК в разных ситуациях, до написания кода, чтобы код писать соответствующим образом, и, возможно, облегчить "жизнь" МК :)
Последний раз редактировалось cat-dog-god0 Пт ноя 11, 2011 10:45:15, всего редактировалось 1 раз.
Реклама
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

Это вы ищите проблему там, где ее нет :)) Компьютер не справляется, потому что это эмулятор ему же приходится каждую команду контроллера расшифровывать, и делать кучу действий, чтобы это отобразилось в симуляции, не говоря уже о том, что он еще и параллельно сотню других задач выполняет. Не зря с эмуляторе есть счетчик, который отсчитывает реальное (для контроллера) время. А если в регистры залезть, так там еще и счетчик тактов имеется.
Прорезались зубы
Сообщения: 244
Зарегистрирован: Вс янв 09, 2011 00:34:11

Сообщение cat-dog-god0 »

Просто я не знал до недавнего времени, что Ptoteus не всегда симулирует в реальном времени. Я думал, что он не симулирует из-за кода для МК
Модератор
Аватара пользователя
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Сообщение МитяРа »

cat-dog-god0 писал(а): хочу понять как поведет МК в разных ситуациях, до написания кода, чтобы код писать соответствующим образом, и, возможно, облегчить "жизнь" МК
Шпротеус тебе именно сейчас и именно в том, что ты написал - не помощник.. А даже наоборот - "диверсант"..
Рассмотреть "поведение МК" до "написания кода" - невозможно.. Т.к. МК будет себя вести так, как этот код написан...
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Поставщик валерьянки для Кота
Сообщения: 1957
Зарегистрирован: Пт окт 31, 2008 09:38:55
Откуда: Одесса

Сообщение clawham »

у вас в МК стоит операционка реального времени?
МК никогда не простаивает (ну разве в режиме сна но мы ведь про активный режим)
мк всегда чтото делает - или тупит в цикле или выполняет основной набор комманд...но никогда МК не простаивает...ну нет такого понятия для систем без ОперационнойСистемы
потому думать о загрузке МК вообще не нужно.....
я вот сколько не пишу программ - никогда не упирался в скорость МК - всегда скорости просто предостаточно....просто операции требующие мгновенной реакции я или выношу в прерывание или вообще доверяю внешнему блоку-микросхеме-интерфейсу а МК просто считывает оттуда данные...
просто надо помнить что МК не сможет дергать ножкой быстрее 5 мегагерц при тактовой 16 мегагерц....при этом больше он не будет делать ничего :)
ну..в общем...как то так

а протеус...ну....подождите....он же не только программу симулирует! он же ещё выводы МК симулирует...их сопротивление индуктивность ёмкость....импульсы переходных процессов....а это плавающая точка...очень много вычислений с плавающей точкой...конечно компьютер будет тормозить...особенно если на выводах ещё какие-то аналоговые вещи присутствуют....
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
Контактная информация:
Прорезались зубы
Сообщения: 244
Зарегистрирован: Вс янв 09, 2011 00:34:11

Сообщение cat-dog-god0 »

МитяРа писал(а):Рассмотреть "поведение МК" до "написания кода" - невозможно..
Просто я думал, что есть какие-то ограничения для кода, поэтому Proteus и не симулировал схему как надо. Но, как мне уже сказали есть два основных ограничения: 1) память МК, 2) сам программист. Значит, проще и лучше будет анализировать работу программы "в живую".
Скажите, а что нужно для программирования МК из аппаратных средств. Т.е. есть МК и... что нужно?
Как вариант рассматриваю вот это:
http://www.chipdip.ru/product/bm9010.aspx
Модератор
Аватара пользователя
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Сообщение МитяРа »

Кроме программатора, ещё те понадобится для начала и макетная плата - для тренировок..
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Поставщик валерьянки для Кота
Сообщения: 1957
Зарегистрирован: Пт окт 31, 2008 09:38:55
Откуда: Одесса

Сообщение clawham »

...и пять проводков в LPT порт....ну и .... руки с минимальным радиусом кривизны....
если кривизна и невнимательность зашкаливают то...ни лучший программатор ни специальные демоплаты ничего не поможет...
просто перед тем как чтото сделать или подать питание - надо 100500 раз все проверить осмыслить...надо подумать что будет при подачем питания...что если МК все ноги в 1 или в 0 выставит...и только тогда подключать питание....
а прошивать МК тем боеле на первых порах - ну 5 проводков с резюками по 100 омм довольно рабочая вещь а чтоб наверняка ничего не пожечь - мк питтать через 100-200 омм резистор...тогда точно ничего не будет даж если перепутать полярность....
П.С. вот вчера сдуру ещё одну кренку спалил реверсом полярности...из неизвестного аккума два черных провода выходили....лень было померять тестером...

ну и конечно же макетка какая-то....простейшая...ну или бесконтактная....там удобнее в разы чтолибо ваять
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
Контактная информация:
Прорезались зубы
Сообщения: 244
Зарегистрирован: Вс янв 09, 2011 00:34:11

Сообщение cat-dog-god0 »

У меня на компьютере нет LPT порта, как быть ?
Поставщик валерьянки для Кота
Сообщения: 1957
Зарегистрирован: Пт окт 31, 2008 09:38:55
Откуда: Одесса

Сообщение clawham »

1) купить юсб програмер
2) купить ftf232 и спаять программатор
3) купить парралельный программатор
4) купить старую мамку с LPT - её если что и не жалко
5) купить PCI интерфейсную карту
6) купить юсб-лпт переходник
7) спаять аналог 5 проводков для com порта только там проблема - земля компьютера это будет +10 вольт для МК - иногда довольно опасно
8) сделать сложный вариант для ком порта на микросхеме max232 - тогда земля МК и земля ПК будут равны и соединены
9)...
10)...
11)...
вариантов тьма
но собрать всяике ec,-асп не предлагаю - проблема курицы и яйца :)
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
Контактная информация:
Прорезались зубы
Сообщения: 244
Зарегистрирован: Вс янв 09, 2011 00:34:11

Сообщение cat-dog-god0 »

Скажите, если использовать этот программатор (он вроде USB):
http://www.chipdip.ru/product/bm9010.aspx
...куда подключать МК ?
Друг Кота
Аватара пользователя
Сообщения: 3872
Зарегистрирован: Пт янв 29, 2010 10:27:40
Откуда: Москва

Сообщение Engineer_Keen »

МК сидит на плате (на макетке или в готовом устройстве), он соединен с разъемом ногами: +питания, CLK, MISO, MOSI, RESET, земля (всего 6, если в программаторе больше - это все земли). К этому разъему подключаем программатор, подаем питание (только не от программатора) на плату, прошиваем.
Друг Кота
Аватара пользователя
Сообщения: 6321
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Сообщение Jack_A »

cat-dog-god0 писал(а):Скажите, если использовать этот программатор (он вроде USB):
http://www.chipdip.ru/product/bm9010.aspx
...куда подключать МК ?
Пока, очевидно, никуда. Рано еще :?
А вот когда прочтешь внимательно хотя бы один ДШ и аббревиатуры MOSI, MISO, SCK уже не будут китайской грамотой, вопрос отпадет сам собой, бо эти MOSI, MISO, SCK там в схеме, которая открывается по приведенной ссылке, черным по белому и пропечатаны.
Прорезались зубы
Сообщения: 244
Зарегистрирован: Вс янв 09, 2011 00:34:11

Сообщение cat-dog-god0 »

Спасибо, Engineer_Keen.
Меня смутил кабель. Я думал, что требуются еще платы.
Значит, если использовать этот программатор и макетную плату, то с одной строны провода, идущего на МК, штекер можно срезать и вставлять проводки в макетную плату ???
Поставщик валерьянки для Кота
Сообщения: 1957
Зарегистрирован: Пт окт 31, 2008 09:38:55
Откуда: Одесса

Сообщение clawham »

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

Вернуться в «Микроконтроллеры и ПЛИС»