Błąd w programie

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
Awatar użytkownika
kayron
Użytkownik
Posty: 2088
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 20 paź 2011, 19:26

Tylko po co 2 ? skoro wystarczy jeden. To marnowanie pamięci. Cały problem ogólnie jest banalny, wystarczy prosty bufor o ilości równej ilości wyświetlanych znaków lub tekstu który chcemy zapamiętać. teraz wystarczy wykorzystać trik z kodowaniem ASCII, tak naprawdę w praktyce wykorzystuje się tylko pierwsze 128 znaków, Co z tego ? Ano to że najstarszy bit każdej odbieranej danej można wykorzystać dowolnie, np. jako znacznik dane/instrukcje.
jak to wykorzystać np tak:
b 76543210
10000001 - czyść ekran
1000001x - adres bufora na 0
11nnnnnn - ustaw adres bufora na nnnnnn (czyli max ilość znaków to 64)
00001011 - znak ASCII wpisywany do bufora. (nie chciało mi szukać jaki :mrgreen: )
Ogólnie można zerżnąć cały standard z zwykłego sterownika LCD na HD.

rezasurmar
Użytkownik
Posty: 626
Rejestracja: 19 kwie 2009, 15:59
Lokalizacja: Tychy
Kontakt:

Post autor: rezasurmar » 20 paź 2011, 19:38

kayron, wiesz, gdzie ten standard jest opisany w wersji dla opornych?, może analizując to, szybciej bym zaskoczył jak zrobić to co chcę zrobić :).

atelszewski
Użytkownik
Posty: 143
Rejestracja: 12 sie 2005, 9:36
Lokalizacja: Banie

Post autor: atelszewski » 20 paź 2011, 19:38

Witam,
Tylko po co 2 ?
Jeden dla UART, drugi dla wyświetlacza;) Chodzi mi o to, żeby nie czytać z UART znak po znaku, tylko odebrać cały tekst i wtedy go przetworzyć. Znowu, takie podejście, niewielkim kosztem nada odrobinę uniwersalności. Nie podważam faktu, że da się to zrobić na jednym buforze.

Awatar użytkownika
kayron
Użytkownik
Posty: 2088
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 20 paź 2011, 20:03

Jeden dla UART, drugi dla wyświetlacza;) Chodzi mi o to, żeby nie czytać z UART znak po znaku, tylko odebrać cały tekst i wtedy go przetworzyć.
Nadal twierdzę że obie te rzeczy da się robić jednym buforem, po to są przerwania w CPU.
Natomiast to o czym ty piszesz to tgz. stronicowanie pamięci ekranu, czyli wydzielenie co najmniej 2x większej pamięci obrazu niż ekran, i wyświetlanie jej naprzemiennie, po to żeby na tej niewidocznej połowie można było dokonywać zmian bez obawy że na wyświetlaczu pokażą się jakieś przypadkowe znaki. Ale nie ma to zasadniczo nic wspólnego z USART, bo da się to pogodzić. Przynajmniej w tak prostej aplikacji, stosując prosta sztuczkę.
Jeżeli ekran ma np 8 znaków to definiujemy bufor o 16 znakach, i teraz tak, kiedy wyświetlamy znaki od adresu od 1 do 8, dane odbierane z USART wpisujemy do części niewidocznej czyli od 9 do 16. Jak zapełnimy ten obszar to albo automatycznie zamieniamy wyświetlane fragmenty miejscami, znaczy się wyświetlamy znaki od 9 do 16, a piszemy do 1do8, albo ustawiamy odpowiednia flaga i decyduje od tym program główny..
kayron, wiesz, gdzie ten standard jest opisany w wersji dla opornych?, może analizując to, szybciej bym zaskoczył jak zrobić to co chcę zrobić :) .
No wiem. Nota katalogowa każdego alfanumerycznego wyświetlacza LCD, wystarczy napisać emulator sterownika HD6coś tam który w nich siedzi.
A tak na marginesie w 1996-98 w EP był opisany taki projekt, chyba go nawet mam gdzieś w szpargałach, tylko jako procesor użyty był PIC16F coś tam. Poszukam, to jutro napiszę ci dokładnie. Ale była tam tabelka z łopatologicznie opisanymi instrukcjami do tego wyświetlacza.

atelszewski
Użytkownik
Posty: 143
Rejestracja: 12 sie 2005, 9:36
Lokalizacja: Banie

Post autor: atelszewski » 20 paź 2011, 20:16

Witam,
Natomiast to o czym ty piszesz to tgz. stronicowanie pamięci ekranu
NIE!:) Chodzi mi o bufor przeznaczony dla UART, tj. taki, który jest zapełniany przez znaki przychodzące z UART i ten bufor nie ma nic wspólnego z buforem wyświetlacza. Myślę, że teraz się zrozumiemy?

rezasurmar
Użytkownik
Posty: 626
Rejestracja: 19 kwie 2009, 15:59
Lokalizacja: Tychy
Kontakt:

Post autor: rezasurmar » 20 paź 2011, 20:21

Masz na myśli modułowe wyświetlacze LED? EP10-11/1996 ??

Awatar użytkownika
kayron
Użytkownik
Posty: 2088
Rejestracja: 21 wrz 2008, 12:53
Lokalizacja: Poland
Kontakt:

Post autor: kayron » 21 paź 2011, 7:43

Tam była część druga, w 10/96 była część pierwszy i tabelka z rozkazami.
Przy czym oni używali tylko 6 bitów do kodowania instrukcji, było ich w sumie 7.

ODPOWIEDZ