Часовой пояс: UTC + 3 часа




Куратор(ы):   zauropod   



Форум закрыт Новая тема / Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней. Закрыто  Сообщений: 399 • Страница 14 из 20<  1 ... 11  12  13  14  15  16  17 ... 20  >
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 
Прилепленное (важное) сообщение

Куратор темы
Статус: Не в сети
Регистрация: 16.11.2006
Откуда: Всегда!
Первое знакомство с микроконтроллерами Atmel, STM и другими.

Первый рассказ
Предэксплуатационный ремонт отладчика Atmel AVR Dragon
Цветное изображение на монохромном LCD
Конвертер растровой графики для монохромного LCD (128х64)
Дизеринг для монохромных LCD и конвертер растровых изображений
ZP-STM32 и беспроводной последовательный порт
Куда уходят миллисекунды? Способ повышения FPS
Open Logic Sniffer в действии
AVR XMEGA – разгон, вольтмод и производительность SDRAM


Последний раз редактировалось zauropod 15.12.2010 0:33, всего редактировалось 6 раз(а).


Партнер
 

Member
Статус: Не в сети
Регистрация: 26.01.2011
zauropod писал(а):
Чего это ты сюда приплел кэширование? У STM32F4 64 линии по 128 бит на кэш инструкций, 8 линий по 128 бит на кэш данных. К битовым операциям никаким боком не относится

Не правильно выразился.
Есть-ли однотактные ассемблерные команды (установка или сброс бита в регистре ввода вывода) у STM32F4 и как они (инструкции) работают ИЗ шины доступа к FLASHу STM32F4.
А то если записовать 0 или 1 в 32 битное связанное слово это целый гимарой (вначале прочитать 32 битное связанное слово, изменить один бит, потом записать 32 битное связанное слово).
zauropod писал(а):
Если ядро быстрее, то при обращении к флэш вводятся циклы ожидания. Например, для STM32F4 на 168МГц устанавливается (рекомендуется, установить можно и 0) 5 пустых циклов ожидания для доступа к флэш. Другое дело, что шина доступа к ней у STM32F4 128-битная и применяется кэширование с предсказанием, что дает такое практическое быстродействие, как будто бы флэш также работает на частоте 168МГц без задержек.

Че спрашиваю, для моих поделок самое главное вовремя дергнуть ногой.
Потому если xmegа в этом не проигрывает STM32F4 то мне пока нет смысла переходить на другую архитектуру.
Если чесно голова и от AVR трещать начинает. А если прочитать еще около 1000 страниц да еще на инглиш, а потом понять что зря, то проще сразу застрелиться.
Так что, если тобой уже изучен этот вопрос, то поделись плиз инфой.


 

Куратор темы
Статус: Не в сети
Регистрация: 16.11.2006
Откуда: Всегда!
max0000000 писал(а):
Так что, если тобой уже изучен этот вопрос, то поделись плиз инфой.

Давай на свежую голову выясним, об чем речь.

Изначально прозвучало:

max0000000 писал(а):
Сильно грызут сомнения, подскажи с какой максимальной частотой можно дергать ногой STM32F4,
не переферийными блоками, а процем?
На XMega, как я понял, 32MHz последовательным кодом (тупо чередование SBI и CBI) и 16 MHz в цикле.


На этот вопрос я ответил немножко неправильно.
"тупо чередование SBI и CBI" даст половину частоты процессора, а не полную, и в цикле частота переключения асимптотически приближается к половинной частоте процессора по мере увеличения команд чередования в теле цикла.

Максимальное дрыганье ногами STM32F4 также равно половинной частоте процессора (84MHz в номинале), сказанное про 100МHz - это программная установка из возможного ряда {2,10,50,100}

Ну и еще одна поправка - bit-band диапазон больше адресуемой памяти не в 8 раз, а в 32 раза.

Теперь про битовые поля. Архитектуры XMega и ARM V7m кардинально отличаются. Управление битовыми полями регистров есть и в ARM, разумеется, причем более гибкое. Но на уровне ассемблера для дрыганья ногой в порту я этим не пользуюсь - гораздо удобнее специализированные интерфейсы.

