Программирование микроконтроллеров Atmel

abigsam

Member
21h, да нет тан ниче крутого... Да и не микроскоп это (ИМХО) :)
Когда я решал что выбрать, то сначала думал как раз на клон USBee, даж мс нужная валяется. Но потом решил, что кошернее будет автономный девайс - не думаю, что удобно будет каждый раз включать комп, да и не всегда он может оказаться рядом. Поэтому решил делать Хамелеон D. Простенький недо-осфилл-показометр, вполне справляется со своими задачами. Да и не особо дорого вышел: плата 40 грн + деталей где-то на ~200 грн, экран от Семена уже был. Кстати, деталюх брал чуть больше, чем надо - если че, мелочевкой могу поделиться :)
Ещё, кстати, неплохая штука DSO QUAD. Уверен, если заказывать у китайцев будет намного дешевле, чем у .
Да, все выше сказанное - лишь мое ИМХО.
 

Malok

Member
народ, подскажите, может кто сталкивался.
Предистория:
Знакомый попросил посмотреть неработающую китайскую машинку на радиоуправлении. В ходе проверки было решено поменять всю электронную начинку в пульте и машинке. Выбрал приёмо-передатчики HM-R868S и HM-T868S (одни из дешёвых в космодроме + их покупал наш форумчанин k.a.n.). Как раз Elk_Polite был в космодроме и добавил к своему заказу.
Подключил уарт-вход передатчика через эмулятор ком-порта к компу и через терминал передавал данные.
Приёмник подключил к уарту меги8 и написал код занесения полученных данных по прерыванию в буфер и по его наполнению (40 байт) - отрисовки на экран от нокии 3100. Т.е. что-то пропустить в приёме я не могу.
Сразу заметил, если настройки уарта контроллере отличаются от настроек в терминале ком-порта, данные получаются неверно (битрейт, чётность и т.д.)
Грабля 1:
даташит и гугл про данные радиомодули сказал "подключай к уарту и работай".
Приёмник по уарту принимает весь эфир, в общем льется сплошной поток мусора.
Передатчика перебивает шум, но я подозреваю, когда сигнал его будет слабый на расстоянии - будет сливаться с мусором.
Ладно, поставил проверку на начало и конец пакета в приёмнике (сравнивает 3 последовательности символов с эталоном и в случае совпадения считает следующие байты в буфер до #13).
Грабля 2: Одиночные пакеты передатчика приёмник просто не видит. Нужно отсылать постоянно, ещё и с определённым интервалом. Например, при 4800 бод интервал циклической передачи должен быть не меньше 125мс.
Грабля 3: Ещё не пробовал, но думаю, что на расстоянии, когда сигнал будет слабый, часть его будет либо теряться либо заменятся более сильным мусором, т.е. нужно делать алгоритм проверки CRC в конце пакета?
Вопрос: Так ли все это, либо я что-то не так делаю, либо просто так работает этот радиоблок?
П.С. Никогда с радио не сталкивался, так что просьба сразу не пинать.
 

abigsam

Member
Никогда с радио не сталкивался, так что просьба сразу не пинать
Да, похоже тут и попинать-то некому... ))) Видимо вы первый на этом поприще :)
подключил к уарту меги8 и написал код занесения ... что-то пропустить в приёме я не могу
ИМХО, я бы начинал с чего-то попроще. Лучше, мне кажется, подключить приемник ко второму компу и смотреть что там он ловит. Или же написать тупую прошивку в мк, что-то по типу "получили "а" зажгли светодиод, получили "б" - погасили".
если настройки уарта контроллере отличаются от настроек в терминале ком-порта, данные получаются неверно
Ну как-то логично, не ?
принимает весь эфир, в общем льется сплошной поток мусора
Да, как-то непонятно почему так.. Антенна ?..Хотя Вики .
 

Malok

