Регистрация | Вход

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум Picbasic.ru » Скорая помощь начинающим » Помощь в вопросах программирования » Директива Config (ПРАВИЛЬНЫЕ имена битов)
Директива Config
555serg Дата: Вт, 22.12.2015, 16:51  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Пытаюсь разобраться
Сообщений: 41
Репутация: 0   ±
Замечания:   ±
На сайте с 12.12.2011

Статус: Offline

Доброго времени суток. Решил в своей программе не полагаться на волю компилятора
( спасибо MIXaS надоумил ), а прописать все биты конфигурации в ручном режиме.
Особенно это желание стало возникать когда одна и та же временная задержка выпол-
няемая в основном цикле по прерыванию таймера TMR0, начала выполнятся с разным
 - плавающим временем исполнения. Далее принялся искать папку С:\Program Files\Proton\PDS\Inc
каталога компилятора, как указанно в описании к Proton+IDE что бы найти правильные
имена этих самых битов конфигурации, - но не обнаружил. Просьба к форумчанам,
если у кого есть эта самая папка - можете выложить ее здесь на форуме?
  И еще вопрос. Может проще сделать так:
  ASM
  __Config ..............................................................................................................
 ENDASM
 Как думаете? Заранее благодарю за помощь.
ЯНДЕКС Дата: 22.12.2015
brown Дата: Вт, 22.12.2015, 17:30  |                                                                                                                Сообщение # 2
Группа: Пользователи
Ранг:  Помогаю всем
Сообщений: 333
Репутация: 12   ±
Замечания:   ±
На сайте с 18.09.2007

Статус: Offline

Для Протона есть плагин, который формирует строку конфига. Посмотрите в разделе файлы - должен быть.

Век живи - век учись! К концу жизни поймешь, что ничего не знаешь...
555serg Дата: Вт, 22.12.2015, 19:12  |                                                                                                                Сообщение # 3
Группа: Проверенные
Ранг:  Пытаюсь разобраться
Сообщений: 41
Репутация: 0   ±
Замечания:   ±
На сайте с 12.12.2011

Статус: Offline

Спасибо. Есть у кого еще варианты?

Добавлено (22.12.2015, 19:12)
---------------------------------------------
Спасибо. Есть у кого еще варианты?

anatol Дата: Ср, 23.12.2015, 14:02  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 472
Репутация: 32   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

Цитата 555serg ()
временная задержка выполняемая в основном цикле по прерыванию таймера TMR0
Я выделил возможные причины проблемы. Разберитесь как выполняются прерывания.
Без вашей программы тарахтеть нет смысла. Протон ни при чём. И конфиг - тоже.
ADMIN Дата: Чт, 24.12.2015, 04:49  |                                                                                                                Сообщение # 5
Администратор
Группа: Администраторы
Ранг:  Специалист
Сообщений: 1087
Репутация: 32   ±
Замечания:   ±
На сайте с 20.08.2007

Статус: Offline

Я названия конфиг. бит находил в папке C:\Program Files\ProtonIDE\PDS\Includes\PPI в конце каждого файла есть описание и названия. Но проблема, все-таки, скорее всего , в программе.
MiXaS Дата: Чт, 24.12.2015, 08:10  |                                                                                                                Сообщение # 6
Группа: Проверенные
Ранг:  Разобрался
Сообщений: 550
Репутация: 27   ±
Замечания:   ±
На сайте с 02.10.2010

Статус: Offline

Цитата brown ()
Для Протона есть плагин, который формирует строку конфига. Посмотрите в разделе файлы - должен быть.
Это самый простой, быстрый, наглядный, а самое главное рабочий вариант. Плагин называется Fuse Configurator. Установка элементарна.
555serg Дата: Чт, 24.12.2015, 12:15  |                                                                                                                Сообщение # 7
Группа: Проверенные
Ранг:  Пытаюсь разобраться
Сообщений: 41
Репутация: 0   ±
Замечания:   ±
На сайте с 12.12.2011

Статус: Offline

Спасибо Anatol, буду думать над вашим замечанием. Если у Вас появиться 
вдруг свободное время и вы согласитесь мне помочь разобраться в моей проге,
тогда я сразу выложу ее на форуме. Просто не думаю что оно у кого то есть. smile

Добавлено (24.12.2015, 12:02)
---------------------------------------------
ADMIN, вот я туплю, два раза искал у себя на компе эти PPI файлы, или не находил,
или не мог открыть. Сейчас попробовал открыть блокнотом - все получилось.
И еще, не понятен один момент, если не трудно подскажите. В PDF файле на 
PIC16F876 в слове конфигурации есть девятый бит WRT - бит разрешения записи
во FLASH память программ. Есть два возможных значения этого бита - оставить
как есть в единице, это у нас - разрешена запись во FLASH память программ, или
сбросить в ноль - запрещена запись во FLASH память программ. В плагине
Fuse Configurator который нормально установился есть бит WRT, по идее должно
быть на выбор два значения, но предлагается три варианта 1 - WRT_OFF - No flash
protected (нет защиты флеш), 2  WRT_ENABLED_ON - All flash protected (вся влеш 
защищена), 3 WRT_ENABLED_OFF - No flash protected (нет защиты флеш). Если 
бы в конфигураторе можно было ставить 0 или 1, то согласно Datashit все было
бы понятно. Порекомендуйте что выбрать, если мне нужно разрешить запись во
FLASH память программ.