Если нужен выход постоянной частоты, производной от системной с помощью делителей, то у цифровых портов XMEGA это вывод CLKOUT, а у STM32F4 два вывода MCO. Также можно выводить и таймерные сигналы, причем XMEGA может генерировать четырехкратную частоту процессора, чего не может STM32.

Но если нужна сложная логика дрыганья ногой, то тогда озвучь, что именно ты генерируешь, ибо реализация этой логики и финальный результат может быть лучше на STM32F4 (я почти в этом уверен, но не зная задачи не могу судить наверняка).


 

Member
Статус: Не в сети
Регистрация: 26.01.2011
zauropod писал(а):
"тупо чередование SBI и CBI" даст половину частоты процессора

Да это понятно, я имел ввиду частоту смены 1 0.
zauropod писал(а):
Управление битовыми полями регистров есть и в ARM, разумеется, причем более гибкое.

Все понял, придется изучать STM32F4
zauropod писал(а):
Но если нужна сложная логика дрыганья ногой

Нужно просто дергнуть и чем быстре тем лучше. Ферит работает на 200KHz, паразитные вещи убераются не
пасивными элементами, а оптимальными расположением рабочих элементов и управлением МК.
"Прямоугольные" импульсы для полевика выдает конечно тайиер, а скважностью и всем остальным управляет МК.
zauropod спосибл вопрос снят.
zauropod писал(а):
Также пока под вопросом батарейное питание

Осмеюсь дать совет, однозначно li-pol,а еще лучше li-fe. И стабилизатор не какаянибудь кренка, а TPS622xx
например (если потянет по нагрузке, для каждого МК конечно своя, с возможностью изменения напруги).
Если чего есть рабочая схема до безобразия простая (1.8V, 3.0V)/


 

Куратор темы
Статус: Не в сети
Регистрация: 16.11.2006
Откуда: Всегда!
max0000000 писал(а):
И стабилизатор не какаянибудь кренка

:)
Я ведь написал, что рассматриваю вопрос литиевого и опционально плюс никель-кадмиевого (с прицелом на питание робота от батарей типа C или D). На самом деле еще хочется и беспроводную зарядку, что-то на базе чипов трансивер-ресивер от TI серии BQ5xxxx, как раз недавно Vishay прислал специальных индукторов на маузер. Но проблема с местом, наверное, отдельно придется делать.
Плюс последний стандарт зарядки по USB подключить. Какие нафиг кренки?


 

Junior
Статус: Не в сети
Регистрация: 14.03.2012
Здравствуйте. Начинаю осваивать микроконтроллеры stm32f4. Есть такая задача. Получить координаты с оптической мышки, т.е. узнать на какое расстояние переместилась мышка! На хабре есть статья по получению видео с камеры мышки, с помощью arduino =) http://habrahabr.ru/post/128972/ . Нужна помощь в реализации, своего рода алгоритм, куда залезть где лучше прочитать (самое главное про что прочитать). Я так понимаю данные нужно будет снимать с цифровых портов (как их правильно снимать (GPIO_номер порта ?). Сильно прошу не пинать, осваивать придется с этого момента...


 

Куратор темы
Статус: Не в сети
Регистрация: 16.11.2006
Откуда: Всегда!
sonyk
Судя по всему ты только в самом начале пути знакомства с МК.

sonyk писал(а):
осваивать придется с этого момента...

Надо бы попроще сначала задачу себе поставить и сперва научиться выводить в (принимать из) GPIO цифровые и аналоговые сигналы, разобраться с интерфейсами SPI, I2С и т.д.

sonyk писал(а):
куда залезть где лучше прочитать (самое главное про что прочитать).

Если речь про датчик ADNS-2610, то надо и читать его техническую документацию. Там интерфейс - полудуплекс по SPI, тогда изучайте и соответствующй раздел технического мануала RM0090 про SPI STM32F4.

sonyk писал(а):
узнать на какое расстояние переместилась мышка!

