Planuję złożyć bramkę, która będzie pośredniczyła w komunikacji pomiędzy lokalną siecią komputerową i kilkoma magistralami (na pewno CAN i radiową, być może dodam jeszcze RS485).
Urządzenie będzie więc posiadało następujące interfejsy komunikacyjne:
1) Ethernet w oparciu o ENC28J60. 2) CAN w oparciu o MCP2115 i ISO1050DUB. 3) Radiowy w oparciu o RFM69HW. 4) Być może jakiś izolowany transceiver RS485.Trzy pierwsze układy pracują na magistrali SPI i wymagają taktowania, przy czym moduł radiowy posiada własny kwarc, więc można go pominąć w dalszych rozważaniach. Łącznie z MCU mamy trzy układy, które wymagają sygnału taktującego. W przypadku ENC28J60 i MCP2515 jest to 25MHz, ATmega będzie potrzebowała maksymalnie 16MHz. W sytuacji, gdy MCU miał współpracować z ENCJ, zwykle "karmiłem" go
12,5MHz z CLKOUT tego układu.Tutaj jednak sytuacja jest bardziej skomplikowana i zastanawiam się jak ją rozwiązać. Jest kilka opcji:
1) Najprostsze: ENC28J60 i MCP2515 mają własne kwarce, jeden z tych układów taktuje również ATMegę sygnałem 12,5MHz z CLKOUT. 2) Tylko jeden z układów ma swój kwarc, udostępniając drugiemu 25MHz na CLKOUT. Ten z kolei taktuje ATmegę sygnałem podzielonym przez dwa. Zastanawiam się tylko jak zachowają się układy zaraz po włączeniu zasilania, do domyślnych preskalerach, zanim odpowiednie wartości zostaną ustawione. Sygnał będzie dzielony dwukrotnie, bardziej niż potrzeba. Ktoś może wie dlaczego nota MCP2115 (str. 53) zawiera schemat, na którym układ jest taktowany z zewnętrznego źródła przez bufor odwracający? W nocie ENC28J60 nie ma niczego takiego. ATmegę też zawsze taktowałem bezpośrednio (oczywiście biorąc pod uwagę zasilanie tym samym napięciem).Kolejna sprawa to magistrala. Co powinienem raczej zrobić? a) Podłączyć wszystkie urządzenia do jednej, sprzętowej magistrali? b) Sprzętowe SPI przeznaczyć tylko dla ENC28J60, a potem skorzystać z wolnych pinów i pozostałym układom zorganizować programowe SPI?