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

[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Модератор форума: demanik, ivan_fd  
Нужна помощь18F6722
Techno-holst Дата: Пт, 26.09.2025, 10:50  |                                                                                                                Сообщение # 1
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 28
Репутация: 0   ±
Замечания:   ±
На сайте с 13.07.2011

Статус: Offline

Уважаемые форумчане, помогите пожалуйста! Имеем устройство которое меряет частоту и на основании этих данных принимает решение что делать оборудованию. Частоту измеряю с помощью захвата на порту C.2
В чем проблема! Попадается частота на которой контроллер выдает непонятные мне данные
23432 Гц таймер тикает до значения 20481
23433 Гц таймер тикает до значения 20480 или 20735
23434 Гц таймер тикает до значения 20480 или 20737
23435 Гц таймер тикает до 20737
23436 Гц таймер тикает до значения 20477 или 20737
23437 Гц таймер тикает до значения 20476
На остальных рабочих частотах такой проблемы не обнаруживалось.
Ошибка появляется как в железе так и в протеусе
Кто поможет отблагодарю материально!

Добавлено (08.10.2025, 17:04)
---------------------------------------------
Еще вопрос по поводу этого контроллера. При заполнении памятью более чем на 50% компилятор выдает ошибку
$IMAGE1$
$IMAGE2$
при значении меньше чем 65536 ошибки нет.
Как победить эту проблему? программа еще не вся написана, а получается места уже нет

Прикрепления: CHASTOTA.rar (85.1 Kb)
ЯНДЕКС Дата: 26.09.2025
Techno-holst Дата: Ср, 08.10.2025, 17:11  |                                                                                                                Сообщение # 2
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 28
Репутация: 0   ±
Замечания:   ±
На сайте с 13.07.2011

Статус: Offline

Прикрепления: 44508971.jpg (285.3 Kb) · 14550660.jpg (284.3 Kb)
xvovanx Дата: Чт, 09.10.2025, 21:08  |                                                                                                                Сообщение # 3
Группа: Модераторы
Ранг:  Помогаю всем
Сообщений: 363
Репутация: 65   ±
Замечания:   ±
На сайте с 02.05.2013

Статус: Offline

Techno-holst, 1-попробуйте написать "On_Hardware_Interrupt" т.е. использовать железные прерывания, а не програмные, там куча всяких задержек возникает и т.п. И 2- никогда не используйте для меток подпрограмм словосочетания команд, ваше "On_Interrupt Flash" запросто может перекидывать вашу программу черт знает в какую область памяти, Протон команду Flash жирным подсвечивает, см.скрин.
И странное указание переменных как части Word, к чему такие трудности, и опять же некорректное использование названий для переменных - CCP1, CCP2, TMR0, которые как команды или как регистры могут всплыть.

П.С. в программу не вникал как у вас там подсчет идет, но почему бы не попробовать готовую команду счетчика Variable = Counter Pin, Period
Прикрепления: 1616307.jpg (12.4 Kb) · 0577210.jpg (6.3 Kb)

Сообщение отредактировал xvovanx - Чт, 09.10.2025, 21:37
Techno-holst Дата: Пт, 10.10.2025, 05:08  |                                                                                                                Сообщение # 4
Группа: Проверенные
Ранг:  Начал соображать
Сообщений: 28
Репутация: 0   ±
Замечания:   ±
На сайте с 13.07.2011

Статус: Offline

Синтаксис:On_Interrupt {GotoLabelилиOn_Hardware_Interrupt {GotoLabel это железные прерывания"Протон команду Flash жирным подсвечивает, см.скрин"- у меня не подсвечивает.
При считывании регистра CCP1 такой проблемы не обнаружилось и я успокоился с этим вопросом.

А вот что делать с памятью программ пока не решенный вопрос
xvovanx Дата: Вс, 26.10.2025, 20:53  |                                                                                                                Сообщение # 5
Группа: Модераторы
Ранг:  Помогаю всем
Сообщений: 363
Репутация: 65   ±
Замечания:   ±
На сайте с 02.05.2013

Статус: Offline

Techno-holst, подробнее объясните про $IMAGE1$ и $IMAGE2$. Загружены массивы с картинками? Память состоит из двух банков и если массив попадает на границу банков возникают ошибки компиляции. Пробуйте массивы поставить с самом начале программы или в конце или часть в начале, часть массивов в конце. Так программа будет на границе банков и не будет ошибок.
Сообщение отредактировал xvovanx - Пн, 27.10.2025, 20:36
  • Страница 1 из 1
  • 1
Поиск: