Jump to content

    

Neznaika

Участник
  • Content Count

    107
  • Joined

  • Last visited

Everything posted by Neznaika


  1. EVK1100 + bootloader

    Да, попытался сбросить WDT... Результат тот же) Сброс приложения... Нет входа в загрузчик...
  2. EVK1100 + bootloader

    Да, я сам думаю, что заход в загрузчик есть, но почему не реагирует на состояние ноги входа в него не понимаю. После включения питания и после внешнего ресета с кнопки я в него захожу, а после прыжка на 0х80000000 нет, странно. К сожалению нет проекта загрузчика, пробую его сейчас как то раздобыть в инете, но пока безуспешно. Я сам толком не понимаю, что это - { asm("icall r12");} , взял из примерочного проекта, стоял к нему комментарий о сохранении адреса в регистре R12. Визуально - преобразование команды ассемблера в С++, но это приводит к ресету приложения. В одной из веток видел, что перейти по адресу можно с помощью функции AppMain(), определенной как: APP_FLASH_ADR=0x80000000; void (*AppMain)(void)=((void(*)(void))APP_FLASH_ADR); Но результат аналогичен выше упомянутому способу - ресет приложения, без задержки в загрузчике.
  3. EVK1100 + bootloader

    Всем привет! Пытаюсь разобраться с загрузчиком на at32uc3a0512. Получилось его прошить, даже удается с его помощью обновлять прошивку. Задался вопросом попадания в него из приложения. Воспользовался одним из примеров Atmel, где они лихо загружают прошивки по установленным адресам FLASH с помощью функции jumpAddress(BOOT_SECTION). Сделал аналогичную запись у себя в приложении и запускаю функцию по нажатию клавиши: #define BOOT_SECTION 0x80000000 void jumpAddress(unsigned int address); { asm("icall r12");} Компилирую проект в Atmel Studuo 7 и зашиваю прошивку через загрузчик. По нажатию клавиши получаю reset приложения. А казалось бы должен по указанному адресу попасть в загрузчик. Как я понял из документации загрузчик начинается с адреса 0х80000000, а приложение с 0x80002000. Вход в загрузчик при условии высокого уровня на одном из пинов. При нажатии клавиши, он у меня висит на питании. Объясните невежде, где я заблуждаюсь ив корне не прав?
  4. Bootloader

    Да... я как раз в поиске и копался, там много всего и много ничего... От загрузчика у меня только hex файл под мой контроллер и документация от Atmel по его конфигурированию. Доступа к тонким бинарным мирам у меня увы нет.. В ASF под Atmel Studio 7 есть проект примера USB-загрузчика, но не под мое семейство at32uc3a... Попробую с нем еще поплавать...
  5. Bootloader

    Ну в-принципе если только такую кнопку туда крепить... https://www.chipdip.ru/product/pbs-11a-green
  6. Bootloader

    Спасибо, за ответ) С кнопкой или перемычкой понятно) Но контроллер стоит в корпусе, а кнопка с перемычкой на плате... Выносить их на заднюю панель как то не эстетично. Видел раньше были энергонезависимые триггера, но их увы сняли с производства. Был еще вариант захода в загрузчик через USB_ID, только при подсоединении кабеля можно войти в загрузчик, но по USB у меня работает основное приложение. И каждый раз придется перед включением убеждаться, что USB-разьем пуст. Документов к сожалению не так много на эту тему(
  7. Bootloader

    Всем привет! Не нашел другой темы куда задать свой вопрос. Прошил в контроллер at32uc3a USB-загрузчик. Настроил пользовательскую страницу под отдельный пин. При 1 на нем после включения питания мы попадаем в загрузчик. Все прекрасно. Как можно сделать так, чтобы я мог контролировать этот пин? Если его подвесить к питанию, то мы все время будем нырять в загрузчик, если к земле, то мы в него не сможем никак попасть. Или как то можно использовать reset контролера в этом случае? Или возможно ли из приложения как то перепрошить слово конфигурации переключив пин захода в загрузчик?
  8. XMEGA еще жива?

    Увидел все-таки одну бяку... Получается перестраивать небольшие скорости.... 390 000, 156 000... А вот 800 000 не получается... Хотя, если изначально задавать 800 000, то UART работает с ней... Подсчёт коэффициентов выполняет одна и та же функция.. Чудеса, да и только..
  9. XMEGA еще жива?

    Ну хоть у кого то работает) В вашем коде все понятно.. Вот нужно ли только каждый раз объявлять прерывания? Я использую библиотечные функции примерочного проекта по работе с UART, но там если покопаться те же регистры и те же команды, и есть функции по вычислению коэффициентов любой скорости. Сейчас пробовал играться с функцией инициализации, сначала ставил под одну скорость, следом с задержкой та же функция, но с другой.. По отдельности они работают, а последовательно не выполняется вторая. Как только проходит 1-ая запись данных в регистры скорости, происходит какая то блокировка и ничего уже поменять не могу. Есть подозрения на то, что к UART подцеплен полудуплексный RS-485, но как он может повлиять ума не приложу..
  10. XMEGA еще жива?

    Всем привет! Очередной затык.. теперь с UART. Кому-нибудь удавалось менять скорость UART после его инициализации. В документации написано, что это возможно в том случае, когда передача и прием полностью завершены. Контролирую флаги в статусном регистре - на передачу (5 бит) в 1, на прием (7 бит) - 0. Пытаюсь сменить скорость и ничего не получается, UART работает со старой. Может кто ткнет носом, куда посмотреть?..
  11. AVR ATmega Xmega Bootloader - chip45boot2

    Всем привет! Столкнулся с необходимостью прошивки xMega через UART-порт по интерфейсу RS-485. Нашел в инете приложение chip45boot2 на http://www.chip45.com/categories/chip45boo...ee_hexfiles.php. Все доступно написано и выложены загрузчики для огромного количества микросхем. Вроде бы все есть, но не работает. Загружаю через AtmelStudio HEX-файл загрузчика (моей микросхемы с моим подключенным UART-портом) с установленными FUSE-битами (как в документации). Запускаю chip45boot2, указываю мой СОМ-порт со скоростью 9600 (все перепробовал), и приложение связаться с загрузчиком не хочет. Если кто то возился с этой темой, подскажите, пожалуйста, в чем может быть ошибка?
  12. AVR ATmega Xmega Bootloader - chip45boot2

    C HEX файлами под этот загрузчик ничего толком у меня не вышло... Грузил разные... Работают они по разному, странно все это.. Переключился на другое приложение, называется AVRUBD. В контроллер залил единственно найденный загрузчик для xMega https://github.com/bandtank/Xmega_Bootloader, скорректировав его под работу по RS-485. Кроме как отдельных ответов на команды выжать из него ничего не получается. Может кто с ним уже успешно работал и подскажет где собака зарыта?
  13. XMEGA еще жива?

    Физически не получилось, поэтому и полез в документацию и на форум в надежде найти подтверждение, что и не должно работать.. Или у всех работает, а только у меня не работает. Обойти сложившийся казус через SPI собственного производства конечно же можно)
  14. XMEGA еще жива?

    Видимо мы не понимаем друг друга) Я имел в виду SCK, тут я опечатался, приношу свои извинения. Ещё раз повторю вопрос по другому - если я использую SPI для датчика температуры.. У меня задействованы только SCK, MISO и SS, так как мне нужно только считать код. Могу ли я объявить MOSI как выходной пин и зажигать им светодиод?
  15. XMEGA еще жива?

    MISO достаточно для датчика температуры, тут нужно лишь данные считывать по SCL, а для ЦАП достаточно MOSI, здесь только загрузка кода...
  16. XMEGA еще жива?

    Вот... Вопрос лишь в том, что можно ли не задействованные вывода инициализированного SPI использовать в своих целях. У меня не получилось, в других контроллерах как мне помнится такое возможно...
  17. XMEGA еще жива?

    Всем привет! Наткнулся на небольшую проблему. При инициализации SPI-порта не могу управлять в своих целях ни MISO, ни MOSI. Это нормально? Вроде в документации написано, что в режиме Master, 3 вывода порта (SS, MOSI, SCK) указаны как User Defined. Мне казалось, что их я могу задействовать в своих целях как угодно...
  18. Владимир, спасибо за помощь) Взял начальный чистый проект, перед тем как добавлял и удалял компоненты, навел порядок в Component Link и плата начала обновляться без перемещения старых компонентов.
  19. Повозился, но тоже не помогает или я не туда нажимаю... Захожу я в Component Link, c левой стороны куча несогласованных связей.. Перетаскиваю в правое окно и нажимаю Update... Но они никуда из окна не пропадают.. Затем пытаюсь снова обновить плату из схемного редактора с добавленным новым резистором и резисторы на плате снова переезжают на новые места...
  20. Всем привет! Очень давно мучаюсь со следующей проблемой. Корректирую схему уже разведеной платы, вставляю или удаляю резистр, провожу заново переобозначения компонетов и пытаюсь эти изменения внести на плату. Altium берет и переставляет на плате компоненты на другие места. Было 100 резисторов, вставил 101-ый с номером 30.. и получил на плате разбросанные по разным местам 70 резисторов. Кроме как вручную возвращать их у меня не получается. Может кто знает эту волшебную настройку, чтобы в обновленной плате менялись только обозначения компонентов, а новые добавлялись рядом с платой. Спасибо)
  21. WiMAX

    Всем спасибо) Может кому пригодится... Параметры кода CDM-600 для TPC, QPSK 3/4: 2D-код с коэффициентами (39/46)*(57/64), 20-битная метка x"f50b8".
  22. WiMAX

    В очередной раз побеспокою кудесников блочного кодирования... Уткнулся в реализацию BTC при QPSK, 3/4, совместимую с CDM-600. Нашел 30-битную метку в кадре и вычислил длину самого кадра с меткой в 4444 бит. Попытка разложить 3333/4414 на элементарные коэффициенты не приводит к положительному успеху. Может кто то занимался этой реализацией и подскажет как коллегам из Америки удалось получить этот коэффициент?
  23. WiMAX

    Всем привет! Решил снова обратиться к гуру кодирования) 5/16 удалось временно победить, устранил пару ошибок в железе при работе с памятью и декодер на BPSK стал работать без ошибок до срыва синхронизации демодулятора при 5дБ, аналогично работе CDM-600. Стал копаться со скоростью 21/44 на BPSK. Длина кадра 25088 бит. Из-за того, что CDM-600 использует микросхему AHA, а в ней максимальный блок данных может быть около 4 кбит, то наши "партнеры" из Америки, решили выкрутиться и разбили 25088 бит на 7 блоков. Каждый блок состоит из 3 страниц полезной информации и 1 страницы, сформированной из предыдущих 3 путем операции XOR. Все 4 страницы кодируются 2D-кодером. Вопрос встал, что делать с данными 4-ой страницы?.. Первоначально декодирую все 4 страницы по оси Х и Y декодером Чейза. Аналогично 3D-декодеру, по оси Z беру слова, состоящие из данных 4-х страниц: 3 бита полезной информации и 1 бит проверочный, полученный через XOR из предыдущих бит. Для параллельности процесса беру сразу несколько 4-к... В одном случае 5, в другом 6 (из-за укороченного кода по оси Y)... Провожу декодирование аналогичное декодированию по алгоритму Чейза... Нахожу позиции полезных бит с минимальными вероятностями, формирую тестовые вектора, а затем просто пересчитываю 4-ые биты. Далее вычисляю метрики и аналогично алгоритму Чейза вычисляю мягкие решения. В результате, получаю, что декодирование по оси Z ухудшает кодовое усиление декодера. Результат декодирования только по осям X и Y заметно лучше, но BER=10^-6 на Eb/No=5дБ. Наверняка сидит что-то серьезное... но.. Что делать с осью Z?... Очевидно, что мой способ декодирования по Z дает ошибку.. Может кто знает или подскажет как использовать данные 4-ой страницы?
  24. WiMAX

    Так в моделе то все отлажено и работает на мой взгляд неплохо, проблема возникла в железе. Может быть вся причина в низком входном уровне сигнала, но мне банально не хватает диапазона генератора шума, чтобы обеспечить нужное отношение сигнал/шум при достаточно высоком уровне сигнала. Демодулятор работает на пределе чувствительности и может быть в этом и кроется все безобразие. Еще повожусь с измерениями, в любом случае Спасибо за поддержку)
  25. WiMAX

    В CDM-600 есть свой измеритель Eb/No, по нему и ориентируюсь. То что модем перестаёт работать при менее 5дБ, скорей всего связано с низким уровнем сигнала, идущего от генератора шума, он самопальный и собран на аттенюаторах. Модем фиксирует входной сигнал на уровне менее -75дБм.