AVR Раздел по микроконтроллерам компании Atmel - AVR / ATtiny / ATmega / ATMega128 / ATxmega, вопросы по программированию в AVR studio и все, относящееся к AVR... |
30.05.2018, 01:54
|
|
Почётный гражданин KAZUS.RU
Регистрация: 15.11.2010
Сообщений: 2,379
Сказал спасибо: 338
Сказали Спасибо 328 раз(а) в 253 сообщении(ях)
|
SPI через USI + nRF24l01
Не могу понять, где косячу(
Есть такой говнокод
Код:
|
//... Инициализация SPI - USI
void SPI_Init(void)
{
SPI_DDR |= (Bit(SCK) | Bit(MISO)); // Все выводы, кроме MOSI, выходы
SPI_PORT |= (Bit(MOSI) | Bit(MISO));
USICR |= (Bit(USIWM0) | Bit(USICS1) | Bit(USICLK));
}
//... Передать байт данных
void SPI_WriteByte(uint8_t data)
{
//... Копируем байт в регистр USIDR
USIDR = data;
//... Установим флаг начала передачи
USISR |= Bit(USIOIF);
//... В цикле следим за флагом
while(!(USISR & Bit(USIOIF)))
{
USICR |= ( Bit(USITC)); // Режим SPI, тактируем шину сами
}
_delay_us(100); // Задержка для моста SPI - UART
}
//... Передать и получить байт данных
uint8_t SPI_ReadByte(uint8_t data)
{
//... Отправляем байт
SPI_WriteByte(data);
//... Принятый байт возвращаем
return USIDR;
} |
Пытаюсь связаться с nRF24. На все команды записи в регистры возвращает 0, на любую команду чтения из регистров возвращает 15. После команды очистки буфера FIFO возвращает 14. На аппаратном SPI 328p nRF24 работает, код тот-же. Может есть у кого опыт в таких делах? Где косячу? Мост SPI-›UART на 32u4 всё общение по SPI шине видит.
Последний раз редактировалось parovoZZ; 30.05.2018 в 16:54.
|
|
|
|
30.05.2018, 04:22
|
|
Гуру портала
Регистрация: 17.07.2010
Адрес: мурмурляндия
Сообщений: 10,580
Сказал спасибо: 181
Сказали Спасибо 3,161 раз(а) в 2,047 сообщении(ях)
|
Re: SPI через USI + nRF24l01
Осцилограф то чо показывает?
__________________
кагмаподэ магмаподэ
|
|
|
|
30.05.2018, 08:46
|
|
Гуру портала
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,835
Сказал спасибо: 919
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
|
Re: SPI через USI + nRF24l01
Тут не важно, что вы подключаете к интерфейсу, если не можете разобраться с самим интерфейсом. Сначала запускайте SPI. Пока не понятно, в чем проблема.
|
|
|
|
30.05.2018, 11:55
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.10.2007
Сообщений: 2,760
Сказал спасибо: 1,105
Сказали Спасибо 1,037 раз(а) в 569 сообщении(ях)
|
Re: SPI через USI + nRF24l01
Сообщение от индюк
|
Осцилограф то чо показывает?
|
Удобнее логический анализатор - клон saleae от китайцев за $6/ Сильно помогает с интерфейсами. Последний раз - со связью через RS232 "иногда путает символы". А скорость неправильная и изменяется прыжками.
Последний раз редактировалось makakus; 30.05.2018 в 11:57.
|
|
|
|
30.05.2018, 14:09
|
|
Почётный гражданин KAZUS.RU
Регистрация: 15.11.2010
Сообщений: 2,379
Сказал спасибо: 338
Сказали Спасибо 328 раз(а) в 253 сообщении(ях)
|
Re: SPI через USI + nRF24l01
Чорт, форум код куда запрятал??? Я один его не вижу?
Сообщение от индюк
|
Осцилограф то чо показывает?
|
Ничего не показывает. Нету его.
Сообщение от Easyrider83
|
Тут не важно, что вы подключаете к интерфейсу, если не можете разобраться с самим интерфейсом. Сначала запускайте SPI
|
Да код стандартный - из апноута. Atmega 32u4 через аппаратный SPI нормально слышит. Правда, залегла она вчера смертью храбрых узкоглазых(((
С SPI не понял - я ж его и запускаю. На огрызке под названием USI. Тиня 24/44/84.
|
|
|
|
30.05.2018, 14:38
|
|
Почётный гражданин KAZUS.RU
Регистрация: 15.11.2010
Сообщений: 2,379
Сказал спасибо: 338
Сказали Спасибо 328 раз(а) в 253 сообщении(ях)
|
Re: SPI через USI + nRF24l01
Сообщение от parovoZZ
|
Не могу понять, где косячу(
Есть такой говнокод
Код:
|
//... Инициализация SPI - USI
void SPI_Init(void)
{
SPI_DDR |= ((0‹‹MOSI) | (1‹‹SCK) | (1‹‹MISO)); // Все выводы, кроме MOSI, выходы
SPI_PORT |= ((1‹‹MOSI) | (0‹‹SCK) | (1‹‹MISO));
USICR |= (Bit(USIWM0) | Bit(USICS1) | Bit(USICLK));
}
//... Передать байт данных
void SPI_WriteByte(uint8_t data)
{
//... Копируем байт в регистр USIDR
USIDR = data;
//... Установим флаг начала передачи
USISR |= Bit(USIOIF);
//... В цикле следим за флагом
while(!(USISR & Bit(USIOIF)))
{
USICR |= ( Bit(USITC)); // Режим SPI, тактируем шину сами
}
_delay_us(100); // Задержка для моста SPI - UART
}
//... Передать и получить байт данных
uint8_t SPI_ReadByte(uint8_t data)
{
//... Отправляем байт
SPI_WriteByte(data);
//... Принятый байт возвращаем
return USIDR;
} |
Пытаюсь связаться с nRF24. На все команды записи в регистры возвращает 0, на любую команду чтения из регистров возвращает 15. На аппаратном SPI 328p nRF24 работает, код тот-же. Может есть у кого опыт в таких делах? Где косячу? Мост SPI-›UART на 32u4 всё общение по SPI шине видит.
|
Ну правда, куда код девается?
|
|
|
|
30.05.2018, 16:28
|
|
Почётный гражданин KAZUS.RU
Регистрация: 13.03.2010
Сообщений: 2,897
Сказал спасибо: 498
Сказали Спасибо 3,061 раз(а) в 1,425 сообщении(ях)
|
Re: SPI через USI + nRF24l01
Сообщение от parovoZZ
|
Ну правда, куда код девается?
|
Движок форума съедает. Нужно же ему питаться чем-то. Вот он кодом и питается.
Пробелы, расставленные в неожиданных местах, портят аппетит этому движку. Попробуйте, может получится. Функция предварительного просмотра сообщений, увы, не в помощь.
Впрочем любой, кто нажмет в первом сообщении "процитировать", увидит полную версию того, что вы запостили. Осталось найти такого, который сделает это и при этом помнит, что там с настройками этого уродца - USI
Последний раз редактировалось AR_Favorit; 30.05.2018 в 16:31.
|
|
|
|
30.05.2018, 16:29
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.10.2007
Сообщений: 2,760
Сказал спасибо: 1,105
Сказали Спасибо 1,037 раз(а) в 569 сообщении(ях)
|
Re: SPI через USI + nRF24l01
|
|
|
|
30.05.2018, 16:59
|
|
Почётный гражданин KAZUS.RU
Регистрация: 15.11.2010
Сообщений: 2,379
Сказал спасибо: 338
Сказали Спасибо 328 раз(а) в 253 сообщении(ях)
|
Re: SPI через USI + nRF24l01
Сообщение от AR_Favorit
|
Пробелы, расставленные в неожиданных местах, портят аппетит этому движку.
|
Не, не пробелы. ‹‹ вот эта хрень воздействует.
Сообщение от AR_Favorit
|
этого уродца - USI
|
Ну точно. На бумаге всё красиво, а на деле хрень.
Сообщение от makakus
|
Может, изменить подход?
|
Да! Надо осваивать новые горизонты =)
Сообщение от makakus
|
Удобнее логический анализатор - клон saleae от китайцев за $6/
|
Да кто ж спорит-то. Я даже рядом тему создал про поиски.
|
|
|
|
30.05.2018, 17:14
|
|
Почётный гражданин KAZUS.RU
Регистрация: 08.10.2007
Сообщений: 2,760
Сказал спасибо: 1,105
Сказали Спасибо 1,037 раз(а) в 569 сообщении(ях)
|
Re: SPI через USI + nRF24l01
Сообщение от parovoZZ
|
Я даже рядом тему создал про поиски.
|
Это про $100 за 100 МГц? Я там молчал, мож вы компьютеры отлаживаете. А мне с АВРками 24 мгц хватает вполне. Главное - дёшево!
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:24.
|
|