roboforum.ru

Технический форум по робототехнике.

 

Помогите в Си AVR

Раздел создан специально для людей которым интересна робототехника, но в силу разных причин они не знают с чего начать.
Задавайте ваши вопросы, какими бы простыми они не казались, постоянные посетители форума постараются ответить на них по мере своих сил.
Робот своими руками. Самодельный робот.

Re: Помогите в Си AVR

Сообщение =DeaD= » 08 июл 2011, 11:27

Т.е. в пике нету нормального стека? А что кстати там, совсем нету стека или какой-то убитый неполноценный?
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24053
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: Pascal / C++ / PHP / 1C
ФИО: Антон Ботов

Re: Помогите в Си AVR

Сообщение Michael_K » 08 июл 2011, 11:50

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

Может быть в большинстве случаев ничего этого и не нужно, НО! компилятор-то компилирует каждый модуль отдельно - он не знает, понадобится ли, например, рекурсия где-нибудь потом. И вынужден учитывать такую возможность.

Добавлено спустя 1 минуту 11 секунд:
Это касается "старых" пиков ( пик18 например). Про dsPIC не скажу - не знаю.
Аватара пользователя
Michael_K
 
Сообщения: 6034
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Помогите в Си AVR

Сообщение osc » 11 июл 2011, 15:57

у cvavr очень хороший визард , это очень удобно для начинающих , кто не совсем разобрался с переферией МК , за это ему огромный плюс)))

Было бы дико круто если он генерил код вот так:
Код: Выделить всёРазвернуть
TCCR1A |= (1<<COM1A1)|(1<<COM1B1)|(1<<WGM11);
Аватара пользователя
osc
 
Сообщения: 311
Зарегистрирован: 07 сен 2009, 20:06
прог. языки: c, c#
ФИО: Евгений

Re: Помогите в Си AVR

Сообщение blindman » 11 июл 2011, 16:22

.... это очень удобно для начинающих , кто не совсем разобрался с переферией МК ....

... и никогда не разберется
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4128
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Помогите в Си AVR

Сообщение Romikgy » 11 июл 2011, 16:58

blindman писал(а):
.... это очень удобно для начинающих , кто не совсем разобрался с переферией МК ....

... и никогда не разберется

не факт !
будет желание разберется.....
die Wahrheit ist irgendwo da draußen
Аватара пользователя
Romikgy
 
Сообщения: 677
Зарегистрирован: 15 ноя 2009, 13:37
Откуда: Odessa.UA

Re: Помогите в Си AVR

Сообщение galex1981 » 11 июл 2011, 22:20

Соглашусь с Андреем, вряд ли будет у большинства желание вникать в архитектуру МК, если мастер за них все делает
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4360
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: Помогите в Си AVR

Сообщение HarryStar » 11 июл 2011, 22:37

Глупости. Не вижу никакого криминала, если поставив несколько галочек на ПОРТА ввод-вывод получаем генеренную строку типа PORTA=0x1A; DDRA=0x67;
Т.е. по вашему если я как дурак считаю эти цифры вручную, я разбираюсь, если ставлю галочки, то нет и никогда не разберусь. Может и калькулятором тогда не пользоваться? Облегчать / ускорять труд это не по феншую?
Или выставление UCSRA=0x00; UCSRB=0x08; UCSRC=0x86; UBRRH=0x00; UBRRL=0x08; без мастера признак офигенной крутизны?
Я использую мастер как удобный калькулятор и/или справочник, дабы не лазить за каждым числом в даташит. Если кто-то помнит все это наизусть, ради бога. Значит у этого человека хорошая память или он этим часто пользуется не больше и не меньше. Знание архитектуры МК тут совершенно не при чем. Как уже сказали кто захочет, тот разберется, а кто не захочет - будет использовать копу-пасте в тех компиляторах, где нет визарда.
Инструмент это всего лишь инструмент и умение от него зависит очень слабо.
Аватара пользователя
HarryStar
 
Сообщения: 973
Зарегистрирован: 15 ноя 2010, 13:56
Откуда: Нижний Новгород
прог. языки: С, С++, РНР

Re: Помогите в Си AVR

Сообщение Michael_K » 11 июл 2011, 22:59

Не передергивайте.
Реплика была в ответ на фразу:
"это очень удобно для начинающих, кто не совсем разобрался с периферией".
Аватара пользователя
Michael_K
 
Сообщения: 6034
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Помогите в Си AVR

Сообщение =DeaD= » 11 июл 2011, 23:02

HarryStar писал(а):Глупости. Не вижу никакого криминала, если поставив несколько галочек на ПОРТА ввод-вывод получаем генеренную строку типа PORTA=0x1A; DDRA=0x67;
Т.е. по вашему если я как дурак считаю эти цифры вручную, я разбираюсь, если ставлю галочки, то нет и никогда не разберусь.

Там же всё просто, можно и в уме это делать. Надо всего лишь 4 бита преобразовать в одну 16-ричную цифру, скажем 1101b это 8+4+1=13, т.е. 15=F, 14=E, значит 13=D :)

Другое дело для кучи МК помнить названия регистров и положения бит, скажем включающих PWM в нужном режиме, это да, проблема :)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24053
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: Pascal / C++ / PHP / 1C
ФИО: Антон Ботов

Re: Помогите в Си AVR

Сообщение HarryStar » 11 июл 2011, 23:21

Так я про то и говорю. Мастер не генерит код, он только дает некоторое количество справочной информации. И это правда удобно для начинающих. Мне, например, помогло при: мигании светодиодов, работой с АЦП, с таймерами, с внешними прерываниями, с LCD.
Помогли встроенные библиотеки с LCD, SD+FAT (хотя с SD пришлось долго ковыряться).

Вот почему не сделали удобный интерфейс по фьюзам в зависимости от выбранного МК непонятно. Популярности это бы добавило. А так пришлось 1-2 часа разбираться первый раз.
Аватара пользователя
HarryStar
 
Сообщения: 973
Зарегистрирован: 15 ноя 2010, 13:56
Откуда: Нижний Новгород
прог. языки: С, С++, РНР

Re: Помогите в Си AVR

Сообщение Vooon » 12 июл 2011, 00:33

Смотрю некоторые любят блобы вместо человекопонятных записей...

Добавлено спустя 1 минуту 12 секунд:
Так может это и не люди вовсе, а роботы?
Linux user | Firefox user
Аватара пользователя
Vooon
Site Admin
 
Сообщения: 3324
Зарегистрирован: 09 фев 2006, 15:36
Откуда: Москва
Skype: vooon341
прог. языки: Python, C, Bash, JavaScript, C++, PHP
ФИО: Владимир Ермаков

Re: Помогите в Си AVR

Сообщение blindman » 12 июл 2011, 12:12

HarryStar писал(а): Мастер не генерит код, он только дает некоторое количество справочной информации. И это правда удобно для начинающих.

Набери "Declare your local variables here" в поиске по форуму. А потом покажи в найденных кусках кода "некоторое количество" справочной информации, отличное от нуля
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4128
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: Помогите в Си AVR

Сообщение osc » 12 июл 2011, 22:13

Или выставление UCSRA=0x00; UCSRB=0x08; UCSRC=0x86; UBRRH=0x00; UBRRL=0x08; без мастера признак офигенной крутизны?

Скорее признаком "плохого тона", потом вспоминай что это значит, через логич. операции, да еще с названиями битов понятнее.
Аватара пользователя
osc
 
Сообщения: 311
Зарегистрирован: 07 сен 2009, 20:06
прог. языки: c, c#
ФИО: Евгений

Re: Помогите в Си AVR

Сообщение Angel71 » 13 июл 2011, 00:04

2osc, а вы не пишите так, чтоб через время сами не смогли понять. как говориться - не можешь петь, не мучай горло.
Аватара пользователя
Angel71
 
Сообщения: 9230
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Re: Помогите в Си AVR

Сообщение HarryStar » 13 июл 2011, 09:32

Я понимаю Osc, что вы имеете в виду строки типа UCSRB=(1<<RXEN)|(1<<TXEN)|(1<<RXCIE)|(1<<TXCIE)|(1<<UDRIE);
Но они нужны там, где предполагается менять соответствующие биты. Если же у меня эта конфигурация битов постоянная, то число ничем не хуже, это лишь дело привычки. Хотя согласен, если бы визард генерил подобные строки, было бы гораздо лучше, особенно для новичков.

Но в любом случае наличие визарда ничему не противоречит. Им можно не пользоваться, генеренный им код можно (и нужно) переделывать под себя. Про "Declare your local variables here" я вообще молчу. Визард генерит шаблон, который предполагает его полную переделку. Если же кто-то оставляет подобные строки без изменений - это лишь его личная проблема, а не недостаток среды разработки.
Аватара пользователя
HarryStar
 
Сообщения: 973
Зарегистрирован: 15 ноя 2010, 13:56
Откуда: Нижний Новгород
прог. языки: С, С++, РНР

Пред.След.

Вернуться в Новичкам или основы основ роботостроения.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6

Mail.ru counter