Member
ИМХО, я бы начинал с чего-то попроще. Лучше, мне кажется, подключить приемник ко второму компу и смотреть что там он ловит. Или же написать тупую прошивку в мк, что-то по типу "получили "а" зажгли светодиод, получили "б" - погасили".
здесь косяков быть не может, все отлажено, так как подключал напрямую уарт-уарт проводом без радио-модуля - и что отсылал через комп - то и видел все стабильно на дисплейчике. Сначала, естественно из-за задержек отрисовки lcd, терял данные, но теперь все висит на прерывании и буферизированное, а работа с lcd только по флажку "готово к отрисовке", так что данные не теряются.
Да, как-то непонятно почему так.. Антенна ?..Хотя Вики говорит что FSK помехоустойчива.
Проблема в том что модуль приёмника не может отличить сигнал передатчика от других сигналов на той-же частоте, точнее принимает то что сейчас громче всех кричит по децибелам. Программно я его "научил" фильтрации пакетов, но боюсь что при дальней связи часть пакета будет перебиваться, а если добавить в фильтр проверку контрольного кода - я просто буду знать что пакет "бракованный" и его выкинуть, от чего мне ни холодно ни жарко.
Думал что все это заложено аппаратно в радиомодули как минимум или их сначала нужно настроить командами и по какому-то хитрому протоколу - и тогда только они будут связаны, как максимум. Ещё бесит, что нужна постоянная циклическая отправка данных, ибо одиночный пакет приёмник не видит.
П.С. Я думал, раз их покупал наш форумчанин k.a.n., то они распространённые и в даташите разберусь (не было времени гуглить при покупке).
 

DRUG

All Hope Is Gone...
Грабля 1:
даташит и гугл про данные радиомодули сказал "подключай к уарту и работай".
Приёмник по уарту принимает весь эфир, в общем льется сплошной поток мусора.
Если поддерживаются каналы - поэкспериментируй с ними. Частоты не дальнобойные (если нет в помещении источников) - мусора быть не должно.
Грабля 2: Одиночные пакеты передатчика приёмник просто не видит. Нужно отсылать постоянно, ещё и с определённым интервалом.
Конечно, многие модули аппаратно до 15 раз шлют.
т.е. нужно делать алгоритм проверки CRC в конце пакета?
Обязательно для радиоканала, CRC16 будет вполне достаточно.
а если добавить в фильтр проверку контрольного кода - я просто буду знать что пакет "бракованный" и его выкинуть, от чего мне ни холодно ни жарко.
Почему же? Алгоритм упрощенно должен иметь такой вид: подготовка пакета (если необходимо - его сегментация на источнике на мелкие посылки) - добавление CRC (если не поддерживается аппаратно) - отправка посылки - таймер на ожидание ответа (отработал - счетчик ретрансмисий +1, при привышении лимита - флаг на ошибку предачи) - получение подтверждения успешной передачи (можно с данными) - подготовка следующего пакета. При этом приемник считает CRC, по результатам отправляет либо подтверждение приема, либо переспрос пакета. Важно правильно отработать все таймауты.
Думал что все это заложено аппаратно в радиомодули как минимум или их сначала нужно настроить командами и по какому-то хитрому протоколу
Некоторые поддерживают аппаратно (например, RFM70).
 

Malok

Member
DRUG хм. бред какой-то у меня отправился. рубанули свет - опера автовосстановление страниц делала, видать и отправила (
Хотел написать, что поставлю другой экранчик - низкопотребляемый, проверю на дальность и будут ли помехи. А после перезагрузки оперы решил что не буду отвечать когда проверю - тогда и напишу. Но опера решила по другому )
 
Останнє редагування:

DRUG

All Hope Is Gone...
Malok, я не понял :?
UPD Понял. Понизь мощность передатчика, на глуши местные электростанции :crazy:
 
Останнє редагування:

Elk_Polite

+38О6З7бЗЗ85О my phone
Интересно, как себя покажет STM32F4DISCOVERY , по потреблению и быстродействию???
Да и удобство программирование - не последнее дело... :hmm:
 

abigsam

Member
потреблению и быстродействию
сама плата или камень ?)
удобство программирование
В смысле ? Среда или периферия ? Как у любого кортекса, там туева хуча регистров для настройки. Честно сказать, сильно не ковырял, но должны быть стандартные библиотеки со стандартными ф-циями.. Но это не джедайский путь :D

P.s.
 

Elk_Polite

+38О6З7бЗЗ85О my phone
Процессор конечно. Как работает программатор, было понятно и по первому ДИСКАВЕРИ, а они аналогичны.
Интересно инициализация АЦП, периферии и быстродействие с потреблением...

Скоро еще дисплеи с сенсорами приедут, интересно какова будет скорость заполнеия 3,2 дюймовых дисплеев? И удобно ли будет работать со встроенным картридером?
 
Зверху