реклама на сайте
подробности

 
 
33 страниц V  « < 4 5 6 7 8 > »   
Closed TopicStart new topic
> STM32 – вопросы – проблемы - решения.
Alechin
сообщение Mar 25 2011, 12:10
Сообщение #76


Частый гость
**

Группа: Свой
Сообщений: 158
Регистрация: 27-06-05
Из: Химки, Моск.обл.
Пользователь №: 6 334



А как-нибудь сделать обработчик членом класса можно? Имя то будет уже другим. "В лоб" не получилось.
Например самый простой вариант - SysTick таймер.
Go to the top of the page
 
+Quote Post
akimych
сообщение Mar 25 2011, 13:30
Сообщение #77


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 7-01-11
Пользователь №: 62 073



Цитата
А как-нибудь сделать обработчик членом класса можно?

Подозреваю, что это не очень хорошая мысль. Вызываться-то он будет, как обычная процедура.
Такое прокатит разве что со статическим методом. Но видимо придется в стартапе прописать реальное имя этого метода.
Тогда уж проще из обычного обработчика вызывать метод класса.

Кто использует RTC у STM32, нормально часы работают?
Просто я в ветке про "LPC1768 и RTC" наткнулся на фразу
Цитата
Означает, что RTC в первых ревизиях уходят более чем на 1с. за сутки на краях рабочих температур.

Т.е. 1с в сутки это много. А у меня на стм32 при комнатной температуре уход часов на неск. секунд в сутки обычное дело.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Mar 25 2011, 14:46
Сообщение #78


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(akimych @ Mar 25 2011, 15:30) *
Кто использует RTC у STM32, нормально часы работают?

Замечательно работают. Естественно, какой-то уход всегда будет, но не 1 с в сутки, это точно.
Go to the top of the page
 
+Quote Post
akimych
сообщение Mar 26 2011, 00:15
Сообщение #79


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 7-01-11
Пользователь №: 62 073



Цитата
Замечательно работают. Естественно, какой-то уход всегда будет, но не 1 с в сутки, это точно.

А какие кварцы используете?
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Mar 26 2011, 09:39
Сообщение #80


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



Цитата(akimych @ Mar 26 2011, 02:15) *
А какие кварцы используете?

Да самые, что ни есть, обычные.
NC38 Кварцевый резонатор часовой (32.768 кГц, +/-20 ppm, C=12.5pF, -20 to +60C), корпус цилиндрический d=3mm, h=8.3mm
Теоретически, при +/-20 ppm они могут уходить и больше, чем на секунду в сутки, но на практике получается секунда за трое суток - неделю. Может я везучий?
Ах да, может это важно, я не беру комплектующие на радиорынке, только у проверенных поставщиков.
Go to the top of the page
 
+Quote Post
akimych
сообщение Mar 26 2011, 19:24
Сообщение #81


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 7-01-11
Пользователь №: 62 073



Цитата
NC38 Кварцевый резонатор часовой (32.768 кГц, +/-20 ppm, C=12.5pF, -20 to +60C), корпус цилиндрический d=3mm, h=8.3mm

Вот интересно, в даташите на стм32 есть фраза
Цитата
To avoid exceeding the maximum value of CL1 and CL2 (15 pF) it is strongly recommended to use a resonator
with a load capacitance CL < 7 pF. Never use a resonator with a load capacitance of 12.5 pF.

Получается, зря пугают?

А кварцы у меня в таком же корпусе, правда вроде бы не NC38, а DT38. Куплены не на рынке, серийное изделие все-таки.


Go to the top of the page
 
+Quote Post
uu5jkb
сообщение Mar 28 2011, 18:58
Сообщение #82


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 4-02-09
Пользователь №: 44 400



