Технический форум по робототехнике.
=DeaD= » 08 июл 2011, 11:27
Т.е. в пике нету нормального стека? А что кстати там, совсем нету стека или какой-то убитый неполноценный?
Michael_K » 08 июл 2011, 11:50
в пике есть стек, но он неадресуемый и его глубина ограничена.
Поэтому на нем нельзя держать локальные переменные, с рекурсией возникают проблемы, и вообще невозможна вытесняющая многозадачность.
Может быть в большинстве случаев ничего этого и не нужно, НО! компилятор-то компилирует каждый модуль отдельно - он не знает, понадобится ли, например, рекурсия где-нибудь потом. И вынужден учитывать такую возможность.
Добавлено спустя 1 минуту 11 секунд:
Это касается "старых" пиков ( пик18 например). Про dsPIC не скажу - не знаю.
osc » 11 июл 2011, 15:57
у cvavr очень хороший визард , это очень удобно для начинающих , кто не совсем разобрался с переферией МК , за это ему огромный плюс)))
Было бы дико круто если он генерил код вот так:
- Код: Выделить всё • Развернуть
TCCR1A |= (1<<COM1A1)|(1<<COM1B1)|(1<<WGM11);
blindman » 11 июл 2011, 16:22
.... это очень удобно для начинающих , кто не совсем разобрался с переферией МК ....
... и никогда не разберется
Romikgy » 11 июл 2011, 16:58
blindman писал(а): .... это очень удобно для начинающих , кто не совсем разобрался с переферией МК ....
... и никогда не разберется
не факт !
будет желание разберется.....
galex1981 » 11 июл 2011, 22:20
Соглашусь с Андреем, вряд ли будет у большинства желание вникать в архитектуру МК, если мастер за них все делает
HarryStar » 11 июл 2011, 22:37
Глупости. Не вижу никакого криминала, если поставив несколько галочек на ПОРТА ввод-вывод получаем генеренную строку типа PORTA=0x1A; DDRA=0x67;
Т.е. по вашему если я как дурак считаю эти цифры вручную, я разбираюсь, если ставлю галочки, то нет и никогда не разберусь. Может и калькулятором тогда не пользоваться? Облегчать / ускорять труд это не по феншую?
Или выставление UCSRA=0x00; UCSRB=0x08; UCSRC=0x86; UBRRH=0x00; UBRRL=0x08; без мастера признак офигенной крутизны?
Я использую мастер как удобный калькулятор и/или справочник, дабы не лазить за каждым числом в даташит. Если кто-то помнит все это наизусть, ради бога. Значит у этого человека хорошая память или он этим часто пользуется не больше и не меньше. Знание архитектуры МК тут совершенно не при чем. Как уже сказали кто захочет, тот разберется, а кто не захочет - будет использовать копу-пасте в тех компиляторах, где нет визарда.
Инструмент это всего лишь инструмент и умение от него зависит очень слабо.
Michael_K » 11 июл 2011, 22:59
Не передергивайте.
Реплика была в ответ на фразу:
"это очень удобно для начинающих, кто не совсем разобрался с периферией".
=DeaD= » 11 июл 2011, 23:02
HarryStar писал(а):Глупости. Не вижу никакого криминала, если поставив несколько галочек на ПОРТА ввод-вывод получаем генеренную строку типа PORTA=0x1A; DDRA=0x67;
Т.е. по вашему если я как дурак считаю эти цифры вручную, я разбираюсь, если ставлю галочки, то нет и никогда не разберусь.
Там же всё просто, можно и в уме это делать. Надо всего лишь 4 бита преобразовать в одну 16-ричную цифру, скажем 1101b это 8+4+1=13, т.е. 15=F, 14=E, значит 13=D
Другое дело для кучи МК помнить названия регистров и положения бит, скажем включающих PWM в нужном режиме, это да, проблема
HarryStar » 11 июл 2011, 23:21
Так я про то и говорю. Мастер не генерит код, он только дает некоторое количество справочной информации. И это правда удобно для начинающих. Мне, например, помогло при: мигании светодиодов, работой с АЦП, с таймерами, с внешними прерываниями, с LCD.
Помогли встроенные библиотеки с LCD, SD+FAT (хотя с SD пришлось долго ковыряться).
Вот почему не сделали удобный интерфейс по фьюзам в зависимости от выбранного МК непонятно. Популярности это бы добавило. А так пришлось 1-2 часа разбираться первый раз.
Vooon » 12 июл 2011, 00:33
Смотрю некоторые любят блобы вместо человекопонятных записей...
Добавлено спустя 1 минуту 12 секунд:
Так может это и не люди вовсе, а роботы?
blindman » 12 июл 2011, 12:12
HarryStar писал(а): Мастер не генерит код, он только дает некоторое количество справочной информации. И это правда удобно для начинающих.
Набери "Declare your local variables here" в поиске по форуму. А потом покажи в найденных кусках кода "некоторое количество" справочной информации, отличное от нуля
osc » 12 июл 2011, 22:13
Или выставление UCSRA=0x00; UCSRB=0x08; UCSRC=0x86; UBRRH=0x00; UBRRL=0x08; без мастера признак офигенной крутизны?
Скорее признаком "плохого тона", потом вспоминай что это значит, через логич. операции, да еще с названиями битов понятнее.
Angel71 » 13 июл 2011, 00:04
2osc, а вы не пишите так, чтоб через время сами не смогли понять. как говориться - не можешь петь, не мучай горло.
HarryStar » 13 июл 2011, 09:32
Я понимаю Osc, что вы имеете в виду строки типа UCSRB=(1<<RXEN)|(1<<TXEN)|(1<<RXCIE)|(1<<TXCIE)|(1<<UDRIE);
Но они нужны там, где предполагается менять соответствующие биты. Если же у меня эта конфигурация битов постоянная, то число ничем не хуже, это лишь дело привычки. Хотя согласен, если бы визард генерил подобные строки, было бы гораздо лучше, особенно для новичков.
Но в любом случае наличие визарда ничему не противоречит. Им можно не пользоваться, генеренный им код можно (и нужно) переделывать под себя. Про "Declare your local variables here" я вообще молчу. Визард генерит шаблон, который предполагает его полную переделку. Если же кто-то оставляет подобные строки без изменений - это лишь его личная проблема, а не недостаток среды разработки.