kampo Napisano Grudzień 15, 2014 Udostępnij Napisano Grudzień 15, 2014 Witam. Od jakiegoś czasu próbuję nawiązać komunikację pomiędzy AtMega8 (slave) i AtMega128 (master) poprzez I2C, ale nie mogę tego uruchomić SDA i SCL mam połączone, do tego na każdej linii jest rezystor 4k7 podłączony do Vcc (5V), obydwa mikrokontrolery są taktowane na 8MHz. Wynalazłem jakieś takie biblioteki do mastera i slave'a. Problem polega na tym, że po wysłaniu bitu start i adresu urządzenia slave, nie dostaję od niego bitu ACK, do tego przerwanie TWI w slave się nie uruchamia, więc slave żadnych danych raczej nie wyśle. Master: I2C_init(); while(1) { I2C(); _delay_ms(500); } Slave: I2C_init(0x10); sei(); while(1) { } Nie wiem, jakie informacje się jeszcze przydadzą. Proszę o pomoc Pozdrawiam.
Demooon Grudzień 15, 2014 Udostępnij Grudzień 15, 2014 Dlatego że twoja wynaleziona biblioteka nie wspiera Atmegi128. Musisz ją przerobić. 3. Supported devices Though I have only tested this library on an ATmega328P it should be running on all major ATmega AVRs like: ATmega644 ATmega32 ATmega16 ATmega328/P ATmega168/P ATmega88/P ATmega44/P ATmega8 If your device is not supported you can probably adapt this library easily to your needs by having a look at the your device's datasheet and changing the register names appropriately The ATtiny range of microcontrolles is not supported as they only provide a USI peripheral which is completely different from the TWI peripheral used on the other controllers
kampo Grudzień 16, 2014 Autor tematu Udostępnij Grudzień 16, 2014 Widziałem to, sprawdzałem datasheet od AtMegi128, w którym są przykłady kodu i nie znalazłem nic podejrzanego - nazwy rejestrów się zgadzają i ogólnie obsługa TWI.
Pomocna odpowiedź
Bądź aktywny - zaloguj się lub utwórz konto!
Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony
Utwórz konto w ~20 sekund!
Zarejestruj nowe konto, to proste!
Zarejestruj się »Zaloguj się
Posiadasz własne konto? Użyj go!
Zaloguj się »