adnega
Свой-
Постов
3 606 -
Зарегистрирован
-
Посещение
-
Победитель дней
3
Весь контент adnega
-
STM32, backup registers
adnega ответил sonycman тема в ARM, 32bit
Добился-таки "прозрачности", но на 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), то нужно анализировать инструкцию, которая привела к сбою. - после выполнения инструкции параметры портятся, поэтому инструкцию лучше эмулировать. -
STM32, backup registers
adnega ответил sonycman тема в ARM, 32bit
Если под "прозрачностью" понимать непрерывность области данных, то это одно из решений решение. Если нужен пословный доступ (по 16 бит), то можно написать необходимое число дефайнов. Сам не пользовался, но кажется можно написать обработчик исключительной ситуации... Например, обращаемся к несуществующему региону памяти (виртуальной батареечной памяти) как батареечной памяти. Обрабатываем исключение - если адреса из виртуальной батареечной памяти, то осуществляем доступ к реальной. Накладненько, но вроде "прозрачно". Так надо? Будет работать? -
STM32, backup registers
adnega ответил sonycman тема в ARM, 32bit
Мне кажется, что "прозрачность" будет зависеть от того каким объемом данных оперируешь и как часто. - Если до 16 бит, то определяем структуру и обращаемся к элементам структуры. - Если больше, то завести удобную память - писать-читать из этой памяти. Перед чтением использовать load(byte *data), после записи save(byte *data). load и save цена за "прозрачность". Для хранения параметров устройства использовал load/save. И прозрачно, и логично. -
STM32, backup registers
adnega ответил sonycman тема в ARM, 32bit
помним, что слова BKP_DRx 16-битные и между ними есть 16-битные пустоты. -
вопрос по шине MDIO
adnega ответил romez777 тема в В помощь начинающему
Вроде, У NXP в исходниках видел программный MDIO -
Для себя на крайний вопрос ответил так: если нет COM-порта и серия, то делать USB. На самом деле не так уж это и сложно. Пугает, несколько, написание драйвера на стороне компьютера. Использую HID - драйвера не нужны. С виртуальным COM-портом (в Windows) работать нужно осторожно.
-
Мне Агуров очень помог. Делал HID-устройство на STM32F103T8 - 120 руб) Ног, правда, много больше 8, и корпус далеко не DIP...
-
AT91SAM7X --> LPC2300
adnega ответил Aurochs тема в ARM, 32bit
Очень порадовала совместимость по ногам и периферии LPC23xx и LPC17xx! Разработку под LPC2368 за день оживил на LPC1768. Но есть и существенные отличия... )) -
Читать errata! Нужно записать 12 битик в PINSEL2...
-
AT91SAM7X --> LPC2300
adnega ответил Aurochs тема в ARM, 32bit
Может, лучше сразу к LPC17xx? -
Помогите запустить LPC2101
adnega ответил LexRoss тема в ARM, 32bit
-
Помогите запустить LPC2101
adnega ответил LexRoss тема в ARM, 32bit
LPC2000 Flash Utility 2.2.3 -
Помогите запустить LPC2101
adnega ответил LexRoss тема в ARM, 32bit
печатаем who и нажимаем enter. моргает p1.11 (первый порт, а не нулевой) Сори, p0.11 -
Помогите запустить LPC2101
adnega ответил LexRoss тема в ARM, 32bit
Конечно, не образец по написанию кода... В терминале с настройками 9600-8N1 на команду "who" должен кое-что ответить ) Моргает светодиодом PORT1.11 Кварц 18.432MHz test_lpc2101.rar -
Помогите запустить LPC2101
adnega ответил LexRoss тема в ARM, 32bit
Еще вопросик. А почему именно LPC2101?! Может STM32F103T4 какой-нить лучше будет ;)... -
Помогите запустить LPC2101
adnega ответил LexRoss тема в ARM, 32bit
Схему собирал на макетке, сейчас ее уже нет. Насколько помню, тоже долго боролся за стабильность работы (шилась через раз), и главное что понял - не надо жалеть конденсаторов на 0.1uF )) Они у Вас в полном объеме? На макете не очень видно. Конденсаторы должны быть как можно ближе к процессору. Идею подглядывал тут (http://www.olimex.com/dev/images/lpc-h2103-sch.gif) -
Можно попробовать таймер общего пользования, если есть свободный
-
Страница 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 останавливаться во время выполнения инструкции...
-
А предделитель SysTickTimer равен 1?
-
генерация 12 шимов
adnega ответил srm тема в ARM, 32bit
Можно все 20мс разбить на куски по 2.5 мс, генерить 2 однократных PWM-импульса и подавать их на входы управления двух дешифраторов, по окончании PWM изменять адрес дешифратора на следующий -> 16 каналов PWM -
ШИМ по первому таймеру. Вывод двухполярного сигнала с частотой 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; }
-
Хм.. По I2C подключил дисплей TIC-154, на SPI SD/MMC-карта (правда, CS ручками дергаю), делал и развертку VGA-сигнала (640x480) через SPI на stm32f103t4 - из-за недостатка памяти только текстовый режим (а ля, просмотр отладочных сообщение через RS232/TTL). Во всех реализациях проблем не имел - хотелось бы узнать какие есть проблемы (страшно ведь...)?
-
FAT16 на SD карте
adnega ответил Golikov тема в В помощь начинающему
Скорее всего, винда узнает размер карты (точнее, тома) из структуры в конце первого сектора карты - после записи "мусора" в первый сектор винда определяет карту размером 512 байт, не форматирует, и я не знаю как это победить средствами винды :) -
дисплей с питанием 3,3в
adnega ответил SergeyVas тема в В помощь начинающему
А в случае с I2C заморочек с уровнями нет. Выходы с открытым коллектором - подтянул резистором к 5В и работай (в основном 3.3В процы допускают подачу на вход такого уровня). Основной потребитель - подсветка, но природу не обманешь: считать все равно нужно ватты, а накладки от импульсного повышения напряжения (КПД < 100%)... мне неизвестны, но допускаю, что они не велики.