Главная › Форумы › Программирование микроконтроллеров › Программирование МК AVR › Ответ в теме: Программирование МК AVR
Этого я не проверял. Я написал функцию пересылки данных по SPI, и начал писать в регистры W5500 необходимые данные: ip, mac, порт и всё остальное. У меня, к сожалению, самый простой программатор, без отладчика, поэтому отладить код не могу. Наверное, мне стоит попробовать прочитать эти данные, чтобы удостовериться, что они действительно доходят до места назначения, но я даже не уверен, что пересылку организовал правильно. Код привожу ниже:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
void w5500_writeReg(uint8_t op, uint16_t adress, uint8_t data) { //select_w5500(); //Функцию выбора SS закомментировал SPDR = (adress>>8); //Пересылаем старший байт адреса while(!(SPSR & (1<<SPIF))); //Ждём конца пересылка SPDR = adress; //Пересылаем младший байт адреса while(!(SPSR & (1<<SPIF))); SPDR = op|(RWB_WRITE<<2); //Применяем операцию "или" к опкоду и битом записи, сдвинутым на два бита while(!(SPSR & (1<<SPIF))); SPDR = data; //Передаём данные while(!(SPSR & (1<<SPIF))); //deselect_w5500(); } |
Функция чтения точно такая же, за исключением того, что я по-другому формирую опкод (op|(RWB_READ<<2) и в конце не пересылаю данные в SPDR, а возвращаю их (return SPDR). Если можно как-нибудь по-другому проверить работоспособность чипа, то я буду рад об этом узнать.