roboforum.ru

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

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

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

=DeaD= » 08 июл 2011, 11:27

Т.е. в пике нету нормального стека? А что кстати там, совсем нету стека или какой-то убитый неполноценный?

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

Michael_K » 08 июл 2011, 11:50

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

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

Добавлено спустя 1 минуту 11 секунд:
Это касается "старых" пиков ( пик18 например). Про dsPIC не скажу - не знаю.

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

osc » 11 июл 2011, 15:57

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

Было бы дико круто если он генерил код вот так:
Код: Выделить всёРазвернуть
TCCR1A |= (1<<COM1A1)|(1<<COM1B1)|(1<<WGM11);

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

blindman » 11 июл 2011, 16:22

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

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

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

Romikgy » 11 июл 2011, 16:58

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

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

не факт !
будет желание разберется.....

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

galex1981 » 11 июл 2011, 22:20

Соглашусь с Андреем, вряд ли будет у большинства желание вникать в архитектуру МК, если мастер за них все делает

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

HarryStar » 11 июл 2011, 22:37

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

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

Michael_K » 11 июл 2011, 22:59

Не передергивайте.
Реплика была в ответ на фразу:
"это очень удобно для начинающих, кто не совсем разобрался с периферией".

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 в нужном режиме, это да, проблема :)

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

HarryStar » 11 июл 2011, 23:21

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

Вот почему не сделали удобный интерфейс по фьюзам в зависимости от выбранного МК непонятно. Популярности это бы добавило. А так пришлось 1-2 часа разбираться первый раз.

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

Vooon » 12 июл 2011, 00:33

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

Добавлено спустя 1 минуту 12 секунд:
Так может это и не люди вовсе, а роботы?

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

blindman » 12 июл 2011, 12:12

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

Набери "Declare your local variables here" в поиске по форуму. А потом покажи в найденных кусках кода "некоторое количество" справочной информации, отличное от нуля

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

osc » 12 июл 2011, 22:13

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

Скорее признаком "плохого тона", потом вспоминай что это значит, через логич. операции, да еще с названиями битов понятнее.

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

Angel71 » 13 июл 2011, 00:04

2osc, а вы не пишите так, чтоб через время сами не смогли понять. как говориться - не можешь петь, не мучай горло.

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

HarryStar » 13 июл 2011, 09:32

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

Но в любом случае наличие визарда ничему не противоречит. Им можно не пользоваться, генеренный им код можно (и нужно) переделывать под себя. Про "Declare your local variables here" я вообще молчу. Визард генерит шаблон, который предполагает его полную переделку. Если же кто-то оставляет подобные строки без изменений - это лишь его личная проблема, а не недостаток среды разработки.


Rambler\'s Top100 Mail.ru counter