Если нужны физические координаты, то тогда нужно придумать механизм калибровки начального значения и на поверхности должна быть маркерная сетка (или точки или еще какие равномерные отсечки), дальше чистая математика. Еще можно поизвращаться с инерциальной системой, скомбинировав оптику с акселерометрами и, интегрируя, считывать путь. Но при инерциальном счислении время от времени потребуется коррекция по известным координатам. Да и по оптике нужна коррекция, так как есть ограничения по максимальной скорости перемещения и возможны отрывы датчика от поверхности и потеря ориентации.


 

Junior
Статус: Не в сети
Регистрация: 01.01.2012
Запустил VGA-генерацию картинки из внешней SRAM, правда только 640х480, но 16-битный цвет. На 800х600 стабильной развертки пока не удалось добиться. В память пишу/читаю через GPIO. FSMC с защелками еще не подключал. Теоретический максимум 6 тактов на запись (3 обращения к GPIO), с чтением последовательных данных легче - только младшую часть адреса на шине выставить, и все. Это и позволяет выводить картинку с нужной скоростью.
Однако качество изображения плохое, корявое и сверху некоторые строчки мельтешат, думаю из-за того, что 168 МГц не дают точные тайминги поставить. Надо 200 или 240 МГц - с прицелом на 800х600.

Скажите, zauropod, пожалуйста, как у STM32F407 правильно сконфигурировать RCC->PLLCFGR для разгона? У Вас, помню, есть такой опыт.


 

Куратор темы
Статус: Не в сети
Регистрация: 16.11.2006
Откуда: Всегда!
neo333 писал(а):
из-за того, что 168 МГц не дают точные тайминги поставить

Нет. В сети полно роликов, где все четко.
Может, у тебя поля синхросигналов короткие? (ведь для картинки 640х480 нужно обслуживать поле примерно 800х600).

neo333 писал(а):
Теоретический максимум 6 тактов на запись

Вот поэтому меня такой режим не интересует - шина данных все время занята, ничего полезного больше сделать нельзя. Это долько для демок.

neo333 писал(а):
как у STM32F407 правильно сконфигурировать RCC->PLLCFGR


Вот как у меня выглядит блок конфигурации для STM32F4 DISCOVERY (кристалл 8MHz) из system_stm32f4xx.c:

Код:
/************************* PLL Parameters *************************************/
/* PLL_VCO = (HSE_VALUE or HSI_VALUE / PLL_M) * PLL_N */
#define PLL_M      4
#define PLL_N      216//240//168//192//84//

/* SYSCLK = PLL_VCO / PLL_P */
#define PLL_P      2

/* USB OTG FS, SDIO and RNG Clock =  PLL_VCO / PLLQ */
#define PLL_Q      PLL_N / 24


PLL_M всегда 4, так как, во-первых, это снижает джиттер (хотя это не очень существенный момент в контексте DISCOVERY), а, во-вторых, в этом случае значение PLL_N прямо устанавливает системную частоту и ничего не надо считать (у STM даже есть программа под Excel для рассчета всех этих коэффициентов - бредятина).
Я выбираю PLL_N из ряда, отличающегося на кратное 24МГц значение от номинала в 168МГц, с тем, чтобы работали USB OTG FS, SDIO. Если эта периферия не нужна - PLL_N вообще можно ставить любой (если заработает, конечно).

Для того, чтобы повыше разогнать (у меня запускалось при 3V на 260MHz), на плате DISCOVERY можно закоротить шоттку D3, тогда на напряжение будет 3.3V.

Кстати, разработчики Atollic поленились в проект под DISCOVERY установить правильное значение HSE_VALUE, которое идет по умолчанию как 25MHz вместо 8. Нужно препроцессору подсунуть правильную частоту, иначе функция RCC_GetClocksFreq будет давать неправильные частоты, соответственно UART не заработает etc.
Может, в Atollic 3.0 Lite исправили, но она мне неинтересна, так как ограничение в 32К кода меня не устраивает.

***

На свою плату я все-таки втыкаю индуктор и ресивер BQ51013 для беспроводного питания :).
Но пока она только в корпусе YFF (BGA-шка с шагом 0.4мм), хрен мне на месте сделают это на двухслойке (хотя у самой ТI ее борда на двуслойной плате). Но не получится - будем ждать QFN, она должна когда-нить появиться, пока чертежа нет, но размер корпуса 4.5 x 3.5mm указан и назначение выводов есть, плату можно делать.


 

