Problem z ks108

Tutaj mozesz poruszać tematy ogólne powiązane z elektroniką, np. dyskusje na temat podzespołów, układów, zasad ich działania. Czyli można pisać o wszystkim czego nie da się przyporządkować do innych działów.
ODPOWIEDZ
kamilp1908
-
Posty: 3
Rejestracja: 26 kwie 2012, 8:41
Lokalizacja: Warszaawa/Płock

Problem z ks108

Post autor: kamilp1908 » 25 lip 2012, 21:51

Witam.
Mam dziwny problem z wyświetlaczem opartym na tym układzie.
Oto efekt mojej pracy:
Obrazek
Problemem są te "losowo" wstawione wykrzykniki i zapalone/wyłączone poszczególne piksele.
Teraz najdziwniejsza rzecz. Na początku lcd był podłączony do portu C (sygnały kontrolne) oraz do portu A (sygnały danych) i wówczas wszystko było OK. Ale potrzebowałem portu A jako wejście analogowe, więc port D stal się portem danych. No i pojawił się ten problem.
Może ktoś miał taki problem? Może zna rozwiązanie?

Procek to atmega16, bibliotek ks108 by radzio.dxp.pl. Używam płytki prototypowej, więc lcd jest podłączony konektorami do procka. Docelowo projektuje inną płytkę z atmegą128 i wolałbym, żeby tam nie było takiego problemu.
Ostatnio zmieniony 26 lip 2012, 6:24 przez kamilp1908, łącznie zmieniany 1 raz.

Awatar użytkownika
Ertew
Użytkownik
Posty: 1414
Rejestracja: 03 lip 2005, 10:36
Lokalizacja: Leszno
Kontakt:

Post autor: Ertew » 26 lip 2012, 18:20

Standardowo:
Daj nam kod programu i zarys schematu. Bez tego nawet szklana kula na niewiele się zda.

Następnie:
- Podłącz LCD pod port A i zmień w programie że z tego portu korzystasz. W ten sposób wyeliminujesz ewentualne uszkodzenie LCD.
- Jeszcze raz podłącz magistralę LCD do portu D, tylko tym razem uważnie zmieniaj definicje portów. Być może podczas zmieniania port A -> port D pominąłeś jeden wpis.
- Sprawdź czy nie zostawiłeś jakiś części programu przypiętych do portu D, które wysyłają coś na ten port podczas pracy procesora.
- Sprawdź poprawność połączeń. Jeden źle dociśnięty przewód (odpowiednik zimnego lutu) lub z pękniętą miedzią wewnątrz i nie ma komunikacji.
- Sprawdź konfigurację portów jako wejścia/wyjścia.

kamilp1908
-
Posty: 3
Rejestracja: 26 kwie 2012, 8:41
Lokalizacja: Warszaawa/Płock

Post autor: kamilp1908 » 26 lip 2012, 20:41

Ustaliłem, że problem jest z timer0.
Mam u siebie zaimplementowaną funkcję waitms() w oparciu o przerwanie z przepełnieniem.
Gdy jest wyłączone wszystko działa poprawnie, ale w momencie, gdy wywołuję następującą funkcję:

Kod: Zaznacz cały

void InitTimer()
{
	TIMSK = (1<<TOIE0);
	sei();
	TCNT0 = 0xF6;//246
	TCCR0 |= (1<<CS01);
}
zaczynają pojawiać się krzaki, chyba wina leży po stronie przerywań.

ODPOWIEDZ