Добавлено (24.12.2015, 12:15)
---------------------------------------------
Anatol возможно Вы правы. Прописал в ручную все биты конфигурации:
  Config CP_OFF, DEBUG_OFF, CPD_OFF, LVP_OFF, PWRTE_ON, WDT_OFF, XT_OSC, BOREN_OFF, 
  WRTE_ON
Проблема с временной задержкой осталась. Буду думать что же делать.

anatol Дата: Чт, 24.12.2015, 13:44  |                                                                                                                Сообщение # 8
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 472
Репутация: 32   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

555serg, без обид. Покуда не вьедете в строение ПИКа и взаимодействие разных его частей - будут непонятки и мучения. Я сам такой. И все что сказал выше в силе.
Наталкивание на мысль Таймеры, ЦАП и АЦП, порты, приемо-передатчики...- ФИЗИЧЕСКИЕ устройства. Настраиваемые устройства. Следовательно они и работают на физическом уровне. К примеру таймер. Вы подключили к нему источник тактирования, записали начальное число или сбросили в "0" и дали команду фас, т.е. Start. И таймер будет считать по кругу пока не остановят. Устройство сравнения в которое вы записали некое число ждет его от таймера, и при совпадении, выбрасывает флаг, т.е. создает прерывание. Если прерывания разрешены, то основная программа останавливается и переходит по адресу находящемуся в ячейке 0004Н (т.н. вектор прерывания) и выполняется программа прерывания.
Но таймер во время прерывания работает (он физическое устройство) если его не остановить.
Дальше сами...
Если вы применяете Delay , то и во время ее выполнения могут происходить прерывания. Вот и рваные тайминги.

Сообщение отредактировал anatol - Чт, 24.12.2015, 13:45
555serg Дата: Чт, 24.12.2015, 16:45  |                                                                                                                Сообщение # 9
Группа: Проверенные
Ранг:  Пытаюсь разобраться
Сообщений: 41
Репутация: 0   ±
Замечания:   ±
На сайте с 12.12.2011

Статус: Offline

Анатолий обижаться не на что, все в порядке. Спасибо за вашу помощь. Был уверен в
работоспособности своего алгоритма - программы, так как первый программный таймер
функционирующий в данном алгоритме - работает без проблем. Как только добавил вто-
рой, заметил проблему с нестабильностью отмеряемого временного интервала. Хотя
теоретически по данному алгоритму закладывалась возможность одновременного за-
действования нескольких таймеров. Как вы и предполагали, что проблема не в Протоне,
и не в битах конфигурации, принялся внимательнее проверять свою программу. В итоге
обнаружил в теле основного цикла один не сбрасываемый флаг в процедуре проверки
и остановки этого самого таймера. Все заработало на ура. :)
Вкратце алгоритм работы программы таков:
Используется прерывание по таймеру TMR0 и таймеру TMR1. В подпрограмме прерывания
опрашиваются лишь флаги отвечающие за каждое из прерываний, это PIR1.0 для TMR1, и
INTCON.2 для TMR0. Здесь же этим событиям присваиваются промежуточные флаги, кото-
рые уже обрабатываются в основной программе.
Сам цикл программы происходит в ОСНОВНОМ ЦИКЛЕ. В котором лишь есть условия
проверок. Это проверки промежуточных флагов по переполнениям таймеров TMR0 и TMR1,
по одному из них программа уходит в подпрограмму сканирования с антидребезговой проце-
дурой пяти кнопок и одного логического уровня , а так же по каждому второму этому же пре-
рыванию в подпрограмму преобразования АЦП. По второму прерыванию программа уходит в подпрограмму формирования меандра. Так же в основном цикле ведется проверка на вклю-
чение бузера, проверка на начало отсчета ( инкрементирование ) обеих ( пока ) таймеров,
проверка фактов нажатия на любую из пяти кнопок и проверка логического уровня, с отправ-
кой в подпрограмму принятие решений по фактам нажатия на кнопки. Этот цикл проверок
небольшой, и он повторяется как и положено вновь и вновь.
По завершению работы любой из подпрограмм продолжается выполнение ОСНОВНОГО
ЦИКЛА  со строк следующих после оператора GOSUB отправляющего в эту самую под-
программу.
Все это расписал в надежде на то что бы получить от Вас Анатолий конструктивную критику.
Буду рад увидеть что у меня не так, а что правильно. Заранее спасибо. Прогу прилагаю.

Добавлено (24.12.2015, 16:45)
---------------------------------------------
Если интересно, могу выложить схему и фото макетной платы.
Прикрепления: 0840522.bas (42.0 Kb)

