vpm 0 8 марта, 2012 Опубликовано 8 марта, 2012 · Жалоба Добрый день! Есть проблема с записью и считыванием регистра SPI1DAT и в передатчике и в приемнике Si1000. Не пишутся данные в SPI1DAT. При записи отображается 0х00. Среда разработки IDE v4.20.00. Кто-нибудь сталкивался с такой проблемой? Что может быть?. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Harbinger 10 11 марта, 2012 Опубликовано 11 марта, 2012 · Жалоба SFRPAGE до того не переключали случаем? Там д.б. ноль, если даташит не врёт. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vpm 0 11 марта, 2012 Опубликовано 11 марта, 2012 · Жалоба SFRPAGE до того не переключали случаем? Там д.б. ноль, если даташит не врёт. :) SFRPAGE =0; С этим все чисто. Т.е 3-х проводной интерфейс SPI1 в режиме мастер (напр. для передатчика), и при записи значения в SPI1DAT, SPI1CN=0х03. После записи SPI1CN=0х01. Вроде все чисто, но SPI1DAT при этом = 0х00. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
at90 0 11 марта, 2012 Опубликовано 11 марта, 2012 · Жалоба SFRPAGE =0; С этим все чисто. Т.е 3-х проводной интерфейс SPI1 в режиме мастер (напр. для передатчика), и при записи значения в SPI1DAT, SPI1CN=0х03. После записи SPI1CN=0х01. Вроде все чисто, но SPI1DAT при этом = 0х00. Кроссбар и порты правильно настроены? Я начинал с примеров от HopeRF RFM50. Там тоже SI1000. Все заработало сразу. Вот исходники. http://www.hoperf.com/upload/rf/rf50_code.rar Посмотрите как там spi сделан. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vprokofiev 0 29 марта, 2012 Опубликовано 29 марта, 2012 · Жалоба Кусок своего кода для ыш-1000 прилагаю, но я использовал, кажется, 3-wire и NSS дергал вручную, не помню уже почему void ForceReg ( bit rw, unsigned char addr, unsigned char dataToReg ){ // Send SPI data using double buffered write EA = 0; NSS1 = 0; // drive NSS low SPIF1 = 0; if( rw ){ // clear SPIF SPI1DAT = (addr | 0x80 ); // write reg address } else { SPI1DAT = (addr ); // write reg address } while(!TXBMT1); // wait on TXBMT SPI1DAT = dataToReg; // write value while(!TXBMT1); // wait on TXBMT while((SPI1CFG & 0x80) == 0x80); // wait on SPIBSY curReg.dataFromReg = SPI1DAT; SPIF1 = 0; // leave SPIF cleared NSS1 = 1; EA = 1; // drive NSS high } Кроссбар и порты получаются утилитой, целый файл наверное нет смысла класть. Хотел сказать посмотрите осцилом что там реально получается, но тут это затруднительно :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Edit2007 3 30 марта, 2012 Опубликовано 30 марта, 2012 · Жалоба Отладка на камне или в симуляторе??? Если на камне, то осцилограф рассудит. Если в симуляторе, то не вся перефирия и не увсех камней поддерживается. Иногда поддерживается криво. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vpm 0 3 апреля, 2012 Опубликовано 3 апреля, 2012 · Жалоба at90, спасибо. Проблема была в иницилизации. Да и сложно было искать на рабочем изделии (сигнальные образцы TR и RF) Vladimir Prokofi..., редактор Отладка на камне. Спектроанализатора на 500МГц нет, да и осц. на 500МГц тоже (раб.частота 434МГц), а осциллографом (по низкой) смотреть на SPI1 не получается, он наружу не выведен. Что касается SPI1DAT, то отладчик IDE не показывает его состояние и о работоспособности можно судить только косвенно по возвращаемым значениям. Всем еще раз спасибо Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться