Próbuję porozumieć się z układem ATM90E32, na płytce są dwa takie układy na jednej magistrali SPI + procesor ATXMEGA128A3U.
Każdy z układów ma osobną linię !CS, tak wygląda ich połączenie:
Próbowłem używać USART w trybie SPI ale nic nie dawało użycie " PORTC_REMAP=PORT_SPI_bm;" (aby zamienić SCK z MOSI) wiec wróciłem do pracy z klasycznym SPI, poniżej inicjalizacjia SPI, transmisja bajtu danych oraz zapis/ odczyt do ATM90E32, oczywiście pinami PM1 i PM0 ustawiłem normalny tryb pracy (oba w stanie wysokim):
Linia MISO cały czas milczy (stan wysoki niezależnie czy robię zapis czy odczyt układu).
PS. czy ma znaczenie podłączenie wejścia/ wyjścia kwarcu? Pierwszy raz użyłem małego kwarcu, który ma wyraźnie oznaczony pin wejścia/ wyjścia. Być może źle zrobiłem jego bibliotekę. Jak kiedyś sprawdzałem na oscyloskopie nogi kwarcu przy procesorze to jednak było widać przebiegi (wystarczyło wybrać autoset i słaby sygnał się pojawiał)a w tym przypadku panuje tam stałe napięcie ok 1,5V zarówno na OSCI oraz OSCO. Kwarc którego użyłem to ECS-163.84-18-33-JGN-TR3 a tak mam wykonane połączenie:
Układ ATM90E32 ma wbudowane kondensatory dla kwarcu. Czuję, że problem może być właśnie z kwarcem aczkolwiek połączenie wydaje się poprawne. Ścięty pad jest nieużywany i faktycznie na płytce jest połączony z GND (choć projekt PCB ma ścięty pad sygnałowy co jest chyba jedyną/ kosmetyczną pomyłką).
Dodano po 11 [minuty]:
Na płycie mam jeden z pinów NC (pin nr 35) połączony do masy a wg dokumentacji wszystkie NC powinny być wiszące. Idę zrobić przerwę bo siedzę nad tym od kilku długich godzin tracąc zmysły a po powrocie podniosę te dwie nogi.
Dodano po 2 [godziny] 55 [minuty]:
Podniosłem oba piny (po jednym dla każdego z układów), zero zmian. Może mam jednak jakiś problem w kodzie, czekam na pomoc, jednocześnie kombinując dalej.
@ElektrodaBot napisz przykładowy kod w języku C do zapisu oraz odczytu wybranego rejestru układu ATM90E32. Procesor to Xmega128A3u, interface SPIC, pin CS=PORTD5, PM1=PORTD0, PM0=PORTD1.
Każdy z układów ma osobną linię !CS, tak wygląda ich połączenie:
Próbowłem używać USART w trybie SPI ale nic nie dawało użycie " PORTC_REMAP=PORT_SPI_bm;" (aby zamienić SCK z MOSI) wiec wróciłem do pracy z klasycznym SPI, poniżej inicjalizacjia SPI, transmisja bajtu danych oraz zapis/ odczyt do ATM90E32, oczywiście pinami PM1 i PM0 ustawiłem normalny tryb pracy (oba w stanie wysokim):
Kod: C / C++
Linia MISO cały czas milczy (stan wysoki niezależnie czy robię zapis czy odczyt układu).
PS. czy ma znaczenie podłączenie wejścia/ wyjścia kwarcu? Pierwszy raz użyłem małego kwarcu, który ma wyraźnie oznaczony pin wejścia/ wyjścia. Być może źle zrobiłem jego bibliotekę. Jak kiedyś sprawdzałem na oscyloskopie nogi kwarcu przy procesorze to jednak było widać przebiegi (wystarczyło wybrać autoset i słaby sygnał się pojawiał)a w tym przypadku panuje tam stałe napięcie ok 1,5V zarówno na OSCI oraz OSCO. Kwarc którego użyłem to ECS-163.84-18-33-JGN-TR3 a tak mam wykonane połączenie:
Układ ATM90E32 ma wbudowane kondensatory dla kwarcu. Czuję, że problem może być właśnie z kwarcem aczkolwiek połączenie wydaje się poprawne. Ścięty pad jest nieużywany i faktycznie na płytce jest połączony z GND (choć projekt PCB ma ścięty pad sygnałowy co jest chyba jedyną/ kosmetyczną pomyłką).
Dodano po 11 [minuty]:
Na płycie mam jeden z pinów NC (pin nr 35) połączony do masy a wg dokumentacji wszystkie NC powinny być wiszące. Idę zrobić przerwę bo siedzę nad tym od kilku długich godzin tracąc zmysły a po powrocie podniosę te dwie nogi.
Dodano po 2 [godziny] 55 [minuty]:
Podniosłem oba piny (po jednym dla każdego z układów), zero zmian. Może mam jednak jakiś problem w kodzie, czekam na pomoc, jednocześnie kombinując dalej.
@ElektrodaBot napisz przykładowy kod w języku C do zapisu oraz odczytu wybranego rejestru układu ATM90E32. Procesor to Xmega128A3u, interface SPIC, pin CS=PORTD5, PM1=PORTD0, PM0=PORTD1.
