проблема такая-на микропроцессоре не хватает свободных ножек, поэтому был сделан расширитель портов на атмега.
ну..чтобы чипселекты выставлять, проверять наличие всяких готовностей и прочего.
прикинул, что плодить навороченный протокол для SPI slave - это достаточно напряжная вешь.
очень навороченным его не сделать-нужно будет тогда снижать скорость обмена по SPI-d даташыте написано что SCLK не можето быть более половины тактовой частоты.
У меня тактовая частота атмеги 8 мегагерц, но и 4 мегагерца - это предел.
я начал писать на C для этого камня (на асме нельзя)
вот что получилось-хочу обращаться к этому камню со стороны основного процессора
так же как к обычному уись..
стройству.
я распределил какие типы команд я могу посылать DDRx PORTx и PINx соответственно протокол такой придумал-
первый байт это команда и к какому порту обращаюсь (PA PB PC итд) второй байт что туда нудно выставить.
то есть еслли m,s команда в атмеге выглядела бы так PORTA = 0x24
я бы паередавал эти два байта-код операции и запись...
то есть понятно что я имел ввиду
в устройстве slave на атмеге сделал прерывание "по окончанию записи байта мастером" - оно вроде так называется и в этом прерывании читаю то что там пришло в SPDR - так вроде SPI регистр называется.
но мне вот что непонятно-для SPI и чтение и запись это одно и тоже.
то есть если я в прерывании прочитал принятый байт - то я как бы уже автоматом должет передать в мастер dummy байт.
или я не прав?
как вот мне реализовать команду a = PINx
то есть чтение порта?
принял я команду и хочу в слеве передать ответ-как мне это правильно сделать?
прошу прощения, я не задавал бы вопрос, если бы у меня было настоящее устройство-я бы просто посидел с дебагером и разобрался-но у меня устройства пока нет, но код предварительный накидать надо.
спасибо!