SPI slave

Nikey
Offline
Зарегистрирован: 03.11.2017

Всвязи с нападками местных троллей страдающих манией величия, мою тему по настройке музыкального процессора SAA7708H http://arduino.ru/forum/programmirovanie/nastroika-saa7708h скоропостижно прикрыли. Но это не беда... Я хоть и не программер, но мне таки удалось, вооружившись логанализатором и потренировавшись на другом железе, самому написать этот до смешного простенький кодик, вот он:

#include <Wire.h> // подключаем библиотеку "Wire"

void setup() {
  Wire.begin();   // подключаемся к шине I2C как мастер
}



void loop() {
   Wire.beginTransmission(0x1C); // начало передачи устройству с адресом "1С"
  Wire.write(0x0F);     // старший адрес регистра
  Wire.write(0xFD);     // младший адрес регистра
  Wire.write(0b11100110);     // старшая часть данных 0x48 0b01001000
  Wire.write(0b01011111);     // младшая часть данных 0xc4 0b11000100
  
Wire.endTransmission();     // конец передачи
  delay(5000);
}

Больше было разговору )))))

Аналоговые входы открылись, но... в этой магнитоле, как оказалось есть ещё пару шин и одна из них небезызвестная шина SPI!!! На ней есть много чего интересного, в т.ч. есть и нажатия рулевых кнопок! Вобщем я раскопал на гитхабе код для ардуины уно. Маненько допилил его и... теперь нажимая кнопки на руле я вижу эти нажатия в ком порте своего ноута, чему я, естестнно, несказанно рад, НО! Во-первых, код, собака, работает только на ардуине UNO, а на ардуине леонардо работать наотрез отказывается, потому как написан без использования библиотеки SPI. Т.е. автор кода управляет регистрами напрямую. Умный, гад... не то что я... ну да ладно...

Дык вот... Вот, кстати, исходник: https://github.com/lazarov-g/vanreader/blob/master/main.c

Как я не бился адаптировать его под леонарду... ничего у меня не вышло... но это ещё пол беды... Вторая беда это то что ардуина уно мешает основному процессору магнитолы своими командами (видимо потому что выступает как мастер), в результате чего магнитола перестаёт фунциклировать. Т.е. надо как я понимаю написать такой код для отслеживания нажатий кнопок, который не мешал бы магнитоле работать. т.е. чтобы ардуина выступала не как мастер, а как SPI slave, и в то же время мог бы отслеживать и передавать нажатия рулевых кнопок... Вот сижу и думаю как бы это реализовать.

Да и ещё... Троллей флудерастов и прочую нечисть призываю здесь не появляться! Создавайте свои темы и там флудите сколько хотите.

asam
asam аватар
Offline
Зарегистрирован: 12.12.2018

Так а что вы в итоге хотите получить? Что бы ардуно просто выступала сниффером на I2C меду кнопками и магнитоллой и делала что-то свое при определенной их комбинации? Или что-то другое?

Nikey
Offline
Зарегистрирован: 03.11.2017

дружище, I2C тут непричём! )))

Короче, смотри... Я нажимаю кнопку на руле... Сигнал с кнопки по VAN шине летит в магнитолу. Там в магнитоле он преобразуется в SPI данные. Их мне нужно отловить ардуиной леонардой и... там уж я наверное сам отошлю это нажатие либо на планшет либо на ноут. Так понятнее?

Там на гитхабе (ссылку я давал выше) есть схема. Она в точности совпадает с магнитольной за исключением цифрового потенциометра. Мне он никчему.

Я нарыл в тырьнете нехитрый скетч SPI слейв для уно... Но там столько данных летит в порт шо пипец. Надо как-то на основе исходника понять - какие данные фильтрует автор (я имею ввиду данные отвечающие за нажатия кнопок). Я вроде как понимаю, но не до конца ))) Вот бы кто подсобил бы

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Nikey пишет:
мою тему по настройке музыкального процессора SAA7708H http://arduino.ru/forum/programmirovanie/nastroika-saa7708h скоропостижно прикрыли.

Перечитал тему. Хамло обыкновенное, которому все должны. Судя по изначальному заходу в это теме - ничего не изменилось.

Nikey
Offline
Зарегистрирован: 03.11.2017

Ха ха ха!!! 

Погуглив и поизучав даташники на 328P и 32U4 сразу стало понятно что порты UNO и Leonardo не совпадают. Но это была бы не беда, если б некоторые порты, наоборот не накладывались друг на друга! В результате таких вот накладок получается полная билиберда! Например, на сигнал SCL накладывается сигнал SS итд...  Переназначив пару портов (переписав пару строк кода) удалось решить проблему. Леонардо зафунциклировала. Код приводить неохота, всёравно я так понимаю он никому неинтересен... Теперича осталось написать SPI Slave...

Хм... Попробуем :-)

Ворота
Ворота аватар
Offline
Зарегистрирован: 10.01.2016

Всего-то чуть больше года прошло. Так ещё через пару лет, может и научишься светодиод подключать.