Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Bootloader на NRF24L01


Bootloader на NRF24L01

Сообщений 1 страница 30 из 39

1

Кто-нибудь делал такое? Может соберемся и совместно напишем?
Идея, на мой взгляд, весьма перспективная.

+1

2

уже есть: http://www.mcselec.com/index2.php?optio … t=nrf24l01
вообще нет какой-то простой либы или подпрограммы для работы с модулем
всё никак, никто не причешет имеющиеся примеры
я как раз ща пытаюсь начать разбираться с NRF24L01...

0

3

Как же нет? Прямо на mcselec лежат исходники. Я пользовался их модифицированной версией с сайта Avrproject. Работает отлично.
Теперь предполагаю практически в каждое свое устройство ставить такой модуль.
Спасибо за ссылку, читаю.

0

4

Глянул, да, вроде всё просто. Надо пробовать. Всё никак себя не заставлю это сделать. :D
На счет бутлоадера, если есть знание об самопрошивке МК, то остальное просто. Меня удивляет, что в Баскоме нет готовой функции, автор предлагает использовать вставку из ассемблера, что меня отпугивает, т.к. я не уверен, что нет нюансов для прошивки (atmega или xmega). В общем, тому кто детально занимается этим - не проблема, но я-то покупал баском специально, чтобы свести к минимум рутины и знаний (оставить это дело, так сказать - профессионалам). Я не раз автору намекал на суть идеологии, но он почему-то считает обратно (должен каждый разбираться досконально), окончательно добила другая вещь, новая версия программы - старый код в ней не работает...лана, не суть.)

0

5

Civil, у меня возник вопрос: если модулю в сети назначается статичный адрес, то как он среагирует (будет себя вести), если в сети уже есть такой адрес? Если конфликтная ситуация.

Отредактировано RDW (2014-03-28 20:07:10)

0

6

Я сам не так давно использую эти модули, так что проверяйте то, что я пишу ниже:
насколько понимаю, там нет понятия сети, там идет прямая передача между двумя модулями. (Для этого даже используется понятие pipe)
Т.е. передатчик отправляет, приемник автоматически отправляет ему квиточек. Поэтому если будет два одинаковых передатчика, наверное ничего не произойдет. Если два приемника - намусорят в эфире, одновременно отправляя подтверждения. Но в любом случае это противоречит идеологии модуля, так что нет смысла так делать. имхо.
Еще можно отключить подтверждение приема, тогда проблем не возникнет.

По бутлоадеру я предполагаю все-же использовать как основу код  бл с mcselec. Он универсален, содержит шаблоны под все чипы, а ассемблерные вставки можно просто перенести целиком.
По сути всего-то нужно заменить UART как канал передачи на радиоканал.
Проект с форума хоть и перегружен мусором, но вполне можно у него поучиться как организовать обмен с Баскомом.

0

7

Со стороны Баскома примеры бутлоадера есть. А есть ли примеры кода со стороны компьютера?
Хочется попробовать написать свой загрузчик.

0

8

Со стороны компьютера это вместо MSC Bootloader?
Вот такой проект вчера просматривал: http://avrproject.ru/forum/5-271-1
Сорри, radan, вы там оказывается в обсуждении участвуете : )
Где-то и другие попадались. Обычных бутлоадеров вообще-то много.

0

9

Civil написал(а):

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

Я этим интересую для того, чтобы уйти от статики. Чтобы руками адреса не задавать всех устройств (если их предполагается много). Думал как-то автоматом раздавать или определять адрес..

0

10

На первый взгляд широковещательного вызова не хватает. Но с другой стороны все равно нужно каждый датчик\устройство непосредственно опрашивать.
Теоретически, при первом запуске можно генерировать в датчике уникальный адрес и с ним регистрироваться на головном устройстве.

Согласен, и раздавать можно. При первом запуске соединяться на начальном номере, затем головное устройство присваивает уникальный адрес.

Отредактировано Civil (2014-03-29 14:38:37)

0

11

Чот играюсь готовыми решениями(примерами) - ничего не работает. Вот сижу и не понимаю в чем проблема: в железе радио-модулей или софте. По SPI обмен вроде есть, но реакции на передачи хотя бы в одну сторону - нет.  :dontknow:

0

12

А чей исходник пользуете?
Как часть теста посмотрите на ножку irq приемника. До включения передатчика на ней должна быть 1, после 0 или импульсы.

0

13

Ура! Весь день убил на это дело - заработало!
Я просто вот этот проект пытался на ХМегу натянуть (передатчика). На конец получилось. Там все нюансы в другой настройки SPI конфигурации.
Плюс проблемы с тем, что на обычных МК (атмегах) SPI занят вместе с программатором, оказывается надо обязательно отключать! В ХМегах такого стыда нету, по этому на примитивные грабли наступаю (азы)...
Да, IRQ ножка задергалась в обоих RF модулях...  :crazy:

0

14

RDW написал(а):

я как раз ща пытаюсь начать разбираться с NRF24L01...

Надеюсь поделитесь с форумчанами!!!

Могу принять участие в тестировании, если есть необходимость скажите, соберу макетки.

NRF24L01 + Atmega48P_88P_168P_328_1284P

Можно сделать ретранслятор:  комп ==> блютуз ==> радио ==> МК ==> радио ==> блютуз ==> комп

Отредактировано sasha_1973 (2014-03-30 11:07:25)

0

15

RDW написал(а):

всё никак, никто не причешет имеющиеся примеры

Все надеются на кого-то, а кто может сделать библиотеку, того этот вопрос не интересует.

0

16

Сань, спасибо за желание участвовать. Тема правда про другое, видимо нужно переносить наши посты..
Я сейчас как раз собрал (на скорую руку):

- передатчик: XMega32A4 + OLED128x64(SSD1306) + NRF24L01;
- приёмник: ATmega328P + BTM-222 + NRF24L01.

Пишу все в предыдущей версии Баскома v2.0.7.6 ибо пока все проекты в ней..

Собрал всё это не для обмена данных, а одного эксперимента. Обмен - дело вторичное, но полезное (как знания). Если получится, то расскажу.

0

17

RDW написал(а):

Тема правда про другое, видимо нужно переносить наши посты..

Про что и куда переносить?

0

18

RDW написал(а):

- передатчик: XMega32A4 + OLED128x64(SSD1306) + NRF24L01;
- приёмник: ATmega328P + BTM-222 + NRF24L01.

Если надо, соберу то-же самое, только LCD возьму другой другой

Bootloader через радио тоже очень интересует.

Пользусь Bootloaderom через блютуз HC05 (на скорости 115200 бод), в высшей степени быстро и удобно, особенно если нужна развязка по питанию.

Отредактировано sasha_1973 (2014-03-30 11:23:36)

0

19

RDW написал(а):

всё никак, никто не причешет имеющиеся примеры


Надо как-то заинтересовать Сергея Шилова (Mrshilov) или dmm, им работы на пару часов, получим готовую библиотеку!!!

0

20

sasha_1973 написал(а):

Про что и куда переносить?

Тема про бутлоадер через NRF24L01, я же пока тут пытаюсь обсуждать только работу с радио модулем, т.е. предполагается, что с ним мы уже умеем работать или нужно тогда отдельно ещё выложить алгоритм бутовой заливки и пытаться их скрещивать.

Судя по ощущениям, после работы с NRF24L01 - всё просто до примитива, обмен реализуется легко (главное как всегда не напортачить с настройками самого модуля и МК), но предполагаю могут возникнуть нюансы при переключении на одном модуле прием/передача (надо пробовать).
Ещё нет ясности в алгоритме, т.к. непонятно что хочется. Надо на самом деле сесть и представить/нарисовать это дело, пока в голове каша мола. Потому как мой один из друзей заразил меня идеей квадракоптера (оказалось вещь на много интереснее вертолета: полеты FPV), у меня есть игрушка Hubsan H107D, но это всё игрушки и к нормальным квадракоптерам отношение не имеет...в общем была идея собрать свой аппарат (точнее, с своими мозгами), чтобы можно было снимать красоту природы...пардон, что-то я отвлекся.  ^^

sasha_1973 написал(а):

Надо как-то заинтересовать Сергея Шилова (Mrshilov) или dmm, им работы на пару часов, получим готовую библиотеку!!!

Было бы замечательно, но нюансов разных очень много, не так всё просто, должно работать на всех видах МК.

sasha_1973 написал(а):

Пользусь Bootloaderom через блютуз HC05 (на скорости 115200 бод)

Да, удобно, но требуется кратный кварц - что изначально не удобно, всё должно работать от встроенного генератора в МК (чтобы была гибкость и компактность, если кому нужно большие скорости, то пусть навешивает).

0

21

RDW написал(а):

Да, удобно, но требуется кратный кварц - что изначально не удобно, всё должно работать от встроенного генератора в МК (чтобы была гибкость и компактность, если кому нужно большие скорости, то пусть навешивает).

Пробовал от встроено генератора, всё чудненько работает

1 МГц  =  4800; 9600, в зависимости от состояния Ucsr0a.1 или Ucsra.1

8 МГц  = 19200; 38400; 76800, в зависимости от состояния Ucsr0a.1 или Ucsra.1

Отредактировано sasha_1973 (2014-03-30 13:21:25)

0

22

Провел эксперимент, из-за встроенного буфера в РМ (радио модуль), реакция на подтверждение (прерывание) происходит не совсем корректно. Т.е., если проблема носит аппаратные свойства (РМ отвалился, нет связи), то всё работает четко, но если на программном уровне происходит задержка (например код не успевает сразу забирать данные из буфера РМ), то разобраться в данных уже сложно, получается рассинхрон между МК и РМ. Надо как-то это учитывать. Либо забивать полностью буфер данными (32 байта) или ждать подтверждение о получении..данные в буфере застревают...

Отредактировано RDW (2014-03-30 13:32:19)

0

23

RDW написал(а):

Провел эксперимент, из-за встроенного буфера в РМ (радио модуль), реакция на подтверждение (прерывание) происходит не совсем корректно. Т.е., если проблема носит аппаратные свойства (РМ отвалился, нет связи), то всё работает четко, но если на программном уровне происходит задержка (например код не успевает сразу забирать данные из буфера РМ), то разобраться в данных уже сложно, получается рассинхрон между МК и РМ. Надо как-то это учитывать. Либо забивать полностью буфер данными (32 байта) или ждать подтверждение о получении..данные в буфере застревают...

Можно и так и так, в зависимости от ситуации. Плюс приём и передача с стороны МК на прерываниях, что-бы ничего не терять, и не принимать ничего лишнего.

0

24

Можно вообще как-то сделать ещё жестче, но в коде будет перестраховка:

1. при отправке, приёмнику давать команду на изготовку (приёмник принудительно чистит буфер);
2. приёмник сообщает передатчику, что готов принимать;
3. передатчик сам очищает свой буфер и выплёвывает данные (блоками) для прошивки с CRC (дополнительно) и ждет положительного ответа от приёмника (т.е. все подтверждения идут обменом, а не только прерываниями);
4. приёмник положительно отвечает и постепенно прошивает данные, дальше всё повторяется с пункта №1;

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

+1

25

RDW написал(а):

Было бы замечательно, но нюансов разных очень много, не так всё просто, должно работать на всех видах МК.

Могу тестировать на следующих МК:

Attiny2313A
Atmega8A
Atmega16A
Atmega32A
Atmega48PA
Atmega88PA
Atmega168PA
Atmega328P
Atmega1284P
Atmega2560A

Отредактировано sasha_1973 (2014-03-30 14:57:33)

0

26

RDW написал(а):

- если все переданные блоки были успешны, то бутлоадер считать корректным. Если нет, то как-то на это реагировать (не запускать код, висеть в ожидании заливки)...


Вся новая прошивка в память никак не влезет. Стандартный бутлоадер собирает блоки по 128 байт и записывает их.  Как раз получается 4 пакета по 32 байта.
Не вижу каких-то особых проблем с надежностью. NRF24 самостоятельно повторяет передачу в случае неуспеха. Ну а в критичном случае (кабель ведь тоже можно выдернуть во время прошивки) сам бутлоадер остается на месте и можно повторить попытку.

полуофф: sasha_1973, а вам удалось научить HC05 дергать ресет?

0

27

Civil написал(а):

полуофф: sasha_1973, а вам удалось научить HC05 дергать ресет?

Здесь  всё, что не понятно, спрашивайте.

+1

28

sasha_1973 написал(а):

Все надеются на кого-то, а кто может сделать библиотеку, того этот вопрос не интересует.

На avrproject.ru этот модуль активно обсуждался. На форуме выкладывал проекты. Модуль лёгок в управлении, и библиотек не нужно, кроме как CALL TX.
Кроме того, если дома только два модуля, можно включить и передавать(принимать) по дефолту. Только включить передачу(приём)

+1

29

kip написал(а):

На форуме выкладывал проекты.


Блин, сколько там лазил, а этой ветки не видел, СПАСИБО!

0

30

Не знаю как лучше сделать (новую тему создать или тут продолжить), в общем пока тут спрошу.

Вопрос: кто-нить игрался с передачей данных/блоков (более 1 байта), что происходит, когда ошибка передачи? Теряется весь фрейм/блок данных или может быть частично порча данных? Режим подтверждения и CRC естественно включен.

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Bootloader на NRF24L01