Witam.
Mam niesamowita zagadke. Próbuje uruchomić TWI na mikrokontrolerze ATMEGA64-16PU. Problem jest nastepujacy iż TWI nie działa...
Co ciekawe rejestr TWCR pokazuje cały czas wartość 10100100 czyli TWINT, TWSTA oraz TWEN mimo że wogóle nie inicjuje jego wartosci. Próbowalem w Atmedze 8 i kod działa bezproblemowo. Odczytujac w niej TWCR bez inicjacji wartości uzyskuje same zera. Procka mam już 2 sztuke gdyż myślałem ze poprzednia była wadliwa a tu takie same objawy. Czy ktoś spotkał się może z takim przypadkiem? Chyba że jest coś skopane i rejestr TWCR nie znajduje się pod adresem 0x74? Już cały dzien z tym walcze i nie moge dojść co jest grane...
Dziekuje z góry za pomoc.
TWCR powinien wskazywac 0b00000000 a jak sie teraz okazalo wskazuje różnie zalezy jak padnie ale nigdy same zera. Po inicjalizacji TWI tak jak w datasheecie transmisja nie dziala. Na ATMEGA8 działa.
Zauwazyłem tez pewna rzecz.
Wszystkie rejestry które w dokumentacji sa oznaczone np "0x12 (0x32)" odczytuja sie dobrze a te ponad oznaczone od "(0x61)" w góre, które sa odczytywanie poleceniem "_SFR_MEM8(adres)" odczytuja glupoty. PORTF pokazuje jakies przypadkowe bity itp. Odczytanie rejestru poleceniem "_SFR_IO8(adres-0x20)" daje taki sam rezultat czyli to chyba nie problem z procedura. Odczytanie w asemblerze tez daje to samo.
To nie moze być przypadek bo mega 8, 16, 32 Nie posiada rejestru z pojedynczym oznaczeniem i one odczytuja i dzialaja ok.
Pracuje w AVRStudio 4 i 5.
Na symulacji w Avrstudio jest ok. W Avr Simulator IDE tez jest ok. Na innych prockach niz atmega64 jest ok.
Ja juz nie wiem
Oto kod
[/code]
Disassemblacja kodu tez wyglada ok
Mam niesamowita zagadke. Próbuje uruchomić TWI na mikrokontrolerze ATMEGA64-16PU. Problem jest nastepujacy iż TWI nie działa...
Dziekuje z góry za pomoc.
TWCR powinien wskazywac 0b00000000 a jak sie teraz okazalo wskazuje różnie zalezy jak padnie ale nigdy same zera. Po inicjalizacji TWI tak jak w datasheecie transmisja nie dziala. Na ATMEGA8 działa.
Zauwazyłem tez pewna rzecz.
Wszystkie rejestry które w dokumentacji sa oznaczone np "0x12 (0x32)" odczytuja sie dobrze a te ponad oznaczone od "(0x61)" w góre, które sa odczytywanie poleceniem "_SFR_MEM8(adres)" odczytuja glupoty. PORTF pokazuje jakies przypadkowe bity itp. Odczytanie rejestru poleceniem "_SFR_IO8(adres-0x20)" daje taki sam rezultat czyli to chyba nie problem z procedura. Odczytanie w asemblerze tez daje to samo.
To nie moze być przypadek bo mega 8, 16, 32 Nie posiada rejestru z pojedynczym oznaczeniem i one odczytuja i dzialaja ok.
Pracuje w AVRStudio 4 i 5.
Na symulacji w Avrstudio jest ok. W Avr Simulator IDE tez jest ok. Na innych prockach niz atmega64 jest ok.
Ja juz nie wiem
Oto kod
Kod: C / C++
Disassemblacja kodu tez wyglada ok
Kod: text