Attiny13 и NRF24L01....Нужна помощь!!!

Misha87
Offline
Зарегистрирован: 10.06.2015

Всем привет! Посмотрел видео Дмитрия Осипова http://www.youtube.com/watch?v=iJJVj9kgS-A   .... И очень захотелось повторить все это,но только на Attiny13.... Вставляю этот код https://yadi.sk/d/76OpNatE6pNb2 в arduino ide и пытаюсь залить в Attiny13.... Выдает вот такую ошибку "C:\Users\Миша\Documents\arduino-1.0.4-windows\arduino-1.0.4\libraries\SPI/SPI.h:67: error: 'SPIE' was not declared in this scope"  Можно ли это как-то исправить? Очень нужна ваша помощь!!! Либо может помодете написать другой код.... Мне нужно,чтобы передатчик был построен на NRF24L01 и Attiny13( нужно максимально малый размер), а приемник я в принципе могу реализовать на Arduino nano например. Заранее благодарен!!!

SunX
SunX аватар
Offline
Зарегистрирован: 04.10.2014

Что-то мне подсказывает, что по размерам Attiny13 и ATmega328 по размерам если и отличаются, то тем, что ATmega328 меньше.

Если я ничего не путаю, то ATtiny13 не имеет хардварного SPI, потому Вам надо либо использовать софтверный (если бибилиотекА, используемая Вами это умеет) или самому реализовать его (опять же программно).

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

я бы лучше мегу8 взял

Misha87
Offline
Зарегистрирован: 10.06.2015

Снова привет! Решил короче использовать не nrf24, а модуль на 433mhz и пока что все это дело попробовал на ардуино нано...Все работает,так как и хочется,вопрос только в том,на сколько хватит батареи. Потребляемый ток пока не померил,завтра буду еще этим заниматься и померю....Я новичок в этом деле,и поэтому спящий режим и всякие там прерывание для меня пока сложны...Ардуинка у меня получается всегда включена и в цикле каждые 10 секунд подает питание на модуль 433mhz и шлет команду....Тоесть получается,что ардуина постоянно "включена", а модуль включается каждые 10 секунд... Вот кусок кода в котором все это дело происходит

////////////////////////////////////////////
void loop(){
digitalWrite(power, HIGH);
if (digitalRead(switchPin) == HIGH)
  {
    send("on");
  }
 digitalWrite(power, LOW);
 delay(10000);
}

//////////////////////////////////////////

SunX
SunX аватар
Offline
Зарегистрирован: 04.10.2014

Мультиметр в руки и вперед считать. Ну или просто поставить и ждать, сколько проживет.

А научиться уводить ардуину в сон все же стоит - это совсем не сложно и как раз будет раз в ~8 секунд просыпаться, делать свои дела и дальше спать.

KVadik
KVadik аватар
Offline
Зарегистрирован: 15.06.2014

SunX пишет:

Если я ничего не путаю, то ATtiny13 не имеет хардварного SPI, потому Вам надо либо использовать софтверный (если бибилиотекА, используемая Вами это умеет) или самому реализовать его (опять же программно).

Путаете. Имеет.

SunX
SunX аватар
Offline
Зарегистрирован: 04.10.2014

Это SPI для прошивки ATtiny, а не SPI, который она может использовать программно для управления переферией. На картинке даже подписано же "AVRISP ... Pinout"

Misha87
Offline
Зарегистрирован: 10.06.2015

Пробовал подключить atmega 8 и nrf24...Скетч залился без проблем, но не работает ....Не могу понять в чем дело ....Грешу только на то, что мега работает без внешнего кварца. Может из-за этого или нет ?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Misha87 пишет:

...

 delay(10000);

...

Ой ...

Misha87
Offline
Зарегистрирован: 10.06.2015

ЕвгенийП пишет:

Misha87 пишет:

...

 delay(10000);

...

Ой ...


Это вы о чем?

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

О delay(100500), конечно :)

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

Misha87 пишет:
Пробовал подключить atmega 8 и nrf24...Скетч залился без проблем, но не работает ....Не могу понять в чем дело ....Грешу только на то, что мега работает без внешнего кварца. Может из-за этого или нет ?

фьюзы значит неправильные. отправь в коде в uart что нибудь. если приходит значит пролема не в меге, а в коде или радиомодуле

я уже много устройств сделал на меге8 и nrf24l01 на внутреннем генераторе и все прекрасно работает

Misha87
Offline
Зарегистрирован: 10.06.2015

На ардуино этот код работает,а на меге нет. Hex файл собирал в калькуляторе, частоту выбрал 8mhz.

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

в калькуляторе hex? а чего в идэ не компилировал?

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

А фьюзы под 8 как шили?

Misha87
Offline
Зарегистрирован: 10.06.2015

trembo пишет:

А фьюзы под 8 как шили?


Да, шил под мега 8....В arduino ide появилась мега8 8mhz

Misha87
Offline
Зарегистрирован: 10.06.2015

SunX пишет:

Мультиметр в руки и вперед считать. Ну или просто поставить и ждать, сколько проживет.

А научиться уводить ардуину в сон все же стоит - это совсем не сложно и как раз будет раз в ~8 секунд просыпаться, делать свои дела и дальше спать.


Сегодня подключил arduino nano и модуль н 433mhz ,запитал от двух батареек CR2032 замерил потребление всего этого дела, вышло 18mA (светодиоды на ардуино оставил, запитал ардуино на контакт vin )

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Что появилось? Да я захочу вам что угодно "появлю"

Я не понял: фьюзы шили или нет?
Чем шили?

Misha87
Offline
Зарегистрирован: 10.06.2015

trembo пишет:

Что появилось? Да я захочу вам что угодно "появлю"

Я не понял: фьюзы шили или нет?
Чем шили?


В разделе платы а arduino ide появилась плата atmega 8...Вечером буду дома, скинь ссылку, по какому примеру делал

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

У вас есть программатор или вы через сериал пытаетесь фьюзы прошивать?

goto   http://arduino.ru/forum/programmirovanie/attiny13-i-nrf24l01nuzhna-pomoshch#comment-123795

Misha87
Offline
Зарегистрирован: 10.06.2015

quote=trembo]

У вас есть программатор или вы через сериал пытаетесь фьюзы прошивать?

goto   http://arduino.ru/forum/programmirovanie/attiny13-i-nrf24l01nuzhna-pomoshch#comment-123795

[/quote]
Программатора пока еще нет, прошивал через ардуино

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Хорошо, но я всё-таки  добьюсь от вас правильного ответа как ни крутитесь:

ВЫ фьюзы прошивали нажав  "Загрузить бутлодер" и выбрав программатор  " Ардуина ас ИСП"   ????????????????

Клапауций 999
Offline
Зарегистрирован: 06.06.2015

trembo пишет:

Хорошо, но я всё-таки  добьюсь от вас правильного ответа как ни крутитесь:

ВЫ фьюзы прошивали нажав  "Загрузить бутлодер" и выбрав программатор  " Ардуина ас ИСП"   ????????????????

обычно, если их привязать и пытать калёным железом, то они признаются через какое-то время.

Misha87
Offline
Зарегистрирован: 10.06.2015

Клапауций 999 пишет:

trembo пишет:

Хорошо, но я всё-таки  добьюсь от вас правильного ответа как ни крутитесь:

ВЫ фьюзы прошивали нажав  "Загрузить бутлодер" и выбрав программатор  " Ардуина ас ИСП"   ????????????????

обычно, если их привязать и пытать калёным железом, то они признаются через какое-то время.


Да, я выбираю Arduino as ISP и нажимаю загрузить бутлодер

Misha87
Offline
Зарегистрирован: 10.06.2015

В общем собрал все на Arduino Nano и модуле на 433mhz...Запитал Arduino и передатчик от двух батареек CR2032 (говорил уже об этом выше)....Приемник поместил в авто....До этого не уточнял для чего я хотел все это реализовать. Я хотел сделать,что-то вроде "Радиометки" для авто (бесключевой доступ)... Все подключил сегодня и пол дня где-то проверял...Все работает отлично,так как мне и хотелось. Остается только самое главное,это посмтореть на сколько хватит батареек...В дальнейшем думаю все же разлбраться на счет спящего режима arduino,ну и думаю может вместо батареек поставить аккумулятор и можно будет заряжать....

Misha87
Offline
Зарегистрирован: 10.06.2015

А еще лучше вместо arduino использовать attiny13, тем более что она у меня есть...Но для меня это пока сложно

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

"Загрузить бутлодэр" для всяких тинек у которых бутлодэр отсутствует в связи отсутствием для него места
просто прошивает нужные фьюзы выбираемые из типа платы.
И только программатором, а не по сериал.

Да. И ещё.

Загрузите простую моргалку на дэлэях секунд на 10.
И с секундомером постойте рядом......

Misha87
Offline
Зарегистрирован: 10.06.2015

trembo пишет:

"Загрузить бутлодэр" для всяких тинек у которых бутлодэр отсутствует в связи отсутствием для него места
просто прошивает нужные фьюзы выбираемые из типа платы.
И только программатором, а не по сериал.

Да. И ещё.

Загрузите простую моргалку на дэлэях секунд на 10.
И с секундомером постойте рядом......


То есть не надо было загружать бутлодер , а просто залить скетч и все ?

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

можно было)))

Misha87
Offline
Зарегистрирован: 10.06.2015

В общем не прожила моя ''подделка '' даже сутки ....напряжение на двух батареях упало до 4 вольт и передатчик уже ничего не передает.....надо копать дальше....

Misha87
Offline
Зарегистрирован: 10.06.2015

jeka_tm пишет:

можно было)))


Просто когда я сперва залил blink он работал с задержками, а когда загрузил бутлодер и потом снова blink, то все стало работатьикак надо

jeka_tm
jeka_tm аватар
Offline
Зарегистрирован: 19.05.2013

я обычно заливаю бутлоадер, так как мне удобно работать по uart. отладка и т.д.

работает с задержками значит фьюзы неправильные

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Misha87 пишет:
В общем не прожила моя ''подделка '' даже сутки ....напряжение на двух батареях упало до 4 вольт и передатчик уже ничего не передает.....надо копать дальше....
Миша, а Вы отключали ненужные Вам функции контроллера? Там есть специальный регистр "Power Reduction Register" в котором можно много чего поотключать.

Бит 7: PRTWI – включает/выключает двухпроводной последовательный интерфейс (TWI) обесточивая его часы. При включении интерфейс надо заново инициализировать.
 
Бит 6: PRTIM2 – включает/выключает таймер Timer/Counter2 при условии, что он не в асинхронном режиме. Если таймер в момент выключения активен, дальнейшая его работа аналогична, как если бы выключали питание.
 
Bit 5 – PRTIM0: включает/выключает таймер Timer/Counter0. Если таймер в момент выключения активен, дальнейшая его работа аналогична, как если бы выключали питание.
 
Bit 4 – Reserved: 
 
Bit 3 – PRTIM1: включает/выключает таймер Timer/Counter1. Если таймер в момент выключения активен, дальнейшая его работа аналогична, как если бы выключали пита-ние.
 
Bit 2 – PRSPI: включает/выключает последовательный интерфейс (SPI) обесточивая его часы. При включении необходимо заново проинициализировать интерфейс.
 
Bit 1 – PRUSART0: включает/выключает универсальный последовательный интерфейс (USART) обесточивая его часы. При включении необходимо заново проинициализи-ровать USART.
 
Bit 0 – PRADC: включает/выключает аналого-цифровой преобразователь (ADC). Если его выключить, то он станет недоступен аналоговому компаратору.
 
Сам регистр доступен через переменную PRR. Названия всех битов определены с их номерами. Поэтому, для того, например, чтобы выключить таймер 1, достаточно написать:
 
PRR |= (uint8_t)(1 << PRTIM1)
 
а для того, чтобы его включить:
 
PRR &= (uint8_t)~(1 << PRTIM1))
 
Misha87
Offline
Зарегистрирован: 10.06.2015

ЕвгенийП пишет:

Misha87 пишет:
В общем не прожила моя ''подделка '' даже сутки ....напряжение на двух батареях упало до 4 вольт и передатчик уже ничего не передает.....надо копать дальше....
Миша, а Вы отключали ненужные Вам функции контроллера? Там есть специальный регистр "Power Reduction Register" в котором можно много чего поотключать.

Бит 7: PRTWI – включает/выключает двухпроводной последовательный интерфейс (TWI) обесточивая его часы. При включении интерфейс надо заново инициализировать.
 
Бит 6: PRTIM2 – включает/выключает таймер Timer/Counter2 при условии, что он не в асинхронном режиме. Если таймер в момент выключения активен, дальнейшая его работа аналогична, как если бы выключали питание.
 
Bit 5 – PRTIM0: включает/выключает таймер Timer/Counter0. Если таймер в момент выключения активен, дальнейшая его работа аналогична, как если бы выключали питание.
 
Bit 4 – Reserved: 
 
Bit 3 – PRTIM1: включает/выключает таймер Timer/Counter1. Если таймер в момент выключения активен, дальнейшая его работа аналогична, как если бы выключали пита-ние.
 
Bit 2 – PRSPI: включает/выключает последовательный интерфейс (SPI) обесточивая его часы. При включении необходимо заново проинициализировать интерфейс.
 
Bit 1 – PRUSART0: включает/выключает универсальный последовательный интерфейс (USART) обесточивая его часы. При включении необходимо заново проинициализи-ровать USART.
 
Bit 0 – PRADC: включает/выключает аналого-цифровой преобразователь (ADC). Если его выключить, то он станет недоступен аналоговому компаратору.
 
Сам регистр доступен через переменную PRR. Названия всех битов определены с их номерами. Поэтому, для того, например, чтобы выключить таймер 1, достаточно написать:
 
PRR |= (uint8_t)(1 << PRTIM1)
 
а для того, чтобы его включить:
 
PRR &= (uint8_t)~(1 << PRTIM1))
 

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

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

trembo пишет:

"Загрузить бутлодэр" для всяких тинек...... просто прошивает нужные фьюзы выбираемые из типа платы.

Вы прочитали как и кто пишет новые фьзы в тини?
Для новых типов и частот процессора!!!!!!!!!!!!!

При этом он никакого бутлодэра не шьёт, ОН ПРОСТО ШЬЁТ НУЖНЫЕ ФЬЮЗЫ !!!!!!!

Надо сначала "прошить бутлодэр" - то есть сменить фьюзы.
А потом скетч.....

Misha87
Offline
Зарегистрирован: 10.06.2015

Собрал все тоже самое на Atmega, все работает....не могу понять только одно. Напряжение двух последовательно включенных батареек 5.3 вольта...Замеряю потребление меги без подключенного радиомодуля и оно состовляет - 8.3 мА....Подключаю радио модуль и замеряю снова,потребление состовляет - 8.3 мА ( то есть такое же)....Что не так? В спящий режим так и не получилось мегу отправить ((((

Misha87
Offline
Зарегистрирован: 10.06.2015

trembo пишет:

trembo пишет:

"Загрузить бутлодэр" для всяких тинек...... просто прошивает нужные фьюзы выбираемые из типа платы.

Вы прочитали как и кто пишет новые фьзы в тини?
Для новых типов и частот процессора!!!!!!!!!!!!!

При этом он никакого бутлодэра не шьёт, ОН ПРОСТО ШЬЁТ НУЖНЫЕ ФЬЮЗЫ !!!!!!!

Надо сначала "прошить бутлодэр" - то есть сменить фьюзы.
А потом скетч.....


Кстати спасибо, сделал так как вы и сказали и все получилось.

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Misha87 пишет:

 В спящий режим так и не получилось мегу отправить ((((

обьясните мне тупому один момент... какой нафиг спящий режим может быть у маяка? типа помигал и уснул на полчаса?

и вы понимаете что ваш маяк дырявый? в плане безопасности он вообще ни о чем... и даже если ваша машина то еще убожество что нафиг никому не нужна.. ну так могут просто насрать в салоне.. :)

Misha87
Offline
Зарегистрирован: 10.06.2015

Puhlyaviy пишет:

Misha87 пишет:

 В спящий режим так и не получилось мегу отправить ((((

p>

обьясните мне тупому один момент... какой нафиг спящий режим может быть у маяка? типа помигал и уснул на полчаса?

и вы понимаете что ваш маяк дырявый? в плане безопасности он вообще ни о чем... и даже если ваша машина то еще убожество что нафиг никому не нужна.. ну так могут просто насрать в салоне.. :)


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

Puhlyaviy
Puhlyaviy аватар
Offline
Зарегистрирован: 22.05.2013

Misha87][quote=Puhlyaviy пишет:

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

про два метра поржал.. и чем же вы его ограничили? таскаете на себе шар 2 метра диаметров из сетки металической?

так и не услышал каким образом маяк должен засыпать и отчего он просыпается?

Misha87
Offline
Зарегистрирован: 10.06.2015

Я новичок в этом деле... Как я понял, можно засыпать и просыпаться по таймеру, хотя может я и ошибаюсь... Говорить о том, дырявая система или нет,это уже совсем другой разговор и другая тема, которую я не поднимал и на счет этого, совета не просил... Есть поставленная задача, которую мне хочется решить... На форум обратился потому что вроде как для этого форум и нужен, делиться опытом и знаниями...

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Misha87 пишет:
Я новичок в этом деле... Как я понял, можно засыпать и просыпаться по таймеру, хотя может я и ошибаюсь... .
Миша, когда будете экспериментировать, имейте в виду, что не вскякий таймер способен разбудить систему. В 328 atmeg'е есть три таймера (0, 1 и 2). Все три таймера работают в нормальном режиме и в режиме «Idle». Timer/Counter2 также работает в режимах «Power-Save» и «Extended Standby».

Т.е., если Вы захотите использовать таймер для выхода из режима «Power-Save» и «Extended Standby», Вам нужен именно второй таймер.

Но Вы должны помнить, что если Вы задействуете второй таймер под свои нужды, Вы должны попрощаться с ШИМом на пинах 3 и 11 (если память не изменяет, лучше проверьте номера по документации), на этих пинах нельзя использовать функции tone() и analogWrite().

Также, возможно, кто-то из используемых Вами библиотек также пользует второй таймер.

В общем смотрите, если что-то перестанет работать - первая проверка, а не подрались ли вы с кем-нибудь за таймер.

 

Misha87
Offline
Зарегистрирован: 10.06.2015

ЕвгенийП пишет:

Misha87 пишет:
Я новичок в этом деле... Как я понял, можно засыпать и просыпаться по таймеру, хотя может я и ошибаюсь... .
Миша, когда будете экспериментировать, имейте в виду, что не вскякий таймер способен разбудить систему. В 328 atmeg'е есть три таймера (0, 1 и 2). Все три таймера работают в нормальном режиме и в режиме «Idle». Timer/Counter2 также работает в режимах «Power-Save» и «Extended Standby».

Т.е., если Вы захотите использовать таймер для выхода из режима «Power-Save» и «Extended Standby», Вам нужен именно второй таймер.

Но Вы должны помнить, что если Вы задействуете второй таймер под свои нужды, Вы должны попрощаться с ШИМом на пинах 3 и 11 (если память не изменяет, лучше проверьте номера по документации), на этих пинах нельзя использовать функции tone() и analogWrite().

Также, возможно, кто-то из используемых Вами библиотек также пользует второй таймер.

В общем смотрите, если что-то перестанет работать - первая проверка, а не подрались ли вы с кем-нибудь за таймер.

 


Спасибо за совет. Сегодня забросил немного это дело и вернулся к своей прошлой самоделке, только немного доработал... Пока что все работает, как и хочется... Вот видео в котором я делал связь через Bluetooth http://m.youtube.com/watch?v=ND1bIqy-Z04