Директива Config - Форум Picbasic.ru
Регистрация | Вход
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 11
Форум Picbasic.ru » Скорая помощь начинающим » Помощь в вопросах программирования » Директива Config (ПРАВИЛЬНЫЕ имена битов)
Директива Config
555serg Дата: Вт, 22.12.2015, 16:51  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Пытаюсь разобраться
Сообщений: 40
Репутация: 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
Группа: Модераторы
Ранг:  Помогаю всем
Сообщений: 335
Репутация: 10   ±
Замечания:   ±
На сайте с 18.09.2007

Статус: Offline

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

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

Статус: Offline

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

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

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

Статус: Offline

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

Статус: Offline

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

Статус: Offline

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

Статус: Offline

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

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

Статус: Offline

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

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

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

Статус: Offline

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

Статус: Offline

Анатолий спасибо, вам за помощь. Очень ценю ваши рекомендации, почему
и вопрошал к Вам. Всех участников форума, администраторов, и гостьей сайта
с наступающим Новым годом!
Форум Picbasic.ru » Скорая помощь начинающим » Помощь в вопросах программирования » Директива Config (ПРАВИЛЬНЫЕ имена битов)
Страница 1 из 11
Поиск: