Короче, думал-думал...Решил обойти все это еще одним способом.
1. Разрешаю прием Slave.
2. Slave получил, обработал, ответил.
3. Slave опять получил, обработал, ответил
...
Так раза 3-4...
6. Запрещаю прием Slave и разрешаю посылку Master.
7. Master послал, принял, обработал.
И опять в начало "Разрешаю прием Slave"
В принципе, такое тоже должно меня устроить, но после того, как запретил прием Slave
CODE
UCSR1B&=~(1<<4); UCSR1B&=~(1<<7)
не могу заново разрешить его разрешить...
Делаю так
CODE
UCSR1B|=(1<<4); UCSR1B|=(1<<7)
Может нога RX повисла в левом состоянии.. Но я включал подтяжку для нее в начале программы (вместе для мастера и слейва)
CODE
void Setup(void)
{
PORTB=0x04;
DDRB=0x00;
PORTD=0x01;
DDRD=0x00;
}
И еще...Может ли камень уходить в рестарт?? Иногда модбас монитором замечаю, что идет цикл программы, а потом Мастер начинает посылку с 1й...По ходу выполнения программы такое не возможно, т.е. имхо или сброс, или хз что...