03.11.2014, 19:36
|
#4151
|
Вид на жительство
Регистрация: 02.04.2008
Адрес: Ленинград
Сообщений: 346
Сказал спасибо: 67
Сказали Спасибо 8 раз(а) в 7 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от Hives
|
Mike121234 регистры DBGMCU, в референсе раздел 32
|
Спасибо. посмотрю.
Действительно так просто.
|
|
|
|
14.11.2014, 18:17
|
#4152
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,627
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Изменить значение пина в ШИМ-режиме
Вот уже сколько бьюсь, никак не могу понять логику!
Хочу использовать таймер в режиме ШИМ для работы с 1-wire (еще я использую ШИМ для тактирования драйверов шаговиков и там возникает подобная проблема), но между режимами активности необходимо иметь строго фиксированное значение на выходе: 1 (соответственно, для тактирования ШД это 0).
С 1-wire уже замучился! Чего только ни делал, бесполезно!
Если просто ногодрыгом ставить значение после отключения таймера, получается лажа - бесполезно.
Если сделать так:
Код:
|
TIM2_CCER &= ~TIM_CCER_CC4P;
TIM2_CR1 &= ~TIM_CR1_CEN; |
т.е. установить "полярность" в высокий уровень и затем сразу отрубить таймер, то значение устанавливается в 1, однако, при инициализации это не работает: т.е. до первого вызова таймера значение остается в нуле!!!
У меня, конечно, терпение хорошее, но чует мое сердце, что пошлю я в одно место эту идиотскую идею и вернусь к 1-wire на USART с DMA.
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
14.11.2014, 23:42
|
#4153
|
Вид на жительство
Регистрация: 05.07.2006
Адрес: Tashkent
Сообщений: 454
Сказал спасибо: 24
Сказали Спасибо 67 раз(а) в 44 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
eddy,
1Wire через uart - forever!
С таймером же есть режим OPM, когда он сам останавливается и на выходе уровень в соотвествии с запрограммированной полярностью.
Ну был еще кажись режим Fast enable, когда лень ждать конец цикла и можно руками поменять уровень.
Про первый вызов таймера. Не всё ли равно что было до этого? Ведь Reset сбрасывает девайсы и они начинают с читстого листа.
|
|
|
|
14.11.2014, 23:43
|
#4154
|
Вид на жительство
Регистрация: 05.07.2006
Адрес: Tashkent
Сообщений: 454
Сказал спасибо: 24
Сказали Спасибо 67 раз(а) в 44 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Растолкуйте пожалуйста, не могу точно понять следующее:
Цитата:
|
Battery backup domain
Warning: During tRSTTEMPO (temporization at VDD startup) or after a PDR is
detected, the power switch between VBAT and VDD remains connected
to VBAT.
During the startup phase, if VDD is established in less than tRSTTEMPO
(Refer to the datasheet for the value of tRSTTEMPO) and VDD › VBAT +
0.6 V, a current may be injected into VBAT through an internal diode
connected between VDD and the power switch (VBAT).
If the power supply/battery connected to the VBAT pin cannot support
this current injection, it is strongly recommended to connect an
external low-drop diode between this power supply and the VBAT pin.
|
При слишком быстром появлении питания внутренний ключ навсегда остаётся открытым или же закрывается после tRSTTEMPO?
|
|
|
|
08.12.2014, 18:15
|
#4155
|
Гражданин KAZUS.RU
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Добрый день. Сейчас пробую работать с контроллером экрана SSD1298 все настроил, все хорошо. Но выводить картинки (фон, кнопки и т.д.) хочу попробовать через ДМА в режиме memory to memory. В даташите прочитал, что так может работать только ДМА2. (МК - stm32f407vg)
Пробую так:
Код:
|
/* DMA2 Stream1 channe1 configuration **************************************/
DMA_InitStructure.DMA_Channel =DMA_Channel_1;
DMA_InitStructure.DMA_PeripheralBaseAddr =(int32_t)&image_data_Image;
DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)0x6F010000;
DMA_InitStructure.DMA_DIR =DMA_DIR_MemoryToMemory;
DMA_InitStructure.DMA_BufferSize =65535;
DMA_InitStructure.DMA_PeripheralInc =DMA_PeripheralInc_Enable;
DMA_InitStructure.DMA_MemoryInc =DMA_MemoryInc_Disable;
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
DMA_InitStructure.DMA_Mode =DMA_Mode_Normal;
DMA_InitStructure.DMA_Priority =DMA_Priority_High;
DMA_InitStructure.DMA_FIFOMode =DMA_FIFOMode_Disable;
DMA_InitStructure.DMA_FIFOThreshold =DMA_FIFOThreshold_HalfFull;
DMA_InitStructure.DMA_MemoryBurst =DMA_MemoryBurst_Single;
DMA_InitStructure.DMA_PeripheralBurst =DMA_PeripheralBurst_Single;
DMA_Init(DMA2_Stream1, &DMA_InitStructure);
DMA_Cmd(DMA2_Stream1, ENABLE); |
Но отрисовывает только один раз, если я экран очищу и еще раз проведу инициализацию и старт то поток уже не стартует. Подскажите как повторно запустить передачу DMA?
|
|
|
|
08.12.2014, 19:52
|
#4156
|
Почётный гражданин KAZUS.RU
Регистрация: 13.10.2007
Адрес: Беларусь
Сообщений: 8,048
Сказал спасибо: 60
Сказали Спасибо 3,954 раз(а) в 2,309 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Вначале дождаться окончания передачи, выключить канал и на отключенном изменять настройки. Потом снова включить
|
|
|
|
08.12.2014, 20:09
|
#4157
|
Гражданин KAZUS.RU
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Завтра попробую. А настраивать повторно можно только количество элементов для передачи? Остальное не меняется?
|
|
|
|
09.12.2014, 08:01
|
#4158
|
Прописка
Регистрация: 31.10.2006
Сообщений: 149
Сказал спасибо: 15
Сказали Спасибо 46 раз(а) в 35 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от swat24
|
повторно запустить передачу DMA
|
Имхо, есть два способа:
1 - DMA_Mode_Сircular;
2 - как уже рекомендовал niXto. Достаточно переустановить DMA_BufferSize (CNDTR). При DMA_Mode_Normal он обнуляется при передаче. Можно делать это в DMA2_Channel1_IRQHandler.
Как-то так:
Код:
|
DMA_Cmd(DMA_Rx, DISABLE);
DMA_Cmd(DMA_Tx, DISABLE);
DMA_Rx-›CNDTR = xyz;
DMA_Tx-›CNDTR = xyz;
DMA_Cmd(DMA_Rx, ENABLE);
DMA_Cmd(DMA_Tx, ENABLE); |
Последний раз редактировалось gks5; 09.12.2014 в 10:08.
|
|
|
|
09.12.2014, 10:42
|
#4159
|
Гражданин KAZUS.RU
Регистрация: 16.03.2009
Адрес: Украина, Харьков
Сообщений: 762
Сказал спасибо: 108
Сказали Спасибо 67 раз(а) в 67 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от gks5
|
1 - DMA_Mode_Сircular;
|
Такой режим не подойдет. При режиме память-память режимы работы Circular и direct не разрешены(стр 310 референс мануала).
Остановку сейчас попробую, я вчера пробовал перенастраивать, но без выключения модуля.
Плохо, что только 16 бит счетчик для передачи. Придется бить на две посылки (при условии заливки всего экрана). А если бить - то это ждать пока закончит работать первый поток отрисовки...
А скажите правильно я понимаю, что лучше выводить изображения из памяти на ЛСД через ДМА без использования МК? И как вариант еще хочу попробовать делать буфер во внешней СРАМ и из него выводить (и то и то висит на FSMC). Возможен ли поочередный доступ к внешней СРАМ если поставить передачу на экран через ДМА на таймер, а кадр подготавливать уже МК или напрямую или так же через ДМА? По идее если настроить таймер на отображение 50 кадров в секунду, то все остальное время можно будет работать с памятью без проблем.
Так, получилось отрисовывать картинку, пока только одну. Беру два потока - первый передает половину кадра с начала, второй вторую половину со смещением от начала. Делаю так -
Код:
|
(uint32_t)&image_data_Image+(0x9600*2); |
0x9600 - половина размерности массива.
Последний раз редактировалось swat24; 09.12.2014 в 16:17.
|
|
|
|
16.12.2014, 17:18
|
#4160
|
Гражданин KAZUS.RU
Регистрация: 01.01.2007
Адрес: Таганрог
Сообщений: 571
Сказал спасибо: 26
Сказали Спасибо 213 раз(а) в 91 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Добрый день! Может кто-нибудь подскажет: контроллер stm32f103vet6 (100 ног) не работают линии портов PE6 и PD3 как линия общего назначения (пинодрыг). Может при ините портов чего то не то, или что то недопрописал. Спасибо!
__________________
То, что нас не убивает - делает нас сильнее
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:16.
|
|