Добрый вечер всем.
Поставил себе Keil uVision 4.20, открыл первый попавшийся пример, подключил плату STM32VLDiscovery, прошил, дебаггером погулял, порадовался. Далее пытаюсь написать что-то самостоятельно, и, чтобы не гонять контроллер, пытаюсь дебажить программу симулятором. Для тренировки опять открыл проект из примеров, ничего не поганил в нем. Запускаю дебаггер, в окне дизассемблера указатель на адресе 0х00000000 с командой mov r0, r0. Жму F10, указатель остается на месте, в SP появляется какое-то немыслимое число 0xFFFFFFF8 или около того. Ни на main, ни на Reset Handler указатель не перескакивает, до брейк-пойнтов после нажатия на Run не идет. В окне Command пишут "Error 65. access violation at 0x00000000: no 'read' permission". В MAP Memory разрешаю отладчику делать с этим участком памяти все, ситуацию не спасает. Зашел на сайт Keil, там предложили как один из вариантов писать в Debug Command Window $=0x0800000. После этой команды указатель переходит в начало функции main, но дальше все равно по шагам не идет. Настройки памяти в Options не трогал, начальные адреса нормальные. Расскажите, пожалуйста, где и почему я дурак. Пробовал открывать проекты других контроллеров (LPC, Atmel etc) - дебаггер прекрасно работает

Сообщение отредактировал uu5jkb - Mar 28 2011, 19:36
Go to the top of the page
 
+Quote Post
akimych
сообщение Mar 28 2011, 23:20
Сообщение #83


Участник
*

Группа: Участник
Сообщений: 72
Регистрация: 7-01-11
Пользователь №: 62 073



Цитата
пытаюсь дебажить программу симулятором

Не поддерживает симулятор кейла полноценно серию STM32F100, только ядро.
Выбирайте F101 и симулируйте. Это самый простой способ.
Или можно прописать DLL-ки от F101 в опциях симулятора/отладчика.

Сколько уже народу на эти грабли наступило...

Go to the top of the page
 
+Quote Post
uu5jkb
сообщение Mar 29 2011, 06:28
Сообщение #84


Участник
*

Группа: Участник
Сообщений: 17
Регистрация: 4-02-09
Пользователь №: 44 400



Цитата(akimych @ Mar 29 2011, 02:20) *
Не поддерживает симулятор кейла полноценно серию STM32F100, только ядро.
Выбирайте F101 и симулируйте. Это самый простой способ.
Или можно прописать DLL-ки от F101 в опциях симулятора/отладчика.

Сколько уже народу на эти грабли наступило...


Большое спасибо, помогло. А как, интересно, сам Keil комментирует такую ситуацию...
Про грабли - это верно, зато не пропустил опыт. Еще раз спасибо
Go to the top of the page
 
+Quote Post
Картофель-фри
сообщение Mar 30 2011, 06:19
Сообщение #85





Группа: Новичок
Сообщений: 1
Регистрация: 30-03-11
Пользователь №: 63 988



Всем привет

Хотел сказать что есть такая интересная статья по всем преимуществам STM32 против AVR, Stellaris, LPC krapula.gif .

http://www.compeljournal.ru/enews/2011/2/3

Особенно интересный график под конец! STM32 рулит disco.gif !
Go to the top of the page
 
+Quote Post
KSN
сообщение Mar 30 2011, 07:10
Сообщение #86


Местный
***

Группа: Свой
Сообщений: 404
Регистрация: 3-12-04
Из: Новосибирск
Пользователь №: 1 304



Помогите выйти из 3-х сосен: проц STM32F103RBT6. Программирую порты PA0-PA3 как Floating input. К этим выводам подключены джамперы, которыми устанавливаю "0", либо "1". При включении платы PA0 постоянно "0", после сброса по NRST состояние PA0 определяется джампером.
Уже замучился искать, где ошибся. Какие настройки можно глянуть?
Go to the top of the page
 
+Quote Post
Danis
сообщение Mar 30 2011, 12:50
Сообщение #87


Twilight Zone
***

Группа: Свой
Сообщений: 454
Регистрация: 17-02-09
Из: Челябинск
Пользователь №: 44 990



Цитата(KSN @ Mar 30 2011, 11:10) *
Помогите выйти из 3-х сосен: проц STM32F103RBT6. Программирую порты PA0-PA3 как Floating input. К этим выводам подключены джамперы, которыми устанавливаю "0", либо "1". При включении платы PA0 постоянно "0", после сброса по NRST состояние PA0 определяется джампером.
Уже замучился искать, где ошибся. Какие настройки можно глянуть?


Выложите свой исходник инициализации порта, гляну.


--------------------
Magic Friend
Go to the top of the page
 
