Не переносится код с одного контроллера на другой
|
vladh |
Дата: Пн, 24.12.2018, 15:48 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
271
Замечания:
±
На сайте с 15.10.2007
Статус:
Offline
|
Уважаемые коллеги. Помогите. Сейчас делаю контроллер заряда АКБ от солнечной панели. Дело в том, что разложил плату под контроллер без внешнего кварца, т.е. под 18F4520, а отлаживал программу на 18F452! Решил, что легко переброшу код, а оно не пошло. На экране отображается также, кроме цифровых значений. Но вот клавиатуру вообще не воспринимает. Не могу понять в чем дело. В коде программы есть подпрограмма под меткой KeyPad. В этой подпрограмме поочередно "1" подается на горизонтали клавиатуры, которым присвоил символы HorA, HorB, HorC, HorD. И даже если программу запустить в пошаговом режиме не видно что на выходах соответствующих портов в этот момент появляются "1". Правда если здесь в любой строке вставить установку любого из этих портов в виде PORTB.3 = 1, то единица появляется на выходе порта, но на следующей строчке она пропадает, хотя перестановки в ноль не было! Может кто докопается до сути происходящего. И еще. Почему значения измеренных потенциалов на соответствующих входах отличаются?
|
|
|
|
|
xvovanx |
Дата: Вт, 25.12.2018, 00:37 | Сообщение # 2 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
356
Замечания:
±
На сайте с 02.05.2013
Статус:
Offline
|
Сравнивайте даташиты на процессора. У разных чипов по разному может регистрами прописываться цифрововой/ аналоговый входы/ выходы и внутренние привязки к питанию. Отличия конфигураций в начале проги также без внимания не оставить.
|
|
|
|
|
Aleksey_174 |
Дата: Вт, 25.12.2018, 14:20 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
75
Замечания:
±
На сайте с 22.01.2017
Статус:
Offline
|
vladh, Где вы Протеусы такие берете?
|
|
|
|
|
dimvad |
Дата: Вт, 25.12.2018, 16:11 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
73
Замечания:
±
На сайте с 20.07.2012
Статус:
Offline
|
Как минимум, чтоб в 4520 сконфигурировать первые 5 входов как аналоговые надо, чтоб ADCON1 = %00001010. Про остальное трудно сказать, т к Ваш протеус слишком новый, не открывается ни хера. Да и у Вас задействованы 6 входов АЦП, вроде.
|
|
|
|
|
vladh |
Дата: Ср, 26.12.2018, 05:06 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
271
Замечания:
±
На сайте с 15.10.2007
Статус:
Offline
|
Цитата Aleksey_174 (  ) vladh, Где вы Протеусы такие берете? А что Вам не понравилось? Вообще всегда многое беру на Sonsivri. Я в этой версии уже давно работаю. Поэтому мне казалось, что он стоит почти у всех. Конечно, надо держать парочку протеусов на компьютере. Один из которых значительно старше. Кстати может посоветуете какую версию установить дополнительно, которая с большей вероятностью есть у большинства?
Добавлено (26.12.2018, 05:22) ---------------------------------------------
Цитата dimvad (  ) Как минимум, чтоб в 4520 сконфигурировать первые 5 входов как аналоговые надо, чтоб ADCON1 = %00001010. Про остальное трудно сказать, т к Ваш протеус слишком новый, не открывается ни хера. Да и у Вас задействованы 6 входов АЦП, вроде. Меня в первую очередь волнует даже не АЦП преобразование, а то, почему не работает клавиатура. Я вот узнал вчера, что надо было в конфигурации указать: PBADEN = OFF что означает, что все вводы порта В должны работать не как аналоговые входа, а как цифровые вход/выход. Но к сожалению мне пока эти знания не помогли. Да и Протеус похоже не реагирует на эту строчку.Добавлено (26.12.2018, 10:48) ---------------------------------------------
Цитата dimvad (  ) Как минимум, чтоб в 4520 сконфигурировать первые 5 входов как аналоговые надо, чтоб ADCON1 = %00001010. Да, согласен с Вашим замечанием. Для контроллера 18F4520 в моём случае такое значение как у меня стоит для регистра ADCON1 не подходит для моей задачи. У меня стоит 11000000, а это значит, что задействованы все возможные выводы как аналоговые, и тогда клавиатура действительно работать не должна. Исправил на то, что Вы посоветовали, но к сожалению пока не помогло.
Сообщение отредактировал
vladh - Ср, 26.12.2018, 06:04
|
|
|
|
|
ivan_fd |
Дата: Ср, 26.12.2018, 11:05 | Сообщение # 6 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
1036
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
vladh, что бы скачать на sonsivri нужна регистрация. А там зарегится нереально, почти.
Поставьте 8.7, его найти не проблема.
P.S: вы говорите, что переделываете под контроллер 4520, а в протеусе у Вас 4458.
Меня все время преследуют умные мысли...но я быстрее!!!
Сообщение отредактировал
ivan_fd - Ср, 26.12.2018, 11:34
|
|
|
|
|
vladh |
Дата: Ср, 26.12.2018, 13:28 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
271
Замечания:
±
На сайте с 15.10.2007
Статус:
Offline
|
Цитата ivan_fd (  ) P.S: вы говорите, что переделываете под контроллер 4520, а в протеусе у Вас 4458. Ну Иван, Вы молодчина. А я два дня и себе и Вам мозги компосирую. И что интересно заставил в Протеусе работать этот код, который делал под 4520, чтобы его выполнял 4458. Для этого резисторы, которые весят входных выводах клавиатуры отцепить от земли. Дело в том, что я начинал эти свои эксперименты с контроллером, который у меня оставался от старой разработки, в которой требовался АЦП с 12 разрядным разрешением, а это был 18F4458, Но затем появилась ПП, которую заказывал под 4520, в котором имеется внутренний кварц. Поэтому печатную плату разложил без внешнего кварца. Но мне купили 18F452! Пришлось переделывать под этот контроллер. И вот когда программа уже почти вся была готова, сам купил 4520. Стал переделывать программу под него и она в Протеусе не пошла. А оказалось дело было не в бобине. Слава богу, что все выяснилось. Иван большое спасибо. dimvad и Вам большое спасибо.
|
|
|
|
|
anatol |
Дата: Ср, 26.12.2018, 21:46 | Сообщение # 8 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
583
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
Только что нашёл Proteus Professional 8.8 SP1 Build 27031
Скачать программу Proteus Professional 8.8 SP1 Build 27031 (486,10 МБ): https://turbobit.net/nq11rs32j1aw.html https://hitfile.net/C5s7IQ2 http://nitroflare.com/view....031.rar https://douploads.com/j542s6o....mdhttps
Сообщение отредактировал
anatol - Ср, 26.12.2018, 21:46
|
|
|
|
|
vladh |
Дата: Чт, 27.12.2018, 05:59 | Сообщение # 9 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
271
Замечания:
±
На сайте с 15.10.2007
Статус:
Offline
|
У Козьмы Пруткова есть выражение: "Щелкни кобылу в нос - она махнет хвостом". Эта фраза мне пришла в голову в связи с выявленной странностью поведения контроллеров с которыми я столкнулся проводя эту свою работу. А именно это PIC18F452, PIC18F4520, PIC18F4458. Причем это явление наблюдается как с живым контроллером так и с виртуальным. А явление заключается в следующем. Для работы используемого мною типа кнопок, я настраиваю выводы контроллера так: 4 вывода, которые ассоциируются с горизонталями клавиатур на выход, а те что с вертикалями (3 вывода) на вход. Так вот оказалось, что когда я включаю ШИМ по ССР1 то вывод PORTB.2 перекидывается в состояние "выход" и как следствие кнопки правого ряда перестают работать. Я разместил добавочную команду восстановления TRISB.2 = 1 сразу после команды HPWM. Здесь она восстанавливала утраченное свойство. Может кто догадается как связан "нос кобылы" - оператор HPWM с "её хвостом", т.е. c состоянием направления вывода PORTB(вход/выход)? Я объяснения этому явлению не нашел! P.S. Теперь версия 8.8, как я понимаю благодаря anatol, есть у всех.
Сообщение отредактировал
vladh - Чт, 27.12.2018, 06:19
|
|
|
|
|
ivan_fd |
Дата: Пт, 28.12.2018, 15:01 | Сообщение # 10 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
1036
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
vladh, Тут претензии не к контроллеру, а к компилятору. Он не должен трогать порт B2, так как этот порт не имеет отношения к ШИМ никакого!
Но это не проблема, если внимательно почитать мануал на компилятор, то там написано:
Цитата Notes Some devices, such as the PIC16F62x, and PIC18F4xx, have alternate pins that may be used for Hpwm. The following Declares allow the use of different pins: - Declare CCP1_Pin Port . Pin ' Select Hpwm port and bit for CCP1 module. Declare CCP2_Pin Port . Pin ' Select Hpwm port and bit for CCP2 module.
То есть нужно прописать Declare CCP1 и CCP2, и все будет работать.
P.S: что то админ намутил с форумом, не знаю каким чудом я вошел в учетную запись. Никак не входило.
Меня все время преследуют умные мысли...но я быстрее!!!
|
|
|
|
|
ivan_fd |
Дата: Вс, 30.12.2018, 17:12 | Сообщение # 11 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
1036
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Скачать протеус с turbobit так и не смог. Другие ссылки не рабочие. Нашел тут, торент.
Меня все время преследуют умные мысли...но я быстрее!!!
|
|
|
|