Перейти к содержанию
    

Bargul

Новичок
  • Постов

    4
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный
  1. Вы имели ввиду ART? Я так понимаю ART = Prefetch. Он выключен. Его выключение помогло частично, исчезли проблемы с циклами ожидания (если зациклиться в пустом бесконечном цикле раньше фонило, теперь нет). Однако, при работе программы в целом не помогает.
  2. Проблема локализована. Виновата внутренняя flash микроконтроллера. При выполнении кода из оперативной памяти (__ramfunc) всё замечательно. Проблема с while описанная выше происходила из-за включённого Prefetch. Однако убрать проблему не удаётся, изменение частоты кварца или SSCG не помогает, настройки флеши (кэш или задержка на чтение) ничего не дают. Программа слишком большая, чтобы запихнуть её в оперативную память. Однако вариант решения должен быть, такой же микроконтроллер из чужой железяки (с их прошивкой естественно) не фонит. Ps. Проблема точно не в плате, вариант с платой проверялся очень тщательно.
  3. Насчёт платы, переразводили несколько раз, пока положительного эффекта не добились. Плата четырёхслойная со сквозными переходными отверстиями. Под антенной 4 слоя земли отведённой специально для приёмника и антенны. Единственно, что контроллер достаточно близко расположен с противоположной стороны антенны (наползает углом) и рядом с ним есть область переходных отверстий. Возможно, стоит попробовать шесть слоёв и сильнее заэкранировать антенну. Реально помогает только увеличение расстояния между микроконтроллером и самой антенной. Если взять плату, на которой расположен приёмник и GPS антенна (не обязательно нашу, любую) и запитать её от отдельного источника. И взять одну из проблемных плат (с подключенным по минимуму микроконтроллером), то при сближении сигнал на контрольной резко ухудшается. Попробую подключить контроллер навесным монтажом вне платы, посмотрю результат. Однако в описанном выше случае плата перестаёт фонить (стабильно) и хотелось бы понять причины такого поведения. Насчёт кода, я наверно не удачно оставил название функции (наводит на мысли о SPI), однако код следует воспринимать буквально. После входа происходит зацикливание без всяких действий, ничего не настраивается. Более нормальный вид: void main (void) { pio_open(); // просто настройка портов (для светодиодов, без всяких альтернативных функций) asm("BLX %0"::"r"(&at45f_init)); __NOP(); // Остальной код } int at45f_init(void) { while(1) {;} // Остальной код }
  4. Здравствуйте! Недавно столкнулся с проблемой. Электромагнитные помехи от STM32F205VET6 влияют (не в лучшую сторону) на приём сигналов от GPS и ГЛОНАСС спутников. Был произведён эксперимент. Программа зациклена "вайлом" в самом начале (после настройки тактирования) и с помощью замыкания NRST микроконтроллера на землю выяснено, что в таком виде микроконтроллер не влияет на сигнал. Если зацикливаться чуть позже, то при включении микроконтроллера уровень сигнала резко падает, однако влияет не периферия микроконтроллера, а конфигурация (размещение в памяти???) кода: В данном случае при включении микроконтроллера уровень сигнала не падает: asm("BLX %0"::"r"(&at45f_init)); int at45f_init(void) { while(1) {;} } В этом случае при включении микроконтроллера сигнал заметно ухудшается: asm("BLX %0"::"r"(&at45f_init)); __NOP(); int at45f_init(void) { while(1) {;} } Я в тупике, почему это происходит. Возможно, кто сталкивался с похожей ситуацией? Спасибо за ответы!
×
×
  • Создать...