Dzień dobry wszystkim. Borykam się z problemem przesyłania wartości pomiędzy mikrokonrolerami równolegle ( jeśli tak to mogę nazwać). Ogólnie: komunikują się ze sobą atmega 16 oraz atmega 2560 ( w arduino ). Atmega 16 odczytuje wartości z portu A przy każdym przerwaniu INT0 , które generuje atmega 2560. Oba mikrokontrolery taktowane są 16 Mhz. Jako, że potrzebuję aby atmega 16 pobrała 5 liczb to przy każdym przerwaniu wartość z portu A zapisywana jest do globalnie zdefiniowanej tablicy, a poźniej z niej odczytywana, przez funkcję. Założeniem projektu który robię jest wyświetlacz matrycowy posiadający własny mikrokontroler(atmega 16), komunikujący się ze światem zewnętrznym przez odczyt wartości z portu A przy przerwaniu INT0. Wyświetlacz pokazuje 5 znaków alfanumercznych. Problem jest taki, że znaki za każdym ładowaniem przesuwają się o jedną pozycję. W sensie ładuję ABCDE a otrzymuję EABCD, jeśli załaduję jeszcze raz to samo otrzymam DEABC i tak w kółko.
Robiłem testy, i jesli nadam znaki na stałe to wyświetlają się dobrze. Dodam jeszcze, że porty obu mikrokontrolerów połączone są bezpośrednio, odpowiadającymi sobie pinami.
Oto mój kod dla odbiornika:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Oraz kod dla nadajnika:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
Z góry dziękuję za pomoc oraz cenne uwagi, proszę o wyrozumiałoś z racji mojego małego doświadczenia z mikrokontrolerami.
on i off to makra, funkcje w odbiorniku działają w z nadanie statycznym, więc nie wklejałem ich kodu.