+Quote Post
Юрийюрич
сообщение Mar 30 2011, 20:55
Сообщение #88





Группа: Новичок
Сообщений: 1
Регистрация: 22-06-07
Пользователь №: 28 618



Парочка хинтов.
Некоторое время назад пришлось поработать с STM32 с многими используемым замечательным скриптом stm32loader.py. Если в компьютере есть последовательный порт, скрипт замечательно с ним работает. Но компьютеры с таким портом уже давно редкость, приходится использовать USB-переходники (FTDI, Prolific). При использовании их заливка прошивки идёт раза в два медленнее. Дело в том, что скрипт высылает данные побайтно, а драйвер для каждого байта отправляет по USB целый блок и получает подтверждение. Оверхед налицо!
Проблема лечится в методе cmdWriteMemory: собираем весь блок (до 256 байт) данных в стринг, затем вываливаем его драйверу одним махом. Вот так:
CODE
def cmdWriteMemory(self, addr, data):
assert(len(data) <= 256)
strwr = '' #Data will be collected to this bytestring
if self.cmdGeneric(0x31):
mdebug(10, "*** Write memory command")
self.sp.write(self._encode_addr(addr))
self._wait_for_ask("0x31 address failed")
#map(lambda c: hex(ord( c )), data)
lng = (len(data)-1) & 0xFF
mdebug(10, " %s bytes to write" % [lng+1]);
strwr += chr(lng)
crc = 0xFF
for c in data:
crc = crc ^ c
strwr += chr( c )
strwr += chr(crc)
self.sp.write(strwr) #Write the whole collected bytestring
self._wait_for_ask("0x31 programming failed")
mdebug(10, " Write memory done")
else:
raise CmdException("Write memory (0x31) failed")

И ещё одна проблема наблюдалась. Скрипт открывает файл не используя бинарный режим явно, что под Windows иногда приводит к заливке прошивки неполностью.
Лечится в мэйне:
CODE
if (conf['write'] or conf['verify']):
data = map(lambda c: ord( c ), file(args[0], 'rb').read())
print 'File', args[0], ':', len(data), 'bytes'

Также порекомендую в конце скрипта включить команду на запуск программы, чтобы она сразу начинала работать без необходимости вручную выключать режим бутлодера и делать сброс:
CODE
cmd.cmdGo(0x08000000)
finally:
cmd.releaseChip()
Go to the top of the page
 
+Quote Post
KSN
сообщение Mar 31 2011, 01:56
Сообщение #89


Местный
***

Группа: Свой
Сообщений: 404
Регистрация: 3-12-04
Из: Новосибирск
Пользователь №: 1 304



Цитата(Danis @ Mar 30 2011, 19:50) *
Выложите свой исходник инициализации порта, гляну.

Решил проблему. После инициализации портов перед операцией чтения вставил небольшую задержку. Спасибо за предложение помощи.
Go to the top of the page
 
+Quote Post
Mos
сообщение Mar 31 2011, 11:58
Сообщение #90


Частый гость
**

Группа: Свой
Сообщений: 89
Регистрация: 31-10-06
Пользователь №: 21 829



Интересная проблемка с реализацией USB CDC на STM32F103 и usbser.sys (WinXP).
Был взят пример Usb Virtual Serial Port и переделан по-людски, версия Usb - библиотеки: STM32 USB-FS-Device Driver 3.2.1;
Режим работы таков: после подключения и инициализации, хост передаёт девайсу некоторый объём данных (~1 Кб) для инициализации; в процессе работы хост практически всегда молчит.
Девайс непрерывно передаёт хосту данные (накопленные в FIFO) со скоростью 100 Кб/с. Если на момент опроса у девайса нет данных для передачи, то он отвечает ZLP.

Всё работает просто чудно!

Но почему-то через примерно 300, либо примерно 980, либо примерно 1800 секунд на девайсе перестаёт вызываться Callback на TX sad.gif

Вероятность ошибки в "пользовательском" коде невелика (ибо он очень прост). Подозрение падает на usbser.sys

Вот.
Go to the top of the page
 
+Quote Post

33 страниц V  « < 4 5 6 7 8 > » 
Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 29th June 2025 - 21:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01504 секунд с 7
ELECTRONIX ©2004-2016