#include <ELECHOUSE_CC1101.h> На Arduino UNO компилируется и работает нормально. Arduino M0 - Ошибка компиляции. Есть подозрение на пути, но что именно? (Mac OS) Изменена опция сборки, пересобираем все /Users/dev/Documents/Arduino/libraries/ELECHOUSE_CC1101/ELECHOUSE_CC1101.cpp: In member function 'void ELECHOUSE_CC1101::SpiMode(byte)': /Users/dev/Documents/Arduino/libraries/ELECHOUSE_CC1101/ELECHOUSE_CC1101.cpp:83 (cat) : error: 'SPCR' was not declared in this scope SPCR = 0; ^ /Users/dev/Documents/Arduino/libraries/ELECHOUSE_CC1101/ELECHOUSE_CC1101.cpp:98:23: error: 'SPIF' was not declared in this scope while (!(SPSR & (1<<SPIF))) ; ^
Библиотека ELECHOUSE_CC1101 написана конкретно для микроконтроллеров AVR. Для того чтобы её переделать под Cortex M0 нужно переписать функцию общения с SPI. Давно хочу заняться этим, но пока нет времени.
Сможете ли выделить время на "переделать под Cortex M0 нужно переписать функцию общения с SPI CC1101", если я оплачу потраченое вами время?
Может я попробую сам. Подскажите только в чем разница общения по SPI между AVR и ARM? При положительном результате - поделюся кодом
Вам нужно поправить вот эти функции: Код (C++): void ELECHOUSE_CC1101::SpiMode(byte config) { byte tmp; // enable SPI master with configuration byte specified SPCR = 0; SPCR = (config & 0x7F) | (1<<SPE) | (1<<MSTR); tmp = SPSR; tmp = SPDR; } /**************************************************************** *FUNCTION NAME:SpiTransfer *FUNCTION :spi transfer *INPUT :value: data to send *OUTPUT :data to receive ****************************************************************/ byte ELECHOUSE_CC1101::SpiTransfer(byte value) { SPDR = value; while (!(SPSR & (1<<SPIF))) ; return SPDR; } В Cortex M0 есть аппаратный SPI. Посмотрите как он инициализируется в Arduino IDE.
Какую плату вы используете? Если плата поддерживается Arduino IDE, то должна работать стандартная библиотека SPI: http://arduino.ru/Reference/Library/SPI.
Если смотреть по схеме, то SPI на этой плате выходит на контакты 10 (SS), 11(MOSI), 12(MISO), 13(SCK). Попробуйте работает ли на данной плате библиотека SPI. У меня нет такой платы, не смогу проверить. Я хотел использовать вот такую: