|
|
  |
pic12f675, c чего начать. |
|
|
|
Jul 2 2009, 07:57
|
Участник

Группа: Участник
Сообщений: 65
Регистрация: 18-01-08
Из: Moscow
Пользователь №: 34 201

|
Примерно полторагода назад начал программировать котроллелеры, сначала был PIC16F876A и асм. Вроде пока проекты были маленькие и можно было все держать в голове все было ок, но как только появились два уарта, память и часы внешние отладка стала напоминать китайскую пытку. Промаявшись несколько недель, решил написать на С. Сначала проработал Шпака, потом начал ваять маленькие примерчики из хелпа к компилятору. За полторы недели написал модбас устройство под себя и уарт програмный ( правда при помощи страших товарищей). Могу сказать ИМХО дял больших проектов токлько С, для маленьких годится и асм. Тут каждый выбирает для себя сам. Также мне кажется надо выбирать инструменты для реализации проекта не только из критерия привычности, но и из соотношения скорости/цены. Плюс знания АСМ ксати в том что он дает знание архитектуры контрллелара, для написания более компактного кода на С.
|
|
|
|
Guest_@Ark_*
|
Jul 7 2009, 11:59
|
Guests

|
А что конкретно не понятно? По моему, все очевидно.
P.S. Какой PIC?
|
|
|
|
|
Jul 7 2009, 12:07
|

Полное ничтожество
    
Группа: Banned
Сообщений: 1 991
Регистрация: 20-03-07
Из: Коломна
Пользователь №: 26 354

|
Цитата(@Ark @ Jul 7 2009, 15:59)  А что конкретно не понятно? По моему, все очевидно.
P.S. Какой PIC? тот который в теме. Не понятко как мнемоника меняется компиллятором в смысле один регистр на другой и два банка переключаются как то не переключаемо??? хотя #define Bank0 0x00 #define Bank1 0x80
|
|
|
|
Guest_@Ark_*
|
Jul 7 2009, 12:37
|
Guests

|
Адреса исходных регистров и замененных совпадают в пределах банка. Поэтому и команды обращения к ним будут абсолютно одинаковы. Исполняемый код не содержит информации о выборе банка. А результат выполнения команды (т.е к какому из регистров реально будет обращение) зависит от текущего выбора банка.
|
|
|
|
Guest_@Ark_*
|
Jul 7 2009, 13:17
|
Guests

|
Насчет МП-лаба я Вам не советчик, так как им давно не пользуюсь...
По поводу банков. Регистр STATUS проецируется во все банки на один и то же адрес. Кстати, некоторые другие регистры тоже. Поэтому при обращении к ним можно не обращать внимания на текщий выбор банка.
Вообще, раз взялись за PIC-и, то рекомендую вам сразу прояснить для себя ряд вопросов, о которые Вы неизбежно будете "спотыкаться". А именно:
- изучите распределение регистров по банкам для конкретного PIC-а, и обратите внимание на регистры, которые проецируются сразу на несколько банков;
- разберитесь как формируется физический адрес операнда (регистра) при выполнении команд и обратите внимание на отличия при косвенном обращении к регистрам (через FSR); посмотрите как формируется адрес вызова и возврата из подпрограмм и прерываний, а также при переходах и прямой модификации программного счетчика.
- изучите типовую схему входного/выходного порта PIC-а; как происходит чтение и запись с внешних выводов и чем она отличается от чтения/записи в обычные регистры;
- в чем отличия при работе с выводами настроенными только на чтение или на чтение/запись, а также, при аналоговом и цифровом режимах работы портов.
P.S. Не торопитесь сразу программировать, попробуйте сначала разобраться хотя бы с перечисленными вопросами. В последствии, сэкономите массу времени.
|
|
|
|
|
Jul 7 2009, 15:00
|
    
Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731

|
Цитата(rv3dll(lex) @ Jul 7 2009, 16:51)  Банк то почему не меняется?
BANKSEL Bank1 ; BANK1
-------- banksel Bank0 ; change back to PORT memory bank BANKSEL - не более чем макрос, который раскручивается в соответствующую последовательность комманд Для pic12f675 banksel Bank0 == b cf STATUS, 5 banksel Bank1 == b sf STATUS, 5 т.е. дергается бит RP0 в SFR STATUS. Если бы банок было больше, было бы больше и bcf/bsf (для битов RP1, RP2,...  )
|
|
|
|
|
Jul 8 2009, 04:12
|