Junior
Статус: Не в сети
Регистрация: 01.01.2012
Вот спасибо огромное! Так толково и просто по настройке объяснили. А то прочел несколько статей в сети - только сильнее запутался. Теперь, думаю, одолею VGA 800x600. Дальше попытаюсь LCD запустить.

Цитата:
шина данных все время занята

Верно, поэтому хочу "двух-банковую" организацию памяти сделать. Пока один чип SRAM генерирует картинку, второй доступен. Хотя, конечно, баловство это - нормальный видеоконтроллер из STM32 не создашь.
Zauropod, а с какой скоростью у Вас видеоконтроллер (Epson, кажется?) позволяет выводить графику? В байтах или пикселах в секунду. На тех видео, где JPG-картинки выдает, скорость не оценишь - на декодирование JPG-а куча времени уходит.


 

Куратор темы
Статус: Не в сети
Регистрация: 16.11.2006
Откуда: Всегда!
neo333 писал(а):
с какой скоростью у Вас видеоконтроллер (Epson, кажется?) позволяет выводить графику? В байтах или пикселах в секунду.

60 fps (color 24 bit) до разрешения 960х960. Байты-пиксели для нужного разрешения сам считай.

Давай уточним про скорость.
Чтобы видеоконтроллер что-то выводил, в его память надо что-то записать. Интерфейс записи в видеопамять имеет скорость 30-40 мегабайт в секунду. То есть по FSMC STM32F4 записал, что и куда надо, и свободен. Более того, контрллер дает как двойное буферирование так и N-кратное (аппаратно поддерживается переключение 16 видеобуферов размером до 1 мегабайта каждый). Так что это тоже показатель скорости. STM32F4 может выводить в любую область любого видеобуфера любой объем, с блендингом. Плюс аппаратно поддерживаются 2 независимых экрана PIP.

А в случае работы STM32F4 как видеоконтроллера он должен непрерывно выводить каждый кадр полностью. Зачем его и себя перенапрягать?

Я как основной поставил самый простой видеоконтроллер, без поддержки 2D ускорения, а есть куча разных, с поддержкой спрайтов, камер, аудио, нескольких дисплеев, SD карт, звука, с JPEG транскодером etc. Но у меня все это можно поставить на плату расширения - все сигналы выведены, включая интерфейс PC-Card.

neo333 писал(а):
На тех видео, где JPG-картинки выдает, скорость не оценишь

Так там STM32F4 Discovery выводит с выбранной директории флэшки BMP или JPEG-картинки по SPI на LCD напрямую, это все к скорости никакого отношения не имеет - просто я показывал свой JPEG-декодер в действии.
Тем более там специально паузы поставлены между выводами очередной картинки.


 

Junior
Статус: Не в сети
Регистрация: 01.01.2012
zauropod.
Есть. Добился нормальной картинки 800х600. Осталось в разделении доступа к шине ошибки исправить. Если прерывание на генерацию строчки происходит внутри процедуры вывода точки или линии, мусор на экран иногда лезет.

В общем, полезной задачка оказалась, сделать видеоконтроллер на базе STM32. Много нового узнал и о STM32. Например, регистры управления GPIO не так, как STM32F1xxx программируются. Получается, код с предыдущих моделей, где используется GPIOx->CRL, GPIOx->CRH, на STM32F4 может не заработать?


Интересно стало, какой код генерирует Атоллик с разной оптимизацией. По умолчанию оптимизация -O0, и не нашел как изменить параметр. Просто недоступно изменение, все пункты "серые".
Есть ли возможность настроить оптимизацию?


 

Member
Статус: Не в сети
Регистрация: 26.01.2011
zauropod писал(а):
Плюс последний стандарт зарядки по USB подключить. Какие нафиг кренки?

Под кренками имел ввиду линейные стабилизаторы напряжения LD1117 например, просты но низкий кпд.
TPS622xx в корпусе SOT23-5 300mA(max) при 95% энергоэфективности. То что нужно для МК при питании от аккамулятора.
А для силовухи робота li-fe однозначно, с NI-Mn далеко не уедешь.


 