Сообщение отредактировал 555serg - Чт, 24.12.2015, 16:45
anatol Дата: Чт, 24.12.2015, 19:21  |                                                                                                                Сообщение # 10
Группа: Проверенные
Ранг:  Помогаю всем
Сообщений: 472
Репутация: 32   ±
Замечания:   ±
На сайте с 10.02.2010

Статус: Offline

555serg, как понял Сергей. К сожалению усердно заняться вашей программой не могу - есть время куда потратить. А так вы и сами справитесь - уверен. Ступоры бывают у всех, где просто зацикливание, где-то недостаток знаний и опыта, только не лень. Поэтому и стараюсь не давать готовых рецептов. Я думаю вам приятно было самому дойти до цели.
Единственное, старайтесь оставлять процентов двадцать памяти и ресурсов под модификацию. Тогда доработки легче будет делать, а не переделывать заново. А также максимально используйте "железные" блоки вместо программных.
Программу, если получится, посмотрю в этом году. Но не ожидайте резюме - могу просто забыть.
555serg Дата: Вс, 23.04.2017, 02:34  |                                                                                                                Сообщение # 11
Группа: Проверенные
Ранг:  Пытаюсь разобраться
Сообщений: 41
Репутация: 0   ±
Замечания:   ±
На сайте с 12.12.2011

Статус: Offline

Анатолий спасибо, вам за помощь. Очень ценю ваши рекомендации, почему
и вопрошал к Вам. Всех участников форума, администраторов, и гостьей сайта
с наступающим Новым годом!

Добавлено (23.04.2017, 02:33)
---------------------------------------------
Доброго времени суток. В одной из своих программ захотелось сконфигурировать микроконтроллер побитно, воспользовавшись возможностью писать в ПРОТОНЕ на Asm. Вот начало программы:

Device = 16F877A  Asm
__CONFIG 0x1EB1
EndAsm

'------------------ Настройки подключения OLED индикатора --------------------------------------------------------------------

Declare LCD_Type alpha                ' тип ЖКИ - буквенно цифровой
Declare LCD_DTPin PORTB.4       ' порт  данных ЖКИ
Declare LCD_ENPin PORTB.3       ' управление цепью  E
Declare LCD_RSPin PORTB.2       ' управление цепью RS
Declare LCD_Interface 4                ' использовать 4-х битную шину данных
Declare LCD_CommandUs 2000   ' задержка перед посылкой команды
Declare LCD_DataUs 50                ' задержка перед посылкой данных
Declare LCD_Lines 2                      ' количество строк равно двум
...
дальше как обычно, переменные, и остальные настройки.

сохраняю, компилирую, результат:
ASM ERROR: Error[118]  C:/... адрес места записи на диске... : Owerwriting previous address contents (2007)
ASM ERROR: ASSEMBLER ERRORS. HEX file not Created

что в переводе означает:
перезапись содержимого предыдущего адреса (2007)
шестнадцатеричный файл не создан

Подскажите профи, что я не так делаю.
Зараннее спасибо!

P.S. Изначально с помощью протоновского Config, была сделана и запущена программа - все работало
бес проблем. Неужели в данной ситуации нет возможности задать конфигурацию с помощью ASM ?

Сообщение отредактировал 555serg - Пн, 24.04.2017, 01:59
ЯНДЕКС Дата: 23.04.2017
ivan_fd Дата: Вс, 23.04.2017, 09:38  |                                                                                                                Сообщение # 12
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

А Вы посмотрите внимательно, Fuse Configurator умеет генерировать и АСМ строку.
555serg Дата: Пн, 24.04.2017, 02:52  |                                                                                                                Сообщение # 13
Группа: Проверенные
Ранг:  Пытаюсь разобраться
Сообщений: 41
Репутация: 0   ±
Замечания:   ±
На сайте с 12.12.2011

Статус: Offline

Спасибо ivan_fd что взялись помочь. У меня в программе Fuse Configurator, первое - в меню Device позволяет выбрать тип используемого микроконтроллера, второе - основное меню Fuses Settings, позволяет устанавливать вручную сами биты (включать/отключать использование модулей и режимов работы) конфигурации, и третье последнее меню - Config Code, позволяет увидеть и перенести в программу сгенерированную строку битов конфигурации в виде понятном для компилятора ПРОТОНА. Асемблерную строку нигде не могу найти. Подскажите где я туплю.)))
Заранее спасибо.
ivan_fd Дата: Пн, 24.04.2017, 13:42  |                                                                                                                Сообщение # 14
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline

К сожалению Протоном сейчас не пользуюсь. Но вечером смогу посмотреть,
если Вам не спешно.
ivan_fd Дата: Пн, 24.04.2017, 23:04  |                                                                                                                Сообщение # 15
Группа: Модераторы
Ранг:  Специалист
Сообщений: 894
Репутация: 124   ±
Замечания:   ±
На сайте с 12.01.2009

Статус: Offline





Удачи.
Форум Picbasic.ru » Скорая помощь начинающим » Помощь в вопросах программирования » Директива Config (ПРАВИЛЬНЫЕ имена битов)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск: