Attiny85+NRF2401++Arduino
- Войдите на сайт для отправки комментариев
Всем привет.
Помогите пожалуйста разобраться с вопросом. Есть модуль на NRF2401+ с Digispark на Attiny85.
Нужно собрать на этом передатчик. Не работает.
Подключил по даташитам NRF к Digispark : MISO -0, MOSI-1,SCK-2,CSN-3, CE4-4
Точнее не так - подключил прозвонив выводы. В доках на Digispark MISO - 1, MOSI -0, но осциллограф показывает другое. Написал такой код, что бы проверить правильность выводов:
#include <SPI85.h>
#define MISO 0
#define MOSI 1
#define SCL 2
#define SS 3
void setup() {
pinMode(MOSI,OUTPUT);
pinMode(SCL, OUTPUT);
pinMode(MISO,INPUT);
pinMode(SS,OUTPUT);
SPI85.begin;
digitalWrite(SS,HIGH);
digitalWrite(MOSI,HIGH);
digitalWrite(SCL,HIGH);
}
void loop() {
int i=0x0; //Здесь должен быть регистор CONFIG. Мы его считываем.
uint8_t inchar;
while (1) {
digitalWrite(SS,LOW);
inchar=SPI85.transfer(i);
//DigiKeyboard.println(inchar);
digitalWrite(SS,HIGH);
delay(500);}
}
Код работает. Цифры посылает, модуль на них что-то отвечает.
Загружаю код передатчика - не работает.
Посмотрел осциллографом - MOSI, SCK,CSN - выходят как надо.
Нет сигнала от модуля по MISO. Закралась догадка - отключил MISO от контроллера- данные из модуля передатчика идут. Получается контроллер прижимает MISO к земле? Не понятно почему.
Пошел разбираться с библиотекой RF24. В ней вроде все как надо.
Есть место в коде:
.. #if defined(__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || defined(__AVR_ATtiny85__) // see http://gammon.com.au/spi # define DI 0 // D0, pin 5 Data In # define DO 1 // D1, pin 6 Data Out (this is *not* MOSI) # define USCK 2 // D2, pin 7 Universal Serial Interface clock # define SS 3 // D3, pin 2 Slave Select #elif defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || defined(__AVR_ATtiny84__) .. Void SPIClass::begin() { pinMode(USCK, OUTPUT); pinMode(DO, OUTPUT); pinMode(DI, INPUT); USICR = _BV(USIWM0); } ..
В которым для тиньки определяются выводы и их направление. Единственная догадка - может так быть, компилятор получает другое название контроллера? Как это проверить?
Или я вообще не в ту сторону пошел?
Помогите разобраться.
Спасибо.
PS: Библиотеку проверял на ардуино нано, uno - работает. Модуль тоже работает с другими платами.
На Digispark на P1 висит светодиод на плате.