atmega SPI сенсор мыши ADNS 5090 считывание показаний

Обсуждаем контроллеры компании Atmel.
Ответить
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Ср сен 01, 2010 07:24:48

Сообщение fatall_error »

Всем привет. Бьюсь три дня над SPI avr. Хочу снимать показания X и Y с сенсора мыши. Есть в наличии ADNS 5090. Не могу понять как их подружить между собой. для отладки использую UART. на UART прилетают одни нули. Что я делал. Для начала по SPI подружил две меги между собой, чтобы понимать как вообще данные передаются, но у сенсора свои хитрости походу и моя кроимозгость не позволяет понять. Итак в CodeVisionAvr мега16 мастер на 8МГц SPI 125КГц режим ноль.

Помогите пожааааалуйста!!!

:shock: :shock: :shock:
Вложения
A5090_datasheet.pdf
Даташит на сенсор
(534.82 КБ) 220 скачиваний
spi.c
Код
(4.29 КБ) 466 скачиваний
Реклама
Потрогал лапой паяльник
Сообщения: 312
Зарегистрирован: Вс июл 29, 2012 16:25:39

Сообщение mas123 »

fatall_error писал(а): мастер на 8МГц SPI 125КГц режим ноль.
В то время как у ADNS 5090 по даташиту получается режим 3....
Хотелось бы узнать - а что ЭТО такое? :shock:

Код: Выделить всё

while (1)
      { 
      PORTB.4=0;
      SPDR=0x00;
      PORTB.4=1;
      PORTB.4=0;
      SPDR=0x00;
      PORTB.4=1;  
      delay_ms(1000);
      };
Если это - передача по SPI, то да-а-а-а....... :facepalm:
Мало того, что после начала передачи первого 0x00 не ждем завершения передачи (подсказываю: даташит на Атмегу, раздел SPI, регистр SPSR, бит SPIF), так зачем-то ещё дёргается CS между передачей байт (надеюсь, что PB4 - это CS).
В даташите на ADNS-5090 четко нарисована диаграмма обмена, и даже сказано: "If NCS is raised during a transaction, the entire transaction is aborted and the serial port will be reset."

Суда по коду - ты пытаешься прочитать содержимое регистра R0. А в том же даташите указаны задержки между байтами при SPI-обмене.
При чтении значения регистра, после выдачи байта адреса необходимо сделать задержку на tSRAD: "From rising SCLK for last bit of the address byte, to falling SCLK for first bit of data being read"
И указано время - 4 мкс, что на частоте 8 МГц составит эдак под 32 команды Атмеги.
Реклама
Ответить

Вернуться в «AVR»