Witam, potrzebuję do piwnego urządzenia opartego o mikrokontroler atmega128A dołożyć możliwość odbioru danych na niewielką odległość ( przesyłanych drogą radiową ). Zakupiłem w tym celu komplet RFM01/RFM02. Zagłębiam się teraz w ich specyfikacje techniczne i mam problem z ustaleniem pewnej rzeczy. We wszystkich odnalezionych prze zemnie przykładach odbiór z użyciem bufora FIFO polega na poniższym algorytmie
1. czekaj na ustawienie lini IRQ
2. odbierz dane z FIFO
3. wyzeruj IRQ
Niby wszystko fajnie i prosto ale moja atmega wykonuje masę innych rzeczy i nie może sobie zwyczajnie w pętli czekać na linię IRQ. Powoduje to powstanie w mojej głowie kilku pytań na które nie mogę znaleźć rozwiązania.
1.
Załóżmy że FIFO odebrało dane i ustawiło linię IRQ. Mikrokontroler jest jednak zajęty i nie zwraca sobie na to uwagi, robi co ma robić i dopiero kiedy znajduje chwilę wolnego czasu sprawdza tą linie i odczytuje FIFO. Niby wszystko fajnie i ładnie ale kiedy mikrokontroler nie mógł odczytać FIFO nadajnik cały czas nadawał. Czy dopóki FIFO się nie zwolni z danych nowe będą ignorowane? Czy FIFO cały czas się po prostu będzie nadpisywać i muszą być odczytane od razu kiedy linia IRQ przejdzie w stan wysoki?
2. Można by linią IRQ wywoływać przerwania w mikrokontrolerze i wtedy szybciutko sczytywać zawartość FIFO i wracać do programu.
Może istnieje jeszcze jakaś inna możliwość aby rozwikłać ten problem. Główny ból to to że mikrokontroler w moim przypadku NIE może czekać na zgłoszenie odbioru bajtu przez ustawienie się IRQ.
Ile bajtów pomieści FIFO?
1. czekaj na ustawienie lini IRQ
2. odbierz dane z FIFO
3. wyzeruj IRQ
Niby wszystko fajnie i prosto ale moja atmega wykonuje masę innych rzeczy i nie może sobie zwyczajnie w pętli czekać na linię IRQ. Powoduje to powstanie w mojej głowie kilku pytań na które nie mogę znaleźć rozwiązania.
1.
Załóżmy że FIFO odebrało dane i ustawiło linię IRQ. Mikrokontroler jest jednak zajęty i nie zwraca sobie na to uwagi, robi co ma robić i dopiero kiedy znajduje chwilę wolnego czasu sprawdza tą linie i odczytuje FIFO. Niby wszystko fajnie i ładnie ale kiedy mikrokontroler nie mógł odczytać FIFO nadajnik cały czas nadawał. Czy dopóki FIFO się nie zwolni z danych nowe będą ignorowane? Czy FIFO cały czas się po prostu będzie nadpisywać i muszą być odczytane od razu kiedy linia IRQ przejdzie w stan wysoki?
2. Można by linią IRQ wywoływać przerwania w mikrokontrolerze i wtedy szybciutko sczytywać zawartość FIFO i wracać do programu.
Może istnieje jeszcze jakaś inna możliwość aby rozwikłać ten problem. Główny ból to to że mikrokontroler w moim przypadku NIE może czekać na zgłoszenie odbioru bajtu przez ustawienie się IRQ.
Ile bajtów pomieści FIFO?