Полное ничтожество
    
Группа: Banned
Сообщений: 1 991
Регистрация: 20-03-07
Из: Коломна
Пользователь №: 26 354

|
Цитата(xemul @ Jul 7 2009, 19:00)  BANKSEL - не более чем макрос, который раскручивается в соответствующую последовательность комманд Для pic12f675 banksel Bank0 == b cf STATUS, 5 banksel Bank1 == b sf STATUS, 5 т.е. дергается бит RP0 в SFR STATUS. Если бы банок было больше, было бы больше и bcf/bsf (для битов RP1, RP2,...  ) понял просто посмотрел, что команды разные, после 51 ассемблера дико становится((((
|
|
|
|
|
Jul 8 2009, 08:55
|

Гуру
     
Группа: Модераторы
Сообщений: 10 983
Регистрация: 23-11-05
Пользователь №: 11 287

|
Цитата(vvs157 @ Jul 7 2009, 14:33)  Вообще-то вопрос ASM vs C - это вопрос в значительной мере религиозный если не конкретизирована задача. И периодически возникающий холивар на эту тему - тому доказательство. По-поводу простоты освоения embedded С. Посмотрите, сколько на форуме вопросов именно по специфическому на конкретном МК применению С (распределение переменных в нужной памяти, сложные обработчики превываний итп) Вы сильно демонизируете сложность написания прог на ASM. Если мозги заточены под ASM, то скорость написания и отладки программ сопоставима (примеры с мегабайтами откомпилированного кода и мегабайтами многомерных массивов типа double не рассматриваем - это не для pic12). Основная же проблема ASM'a - это проблема с передачей проекта другому программисту. В данном топике это не проблема, равно как быстрый перенос кода на "все, что шевелится".Лучшим явлется тот инструмент, котрым хорошо владеешь. Мастер обыграет новичка в теннис даже взяв вместо ракетки сковородку. Ещё раз. Я не собираюсь рубится на этой религиозной войне. Религиозные войны - самые бессмысленные, но и самые длительные и кровопролитные. Понятно, что если мастера устраивает его инструмент, агитировать его "за советскую власть" ни к чему. Однако пару моментов, на которые пытаюсь обратить внимание очередной раз. Так же некорректно сравнивать мастера с новичком (что любят делать почему-то именно сторонники ASM-а), как и ракетку со сковородой. И второе: не знаю, что такое "мозги заточенные под ASM", ведь ASM, в отличие от С, на каждой платформе разный. И проблемы возникают не столько при передаче проекта другому программисту (с другой заточкой мозгов  ?) , сколько при переносе программы на другое железо, буде таковое потребуется.
|
|
|
|
|
Jul 8 2009, 09:54
|

Полное ничтожество
    
Группа: Banned
Сообщений: 1 991
Регистрация: 20-03-07
Из: Коломна
Пользователь №: 26 354

|
Цитата(Herz @ Jul 8 2009, 12:55)  Ещё раз. Я не собираюсь рубится на этой религиозной войне. Религиозные войны - самые бессмысленные, но и самые длительные и кровопролитные. Понятно, что если мастера устраивает его инструмент, агитировать его "за советскую власть" ни к чему. Однако пару моментов, на которые пытаюсь обратить внимание очередной раз. Так же некорректно сравнивать мастера с новичком (что любят делать почему-то именно сторонники ASM-а), как и ракетку со сковородой. И второе: не знаю, что такое "мозги заточенные под ASM", ведь ASM, в отличие от С, на каждой платформе разный. И проблемы возникают не столько при передаче проекта другому программисту (с другой заточкой мозгов  ?) , сколько при переносе программы на другое железо, буде таковое потребуется. я бы с удовольствием ничего никуда не переносил и не изучал ещё одно железо и синтаксис если бы за полбакса мог купить 51 контроллер размером 6*6 миллиметров.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|