Cześć, mam takie zadanie, w sumie nie tyle chciałbym żeby ktoś mi je rozwiązał co poprowadził. Korzystam z AT90USB1287 ale nie ma to dla mnie większego znaczenia później przełożyć taki program jeśli propozycje będą na inne
Jestem totalnym amatorem na poziomie migiania diodek, więc proszę o wyrozumiałość.
------------------------------------------------------------------------------
Zadanie:
W programie co określony czas zwiększany jest licznik programowy, a jego wartość jest konwertowana na kod BCD w celu wyświetlenia.
Jednocześnie odbierana jest transmisja danych z USART - dane pojawiają się w różnych odstępach czasu.
W tablicy czasy_transmisji notowany jest stan licznika programowego w chwili transmisji. Załóżmy, że:
- konwertuj_na_BCD_i_wyswietl jest zdefiniowane i czasochłonne
- inicjalizuj_USART oraz obsluga_przerwan_USART_i_zapis_do_tablicy są zdefiniowane.
Zadaniem jest jest więc stosunkowo proste(ehe, chyba nie dla mnie): napisz obsługę licznika programowego (w tym wywołanie konwersji na BCD) z wykorzystaniem systemu przerwań timera, tak aby
zminimalizować ryzyko utracenia danych z USART i przekłamań w tablicy czasy_transmisji.
------------------------------------------------------------------------------
Czyli rozumiem to tak, chodzi sobie timer, cały czas jest konwertowany na BCD(pojedyncze cyfry) i wyświetlany. USART będzie wykorzystywany tylko jako odbiornik. Czyli jest uruchomiony licznik i odbiornik, przychodzi sygnał do odbiornika, uruchamiane jest przerwanie, licznik wrzuca swój krok do tablicy i wraca do dalszego liczenia? O to chodzi?
Program:
od tego zaczynam, (szkoda że większość pomocy jest napisana w C), chętnych do pomocy zapraszam do tematu, natomiast tych którzy chcieliby pomóc bardziej
można walić na pw.
Jestem totalnym amatorem na poziomie migiania diodek, więc proszę o wyrozumiałość.
------------------------------------------------------------------------------
Zadanie:
W programie co określony czas zwiększany jest licznik programowy, a jego wartość jest konwertowana na kod BCD w celu wyświetlenia.
Jednocześnie odbierana jest transmisja danych z USART - dane pojawiają się w różnych odstępach czasu.
W tablicy czasy_transmisji notowany jest stan licznika programowego w chwili transmisji. Załóżmy, że:
- konwertuj_na_BCD_i_wyswietl jest zdefiniowane i czasochłonne
- inicjalizuj_USART oraz obsluga_przerwan_USART_i_zapis_do_tablicy są zdefiniowane.
Zadaniem jest jest więc stosunkowo proste(ehe, chyba nie dla mnie): napisz obsługę licznika programowego (w tym wywołanie konwersji na BCD) z wykorzystaniem systemu przerwań timera, tak aby
zminimalizować ryzyko utracenia danych z USART i przekłamań w tablicy czasy_transmisji.
------------------------------------------------------------------------------
Czyli rozumiem to tak, chodzi sobie timer, cały czas jest konwertowany na BCD(pojedyncze cyfry) i wyświetlany. USART będzie wykorzystywany tylko jako odbiornik. Czyli jest uruchomiony licznik i odbiornik, przychodzi sygnał do odbiornika, uruchamiane jest przerwanie, licznik wrzuca swój krok do tablicy i wraca do dalszego liczenia? O to chodzi?
Program:
Cytat:.include "m32def.inc"
.cseg
.org 0 jmp restart;
.org 0x002A rjmp timer;
.org 0x0032 rjmp usart;
start: // ustawienie stosu
cli //wyłączenie przerwań
ldi R16, HIGH(RAMEND)
out SPH, R16
ldi R16, LOW(RAMEND)
out SPL, R16
sei //właczenie przerwan
od tego zaczynam, (szkoda że większość pomocy jest napisana w C), chętnych do pomocy zapraszam do tematu, natomiast tych którzy chcieliby pomóc bardziej
można walić na pw.