Witam!
Mam w slave taką oto funkcję odczytu z mastera:
i przerwanie, przy którym to ma być robione:
Urządzenie wysyłające dane działa cały czas, ale powyższy kod wykonuje się tylko raz przy resecie ATmegi i przy tym wykonaniu bufor do, którego powinny lecieć dane jest na koniec PUSTY. Może jakieś pomysły/sugestie jak tą ATmegę uruchomić trybie slave receiver? Wydaje mi się, że próbowałem już wszystkiego i nadal nie działa. Dodam, że komunikacja w drugą stronę działa (slave->master) więc wykluczam problemy ze sprzętem.
z góry dzięki
pozdrawiam
herszt
Mam w slave taką oto funkcję odczytu z mastera:
void TWI_read (uint8_t ilosc)
{
pbufor = &bufor[0];
for(; (ilosc-1) != 0; ilosc--)
{
TWCR = (1<<TWEN) | (1<<TWEA) | (1<<TWINT);
while(!(TWCR & (1<<TWINT)));
if(TW_STATUS != TW_SR_DATA_ACK) // transmisja ok?
{
writeTextUSART("blad odczytu\n\r");
}
*pbufor++ = TWDR;
US_TRA(TWDR); //wypisanie zawartości TWDR na konsole przez RSa
writeTextUSART("odbieram\n\r");
}
//ostatni bajt i NACK
TWCR = (1<<TWINT) | (1<<TWEN);
while(!(TWCR & (1<<TWINT)));
if(TW_STATUS != TW_SR_DATA_NACK) // transmisja ok?
{
writeTextUSART("blad odczytu\n\r");
}
writeTextUSART("odbieram ostatni\n\r");
*pbufor++ = TWDR;
}
i przerwanie, przy którym to ma być robione:
ISR (TWI_vect)
{
TWI_write(6);
}
Urządzenie wysyłające dane działa cały czas, ale powyższy kod wykonuje się tylko raz przy resecie ATmegi i przy tym wykonaniu bufor do, którego powinny lecieć dane jest na koniec PUSTY. Może jakieś pomysły/sugestie jak tą ATmegę uruchomić trybie slave receiver? Wydaje mi się, że próbowałem już wszystkiego i nadal nie działa. Dodam, że komunikacja w drugą stronę działa (slave->master) więc wykluczam problemy ze sprzętem.
z góry dzięki
pozdrawiam
herszt