Директива Config
|
|
555serg |
Дата: Вт, 22.12.2015, 16:51 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Пытаюсь разобраться
Сообщений:
41
Замечания:
±
На сайте с 12.12.2011
Статус:
Offline
|
Доброго времени суток. Решил в своей программе не полагаться на волю компилятора ( спасибо MIXaS надоумил ), а прописать все биты конфигурации в ручном режиме. Особенно это желание стало возникать когда одна и та же временная задержка выпол- няемая в основном цикле по прерыванию таймера TMR0, начала выполнятся с разным - плавающим временем исполнения. Далее принялся искать папку С:\Program Files\Proton\PDS\Inc каталога компилятора, как указанно в описании к Proton+IDE что бы найти правильные имена этих самых битов конфигурации, - но не обнаружил. Просьба к форумчанам, если у кого есть эта самая папка - можете выложить ее здесь на форуме? И еще вопрос. Может проще сделать так: ASM __Config .............................................................................................................. ENDASM Как думаете? Заранее благодарю за помощь.
|
|
|
|
brown |
Дата: Вт, 22.12.2015, 17:30 | Сообщение # 2 |
Группа:
Пользователи
Ранг:
Помогаю всем
Сообщений:
333
Замечания:
±
На сайте с 18.09.2007
Статус:
Offline
|
Для Протона есть плагин, который формирует строку конфига. Посмотрите в разделе файлы - должен быть.
Век живи - век учись! К концу жизни поймешь, что ничего не знаешь...
|
|
|
|
555serg |
Дата: Вт, 22.12.2015, 19:12 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Пытаюсь разобраться
Сообщений:
41
Замечания:
±
На сайте с 12.12.2011
Статус:
Offline
|
Спасибо. Есть у кого еще варианты? Добавлено (22.12.2015, 19:12) --------------------------------------------- Спасибо. Есть у кого еще варианты?
|
|
|
|
anatol |
Дата: Ср, 23.12.2015, 14:02 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
Цитата 555serg ( ) временная задержка выполняемая в основном цикле по прерыванию таймера TMR0 Я выделил возможные причины проблемы. Разберитесь как выполняются прерывания. Без вашей программы тарахтеть нет смысла. Протон ни при чём. И конфиг - тоже.
|
|
|
|
ADMIN |
Дата: Чт, 24.12.2015, 04:49 | Сообщение # 5 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Я названия конфиг. бит находил в папке C:\Program Files\ProtonIDE\PDS\Includes\PPI в конце каждого файла есть описание и названия. Но проблема, все-таки, скорее всего , в программе.
|
|
|
|
MiXaS |
Дата: Чт, 24.12.2015, 08:10 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
549
Замечания:
±
На сайте с 02.10.2010
Статус:
Offline
|
Цитата brown ( ) Для Протона есть плагин, который формирует строку конфига. Посмотрите в разделе файлы - должен быть. Это самый простой, быстрый, наглядный, а самое главное рабочий вариант. Плагин называется Fuse Configurator. Установка элементарна.
|
|
|
|
555serg |
Дата: Чт, 24.12.2015, 12:15 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Пытаюсь разобраться
Сообщений:
41
Замечания:
±
На сайте с 12.12.2011
Статус:
Offline
|
Спасибо Anatol, буду думать над вашим замечанием. Если у Вас появиться вдруг свободное время и вы согласитесь мне помочь разобраться в моей проге, тогда я сразу выложу ее на форуме. Просто не думаю что оно у кого то есть. Добавлено (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 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
555serg, без обид. Покуда не вьедете в строение ПИКа и взаимодействие разных его частей - будут непонятки и мучения. Я сам такой. И все что сказал выше в силе. Наталкивание на мысль Таймеры, ЦАП и АЦП, порты, приемо-передатчики...- ФИЗИЧЕСКИЕ устройства. Настраиваемые устройства. Следовательно они и работают на физическом уровне. К примеру таймер. Вы подключили к нему источник тактирования, записали начальное число или сбросили в "0" и дали команду фас, т.е. Start. И таймер будет считать по кругу пока не остановят. Устройство сравнения в которое вы записали некое число ждет его от таймера, и при совпадении, выбрасывает флаг, т.е. создает прерывание. Если прерывания разрешены, то основная программа останавливается и переходит по адресу находящемуся в ячейке 0004Н (т.н. вектор прерывания) и выполняется программа прерывания. Но таймер во время прерывания работает (он физическое устройство) если его не остановить. Дальше сами... Если вы применяете Delay , то и во время ее выполнения могут происходить прерывания. Вот и рваные тайминги.
Сообщение отредактировал
anatol - Чт, 24.12.2015, 13:45
|
|
|
|
555serg |
Дата: Чт, 24.12.2015, 16:45 | Сообщение # 9 |
Группа:
Проверенные
Ранг:
Пытаюсь разобраться
Сообщений:
41
Замечания:
±
На сайте с 12.12.2011
Статус:
Offline
|
Анатолий обижаться не на что, все в порядке. Спасибо за вашу помощь. Был уверен в работоспособности своего алгоритма - программы, так как первый программный таймер функционирующий в данном алгоритме - работает без проблем. Как только добавил вто- рой, заметил проблему с нестабильностью отмеряемого временного интервала. Хотя теоретически по данному алгоритму закладывалась возможность одновременного за- действования нескольких таймеров. Как вы и предполагали, что проблема не в Протоне, и не в битах конфигурации, принялся внимательнее проверять свою программу. В итоге обнаружил в теле основного цикла один не сбрасываемый флаг в процедуре проверки и остановки этого самого таймера. Все заработало на ура. :) Вкратце алгоритм работы программы таков: Используется прерывание по таймеру TMR0 и таймеру TMR1. В подпрограмме прерывания опрашиваются лишь флаги отвечающие за каждое из прерываний, это PIR1.0 для TMR1, и INTCON.2 для TMR0. Здесь же этим событиям присваиваются промежуточные флаги, кото- рые уже обрабатываются в основной программе. Сам цикл программы происходит в ОСНОВНОМ ЦИКЛЕ. В котором лишь есть условия проверок. Это проверки промежуточных флагов по переполнениям таймеров TMR0 и TMR1, по одному из них программа уходит в подпрограмму сканирования с антидребезговой проце- дурой пяти кнопок и одного логического уровня , а так же по каждому второму этому же пре- рыванию в подпрограмму преобразования АЦП. По второму прерыванию программа уходит в подпрограмму формирования меандра. Так же в основном цикле ведется проверка на вклю- чение бузера, проверка на начало отсчета ( инкрементирование ) обеих ( пока ) таймеров, проверка фактов нажатия на любую из пяти кнопок и проверка логического уровня, с отправ- кой в подпрограмму принятие решений по фактам нажатия на кнопки. Этот цикл проверок небольшой, и он повторяется как и положено вновь и вновь. По завершению работы любой из подпрограмм продолжается выполнение ОСНОВНОГО ЦИКЛА со строк следующих после оператора GOSUB отправляющего в эту самую под- программу. Все это расписал в надежде на то что бы получить от Вас Анатолий конструктивную критику. Буду рад увидеть что у меня не так, а что правильно. Заранее спасибо. Прогу прилагаю.
Добавлено (24.12.2015, 16:45) --------------------------------------------- Если интересно, могу выложить схему и фото макетной платы.
Сообщение отредактировал
555serg - Чт, 24.12.2015, 16:45
|
|
|
|
anatol |
Дата: Чт, 24.12.2015, 19:21 | Сообщение # 10 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
555serg, как понял Сергей. К сожалению усердно заняться вашей программой не могу - есть время куда потратить. А так вы и сами справитесь - уверен. Ступоры бывают у всех, где просто зацикливание, где-то недостаток знаний и опыта, только не лень. Поэтому и стараюсь не давать готовых рецептов. Я думаю вам приятно было самому дойти до цели. Единственное, старайтесь оставлять процентов двадцать памяти и ресурсов под модификацию. Тогда доработки легче будет делать, а не переделывать заново. А также максимально используйте "железные" блоки вместо программных. Программу, если получится, посмотрю в этом году. Но не ожидайте резюме - могу просто забыть.
|
|
|
|
555serg |
Дата: Вс, 23.04.2017, 02:34 | Сообщение # 11 |
Группа:
Проверенные
Ранг:
Пытаюсь разобраться
Сообщений:
41
Замечания:
±
На сайте с 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
|
|
|
|
ivan_fd |
Дата: Вс, 23.04.2017, 09:38 | Сообщение # 12 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
А Вы посмотрите внимательно, Fuse Configurator умеет генерировать и АСМ строку.
|
|
|
|
555serg |
Дата: Пн, 24.04.2017, 02:52 | Сообщение # 13 |
Группа:
Проверенные
Ранг:
Пытаюсь разобраться
Сообщений:
41
Замечания:
±
На сайте с 12.12.2011
Статус:
Offline
|
Спасибо ivan_fd что взялись помочь. У меня в программе Fuse Configurator, первое - в меню Device позволяет выбрать тип используемого микроконтроллера, второе - основное меню Fuses Settings, позволяет устанавливать вручную сами биты (включать/отключать использование модулей и режимов работы) конфигурации, и третье последнее меню - Config Code, позволяет увидеть и перенести в программу сгенерированную строку битов конфигурации в виде понятном для компилятора ПРОТОНА. Асемблерную строку нигде не могу найти. Подскажите где я туплю.))) Заранее спасибо.
|
|
|
|
ivan_fd |
Дата: Пн, 24.04.2017, 13:42 | Сообщение # 14 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
К сожалению Протоном сейчас не пользуюсь. Но вечером смогу посмотреть, если Вам не спешно.
|
|
|
|
ivan_fd |
Дата: Пн, 24.04.2017, 23:04 | Сообщение # 15 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Удачи.
|
|
|
|