эмулятор для I2C помогите со скетчем
- Войдите на сайт для отправки комментариев
Пт, 01/09/2017 - 01:11
Добрый день.
Хочу сделать эмулятор кассетоприемника для магнитолы, в нем стоит philips 83c751 с I2C. Вместо него будет стоять Leonardo. С этим протоколом и программированием очень туго, помогите пожалуйста написать скетч
при играющей кассете идут след. данные (DEC):
R/W Addres DATA ASK
W 18 19 Y
R 18 4 32 4 3 39 N
при отключенном кассетоприемнике только запрос (как я понял):
R/W Addres DATA ASK
W 18 19 Y
пробовал вот такой скетч, но ардуино молчит в ответ на запрос.
#include <Wire.h> void setup() { Wire.begin(24); // подсоединение к шине I2C с адресом #18 Wire.onRequest(requestEvent); // регистрация события } void loop() { delay(10); } // функция, которая выполняется всякий раз, когда данные запрашивает устройство //в режиме «Master» // эта функция зарегистрирована как событие, см. setup() void requestEvent() { byte buffer[6]; buffer[0] = 4; buffer[1] = 32; buffer[2] = 4; buffer[3] = 5; buffer[4] = 41; Wire.write(buffer, 6); Wire.endTransmission (); // ответ с сообщением в 6 байт // как ожидает устройство в режиме «Master» }
Заранее благодарен
Есле ты хочешь музыку слушать,то не проще припаять к FM выходам AUX?
Проще конечно. Но выкинуть кассетник, все равно нужно.
А музыка и так играет☺
4 32 4 3 39 (наверное шестнадцариричное) в протоколе и
4 32 4 5 41 (точно десятиричное) у Вас в прошивке - так и надо ?
извиняюсь, должно быть 39 (в прошивке ошибка). на осциллографе в формате декодирования выставлен режим DEC. в режиме HEX выглядит вот так ( R 18 04 20 04 03 27 N)
А 5 в прошивке вместо 3 в протоколе?
3 вместо 5, не могу изменить первое сообщение
вместо магнитолы подключил UNO, с ним ответ есть
запрограммирован как мастер
наконец сделал скринштот сообщений на шине, когда вставляю кассету :
Cho1s, с таким мутным сигналом нет гарантии что считалось правильно. Вот так должно быть.
Cпасибо! сегодня поиграюсь с настройками
Dimax, вроде все правильно было считано (максимально приближенно к вашему изображению http://prntscr.com/gitlfx и http://prntscr.com/gitpbz )
не могу понять почему Leonardo не отвечает, толи не видит запрос, толи не может отправить сообщение..
нашел PDF на кассетоприемник там есть контакт CRQ (что за он, google мне не подскал) вот осцоллограмма с ним (3-й розовый канал) 1 2 3
но как это реализоваьт ? как его подключить к ардуино ?
получилось принять "запрос" и в зависимости от значения ответить. Но нужно еще раз отправить сообщение мастеру а как "дернуть" пин СRQ еще раз не знаю, да и время когда он от минуса опять в плюс переходит не то что нужно. Так нужно, а так Не нужно на картинках видно, что поднимается в 5вольт на середине сообщения. delay не подходит чтобы управлять CRQ, так как вешает отправку между addres и data. millis не работает (не умею им пользоваться).
Подскажите как быть? куда копать?
собственно скетч