Junior
Статус: Не в сети
Регистрация: 01.01.2012
zauropod
Что-то давно Вас не видно. Переживаю... как здоровье-то? Если все окей, хоть пару слов скажите.


 

Куратор темы
Статус: Не в сети
Регистрация: 16.11.2006
Откуда: Всегда!
neo333 писал(а):
Переживаю... как здоровье-то?

Не дождетесь! :)
Хотя, конечно, могло бы быть и получше, но таки уже в следующей жизни.

neo333 писал(а):
Добился нормальной картинки 800х600

Так ты сказал бы поточнее, где накосячил и как исправил, мало ли кому полезно будет энти грабли увидеть.

neo333 писал(а):
какой код генерирует Атоллик с разной оптимизацией

Разная оптимизация - в платной версии. Не знаю, как в 3.0 Lite.

max0000000 писал(а):
То что нужно для МК

Ты как-то слишком категоричен в своих советах.
Во-первых, для платы мне нужно >1.5А.
Во-вторых, я близко от себя не вижу Li-Fe и гори они огнем.
В третьих, схема питания уже утверждена, выбрана цепочка контроллер заряда и DC/DC, плюс цепи управления включением-выключением устройства. От беспроводного питания отказался, пока BQ51013 не появится в QFN. Силовую часть уже пришлось три раза перерисовывать.

***
Вчерась Atmel и Farnell подписали соглашение о вечной любви. Плоды этой любви уже видны - at91sam9g15 уже продается. Зато на маузере скоро ожидается расширение ассортиента дисплеев с емкостным тачем (и встроенным контроллером тача - с обработкой 5 одновременных касаний), цена божеская (имея в виду что официальная розница всегда проиграет китайской подворотне).


 

Member
Статус: Не в сети
Регистрация: 26.01.2011
zauropod писал(а):
Во-первых, для платы мне нужно >1.5А.

Я предлогал для каждого МК свой DC/DC, с возможностью включения экономичного режима 1.8V. Хотя сколько жрет STM32F4 на полную катушку я по прежнему не знаю.


 

Куратор темы
Статус: Не в сети
Регистрация: 16.11.2006
Откуда: Всегда!
max0000000 писал(а):
для каждого МК свой DC/DC, с возможностью включения экономичного режима 1.8V

На каждую микросхему свой питальник - так незачем оно, например у STM32W (Zigbee) внутренний регулятор на 1.8, остальные тоже формируют 1.2 или 1.8 самостоятельно, хотя вот у Wi-Fi модуля внешняя накачка, плюс два отдельных степапа на 5 вольт для USB-OTG и видеовыхода (для VGA и опционального HDMI). Но пара линейников стоит, и несколько штук преобразователей уровня.
Вот думаю еще поставить датчики тока по основным линиям питальной звезды, но пока не решился - это требует отдельного МК или расширителя и сложной мультиплексации, а уже на выбранном типоразмере платы ничего не протянешь - у меня и так нормального слоя земли нету, одна имитация. Может, оставлю только контроль общего ввода и STM32F4 или RF.

max0000000 писал(а):
сколько жрет STM32F4 на полную катушку

STM32F4x7, при 3.3V в режиме "все включено", 168MHz и 25 градусах -чуть больше 90мА.
И режим энергосбережения регулируется внутренне, а не внешним питанием, по крайней мере на стационарной борде с кучей периферии менять внешнее напряжение на МК не целесообразно.

***
ST обновила USB библиотеку для STM32 до 2.1.0 от 19 марта, включив туда официальную поддержку STM32F4. Как всегда, никакого анонса, даже значка "UPD" не появилось, хотя зачастую какое другое никчемное обновление сразу высвечивается.
Кстати, в своем родмапе для STM32F4 на первый квартал была наобещана по софту куча всяких чудес, неделя осталась, однако. Меня терзают смутные сомнения, что будет, как всегда...


 

Junior
Статус: Не в сети
Регистрация: 01.01.2012
zauropod
Цитата:
Не дождетесь!

Рад, что все более-менее :)

Цитата:
Так ты сказал бы поточнее, где накосячил и как исправил

