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

adnega

Свой
  • Постов

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

  • Посещение

  • Победитель дней

    3

Весь контент adnega


  1. STM32, backup registers

    Добился-таки "прозрачности", но на lpc1768. Проверял так: BYTE *bat; bat = (BYTE *)0x30000000; // несуществующая память bat[0]=0x5A; С позиций ядра bat[0]=num есть STR rc, [ro] rc - хранит число num, ro - хранит адрес назначения bat+0 Запись по несуществующему адресу вызывает исключение. В обработчике исключения подменяю ro на нужную ячейку памяти и выхожу (регистры R0-R3, R12 "проблемного участка" доступны через стек, остальные - напрямую). Команда STR выполняется еще раз, но уже с новым адресом. У данного подхода есть ряд минусов: - нужен контроллер с MPU. на STM32 не смог получить исключение в месте, где произвожу запись. - поскольку rc и ro заранее не известны (впрочем команда тоже может быть не STR), то нужно анализировать инструкцию, которая привела к сбою. - после выполнения инструкции параметры портятся, поэтому инструкцию лучше эмулировать.
  2. STM32, backup registers

    Если под "прозрачностью" понимать непрерывность области данных, то это одно из решений решение. Если нужен пословный доступ (по 16 бит), то можно написать необходимое число дефайнов. Сам не пользовался, но кажется можно написать обработчик исключительной ситуации... Например, обращаемся к несуществующему региону памяти (виртуальной батареечной памяти) как батареечной памяти. Обрабатываем исключение - если адреса из виртуальной батареечной памяти, то осуществляем доступ к реальной. Накладненько, но вроде "прозрачно". Так надо? Будет работать?
  3. STM32, backup registers

    Мне кажется, что "прозрачность" будет зависеть от того каким объемом данных оперируешь и как часто. - Если до 16 бит, то определяем структуру и обращаемся к элементам структуры. - Если больше, то завести удобную память - писать-читать из этой памяти. Перед чтением использовать load(byte *data), после записи save(byte *data). load и save цена за "прозрачность". Для хранения параметров устройства использовал load/save. И прозрачно, и логично.
  4. STM32, backup registers

    помним, что слова BKP_DRx 16-битные и между ними есть 16-битные пустоты.
  5. Вроде, У NXP в исходниках видел программный MDIO
  6. Для себя на крайний вопрос ответил так: если нет COM-порта и серия, то делать USB. На самом деле не так уж это и сложно. Пугает, несколько, написание драйвера на стороне компьютера. Использую HID - драйвера не нужны. С виртуальным COM-портом (в Windows) работать нужно осторожно.
  7. Мне Агуров очень помог. Делал HID-устройство на STM32F103T8 - 120 руб) Ног, правда, много больше 8, и корпус далеко не DIP...
  8. AT91SAM7X --> LPC2300

    Очень порадовала совместимость по ногам и периферии LPC23xx и LPC17xx! Разработку под LPC2368 за день оживил на LPC1768. Но есть и существенные отличия... ))
  9. вопрос по lpc23xx MAC

    Читать errata! Нужно записать 12 битик в PINSEL2...
  10. AT91SAM7X --> LPC2300

    Может, лучше сразу к LPC17xx?
  11. STM32F103x

    Нужно читать документацию на ядро C-M3
  12. У меня все выбирается, версия 2.2.3 Утилита в архиве LPC210x_ISP.rar
  13. печатаем who и нажимаем enter. моргает p1.11 (первый порт, а не нулевой) Сори, p0.11
  14. Конечно, не образец по написанию кода... В терминале с настройками 9600-8N1 на команду "who" должен кое-что ответить ) Моргает светодиодом PORT1.11 Кварц 18.432MHz test_lpc2101.rar
  15. Еще вопросик. А почему именно LPC2101?! Может STM32F103T4 какой-нить лучше будет ;)...
  16. Схему собирал на макетке, сейчас ее уже нет. Насколько помню, тоже долго боролся за стабильность работы (шилась через раз), и главное что понял - не надо жалеть конденсаторов на 0.1uF )) Они у Вас в полном объеме? На макете не очень видно. Конденсаторы должны быть как можно ближе к процессору. Идею подглядывал тут (http://www.olimex.com/dev/images/lpc-h2103-sch.gif)
  17. cortex-m3 instruction timing

    Можно попробовать таймер общего пользования, если есть свободный
  18. cortex-m3 instruction timing

    Страница 640 UM10360 (LPC17xx UserManual): During a debugging session, the System Tick Timer and the Repetitive Interrupt Timers are automatically stopped whenever the CPU is stopped. Other peripherals are not affected. If the Repetitive Interrupt Timer is configured such that its PCLK rate is lower than the CPU clock rate, the RIT may not increment predictably during some debug operations, such as single stepping. Может это и есть причина? Хотя и не должен SysTick останавливаться во время выполнения инструкции...
  19. cortex-m3 instruction timing

    А предделитель SysTickTimer равен 1?
  20. Можно все 20мс разбить на куски по 2.5 мс, генерить 2 однократных PWM-импульса и подавать их на входы управления двух дешифраторов, по окончании PWM изменять адрес дешифратора на следующий -> 16 каналов PWM
  21. STM32F103x

    ШИМ по первому таймеру. Вывод двухполярного сигнала с частотой 44100Гц Делаю так. #define FPLL 72000000 // частота при работе от PLL, Гц #define PWM_N (12) // разрядность ЦАП, бит #define PWM_F (44100) // частота оцифровки, Гц #define PWM_P ((FPLL/PWM_F)-1) // предделитель //------------------------------------------------------------- // init_TIMER1() //------------------------------------------------------------- void __inline init_TIMER1() { TIM1->ARR=PWM_P; // запись периода TIM1->PSC=0; // запись базы TIM1->CR1=(1<<2) |(1<<TIM_CR1_ARPE) |(1<<TIM_CR1_CEN); TIM1->CR2= (0<<TIM_CR2_OIS2) |(0<<TIM_CR2_OIS2N) |(0<<TIM_CR2_OIS3) |(0<<TIM_CR2_OIS3N); TIM1->CCMR1= (1<<TIM_CCMR1_OC2PE) |(OC_MODE_PWM1<<TIM_CCMR1_OC2M); TIM1->CCMR2= (1<<TIM_CCMR2_OC3PE) |(OC_MODE_PWM1<<TIM_CCMR2_OC3M); TIM1->CCER= (1<<TIM_CCER_CC2NE) |(1<<TIM_CCER_CC3NE); TIM1->BDTR= (1<<TIM_BDTR_MOE) |(0<<TIM_BDTR_DTG); TIM1->DIER= (1<<TIM_DIER_UIE); } //------------------------------------------------------------- // void TIM1_UP_IRQHandler(void) //------------------------------------------------------------- void TIM1_UP_IRQHandler(void) { TIM1->CCR2=x; TIM1->CCR3=y; TIM1->SR=0; }
  22. Хм.. По I2C подключил дисплей TIC-154, на SPI SD/MMC-карта (правда, CS ручками дергаю), делал и развертку VGA-сигнала (640x480) через SPI на stm32f103t4 - из-за недостатка памяти только текстовый режим (а ля, просмотр отладочных сообщение через RS232/TTL). Во всех реализациях проблем не имел - хотелось бы узнать какие есть проблемы (страшно ведь...)?
  23. Скорее всего, винда узнает размер карты (точнее, тома) из структуры в конце первого сектора карты - после записи "мусора" в первый сектор винда определяет карту размером 512 байт, не форматирует, и я не знаю как это победить средствами винды :)
  24. А в случае с I2C заморочек с уровнями нет. Выходы с открытым коллектором - подтянул резистором к 5В и работай (в основном 3.3В процы допускают подачу на вход такого уровня). Основной потребитель - подсветка, но природу не обманешь: считать все равно нужно ватты, а накладки от импульсного повышения напряжения (КПД < 100%)... мне неизвестны, но допускаю, что они не велики.
×
×
  • Создать...