1. Не умел с таймерами СТМ-ки работать и запускал начало вывода строки по расчету тактов процессора. Чуть времянка нарушалась - изображение "плыло" и частоту кадра ровно 60Гц сложно было получить: 57 и 59, и 61 было.
2. Вторая проблема в неудобной частоте - 168Мгц. Чтобы уложиться в спецификацию VGA, кол-во тактов на вывод одного пикселя должно быть дробным, например, 6.6733 для разрешения 640х480. В жизни может быть либо 6, либо 7. Добился хоть паршивой, но картинки, выводя по 2 пикселя в 13 тактов, т.е. по 6.5 тактов на пиксель.

Решил все так:
1. Начало вывода строки через прерывание по таймеру.
2. Установил частоту 240 Мгц для разрешения 800х600. Необходимое число тактов на пиксель = 6. Ровно. Можно ставить и 200 Мгц - 5 тактов хватает на вывод пикселя.
Развернув цикл для всех 800 точек можем уложиться в 3 такта и работать при 120 Мгц, тогда подойдет совсем дешевый чип STM32.

Осталась проблема мусорных пикселей.
Иногда прерывание на вывод строчки происходит, когда выводится пиксель - установлены управляющие сигналы и адрес для SRAM - но еще не произошла запись данных в память.
В прерывании происходит изменение управляющих сигналов, при котором записывается обычно 0, но иногда и другой цвет.
Затем выход из прерывания, перед которым восстанавливаю регистры используемых GPIO - в результате заканчиваю запись пикселя в неизвестном направлении :) SRAM-то уже имеет совсем иной адрес.
Решения есть, например, запрет прерываний на время операции записи в память. Немного времени появится, доделаю код.


 

Junior
Статус: Не в сети
Регистрация: 01.01.2012
Вот и CooCox допилили. Новая версия поддерживает STM32F4.
http://www.coocox.org/CoIDE/CoIDE_Updates.htm


 

Junior
Статус: Не в сети
Регистрация: 14.03.2012
Здравствуйте, выше писал про сенсор от оптической мышки, как получить с него данные. Выяснил что нужно подключиться к ножке SDIO и SCK, далее проинициализировать порты на плате на вход, соответствующиее SDIO and SCK (не совсем понятно), и далее нужно как то считывать данные (через какое-то время? в даташите ( http://www.pobot.org/IMG/pdf/datasheet_ADNS2610.pdf ) на мышь не совсем понятно через какое именно время считывать, или может нужно еще каким-либо способом?). Диодиком на платке помигал, пользовательскую кнопку настроил... Проводки припаяны к соответствующим портам, хочется продвинуться дальше.
Код мигалки
Код:
/*
*   При подключнии платы к питанию начинает мигать красный светодиод. Когда нажимаем на пользовательскую
*   кнопку загорается зеленый светодиод, попутно с ним, если он включен, мигают оранжевый и синий светодиод
*/

#include "stm32f4xx.h"

const uint16_t
LED4_Green = GPIO_Pin_12,           //PD - 12 (Зеленый диод)
LED3_Orange = GPIO_Pin_13,         //PD - 13 (Оранжевый диод)
LED5_Red = GPIO_Pin_14,            //PD - 14 (Красный диод)
LED6_Blue = GPIO_Pin_15,         //PD - 15 (Синий диод)
ButtonUser = GPIO_Pin_0;         //PA - 0  (Пользовательская кнопка)

//Инициализация пользовательской кнопки   
void InitUserButton()
{
   GPIO_InitTypeDef gpio_init;
   //Включаем тактирование порта A
   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
   //Заполняем структуру по умолчанию
   GPIO_StructInit(&gpio_init);    
   //Заполним структуру gpio_init
   gpio_init.GPIO_Pin = ButtonUser;            //кнопка
   gpio_init.GPIO_Mode = GPIO_Mode_IN;            //Режим: ввод
   gpio_init.GPIO_Speed = GPIO_Speed_25MHz;      //Частота обновления: 25 МГ   
   //Инициализируем порт A
   GPIO_Init(GPIOA, &gpio_init);
}
//Инициализация светодиодов   LED1, LED2, LED3, LED1
void InitLed()
{
   GPIO_InitTypeDef gpio_init;
   //Включаем тактирование порта D
   RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD, ENABLE);
   //Заполняем структуру по умолчанию
   GPIO_StructInit(&gpio_init);
   gpio_init.GPIO_Pin = LED4_Green | LED3_Orange | LED5_Red | LED6_Blue;
   gpio_init.GPIO_Mode = GPIO_Mode_OUT;
   gpio_init.GPIO_Speed = GPIO_Speed_25MHz;
   //Инициализируем порт D
   GPIO_Init(GPIOD, &gpio_init);
}
// Обработчик прерывания по переполнению таймера SysTick
void SysTick_Handler()
{
   uint8_t btn_state = GPIO_ReadInputDataBit(GPIOA, ButtonUser);   //текущее состояние кнопки
   static uint8_t
   counter = 0,      //мигание красного,
   counter2 = 0;   //оранжевого и синего
   //если нажали на кнопку и светодиод LED4_Green горел (1), то выключим (0) его и наоборот
   if(btn_state == 1)
      GPIO_WriteBit(GPIOD, LED4_Green, !GPIO_ReadOutputDataBit(GPIOD, LED4_Green));   //Записываем 1 или 0
   //Если горит зеленый светодиод
   if(GPIO_ReadOutputDataBit(GPIOD, LED4_Green))
   {   //мигание оранжевым и синим светодиодом
       if(counter2 == 0){
          GPIO_WriteBit(GPIOD, LED3_Orange | LED6_Blue, !GPIO_ReadOutputDataBit(GPIOD, LED3_Orange | LED6_Blue));
         counter2 = 100;
      }
      else
         --counter2;
   }
   else   //Если зеленый светодиод не горит, принудительно выключаем оранжевый и синий светоидиод
      GPIO_ResetBits(GPIOD, LED3_Orange | LED6_Blue);   
   //Мигание светодиодом
   if (counter == 0){
      GPIO_WriteBit(GPIOD, LED5_Red, !GPIO_ReadOutputDataBit(GPIOD, LED5_Red));    
      counter = 50;
   }
   else
      --counter;
}

int main()
{                                          
   InitUserButton();
   InitLed();
   //Сбрасываем в ноль
   GPIO_ResetBits(GPIOD, LED4_Green | LED3_Orange | LED5_Red | LED6_Blue);
   //Конфигурируем таймер SysTick на срабатывание сто раз в секунду
   SysTick_Config(SystemCoreClock / 100);

   for(;;){
      
   }

   return 0;
}


 

Куратор темы
Статус: Не в сети
Регистрация: 16.11.2006
Откуда: Всегда!
sonyk писал(а):
Выяснил что нужно подключиться к ножке SDIO и SCK ... Проводки припаяны к соответствующим портам, хочется продвинуться дальше


Я уже написал, что нужно читать - техническую документацию. Учтите, что ADNS-2610 - пятивольтовый девайс, а STM32F4 - до 3.6В. Хоть у него сигнальные ноги и толерантны к 5V, лучше бы поставить шифтер, что-то типа PCA9306.

"Соответствующие порты" - что вы имеете в виду? У МК для выбранного порта SPI нужно будет соединить MISO с MOSI, поставить пулап, для чтения (второй байт) посылать 0xff.
SPI настраивается на 2МГц. Как настраивать SPI - посмотрите на примере из стандартной библиотеки (не для Discovery, а общей), пример SPI_FLASH для работы с памятью типа M25xx etc. Лучше бы взять такую микросхему (любую SPI flash) и пройти урок вживую, еще лучше при этом понаблюдать с осциллографом или сниффером за сигналами. После этого вопросов не останется.

sonyk писал(а):
нужно как то считывать данные (через какое-то время?...


Времена все расписаны в даташите, инициализация, пробуждение, интерфейс.
А считывать можно непрерывно до 1500 фреймов в секунду по ТТХ, но сначала научитесь хоть что-то писать в датчик и читать из него.


Показать сообщения за:  Поле сортировки  
Форум закрыт Новая тема / Эта тема закрыта, вы не можете редактировать и оставлять сообщения в ней. Закрыто  Сообщений: 399 • Страница 14 из 20<  1 ... 11  12  13  14  15  16  17 ... 20  >
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  

Лаборатория














Новости

Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan