Witajcie.
Nadeszły wakacje, nadeszła i nuda. I to jaka, aż wstyd przyznać mi się, że wziąłem się za obsługę kineskopu cz/b 5,5". No cóż, w wieku 22 lat powinno się obsługiwać dziewczynę a nie kineskop, no ale zdarza się i tak
Generalnie nie za bardzo jest sens przytaczać kod programu czy schemat. Ogólnie synchronizuje się na przerwaniach z impulsem FBT (jako początek linii) i odchylaniem pionowym ( jako początek podróży plamki). Steruję tylko plamką (włącz / wyłącz).
Do sterowania używam atmegi168 z kwarcem 18,432MHz, program piszę w Bascomie. Wszystko działa git, tj. mogę wyświetlić kropkę czy linie poziome czy pionowe. Mój problem polega natomiast na synchronizacji z początkiem wyświetlania, a dokładniej, z instrukcją warunkową, która występuje w przerwaniu - jej użycie wprowadza opóźnienie (co jest oczywiste) i w skutek tego opóźnienia, gdy chcę wyświetlić dwie linie równoległe poziome, zostają one przesunięte względem siebie.....
Wyjaśnię to dokładniej
C = 0 - początek podróży plamki
c=70 - linia numer 70
c=90 - linia numer 90
Te dwa warunki oczywiście nie występują na raz, ale za każdym przerwaniem są sprawdzane... No właśnie, IF c=70 jest sprawdzany wcześniej niż IF c=90 i wprowadza opóźnienie do działania drugiego warunku, wskutek czego linia 90 jest przesunięta względem linii 70.
Właściwie mam jedno pytanie. Czy napisanie kodu, np. w C pozwoli na uniknięcie oczekiwania na warunku IF, czy też wykonanie tego warunku w obu językach jest takie samo i zależy tylko od procesora (ilości cykli)? Dodam, że zmiana kwarcu z 16 MHz na 18,432 MHz nie zmieniła nic, a szybszego procesora nie mam.
Pytam także dla tego, że nie znam języka C czy Assemblera i wiem, że Bascom nie jest optymalny, ale jeśli instrukcja warunkowa w obu językach trwa tyle samo, to nie będę kombinował w tę stronę.
Aha i jeszcze jedno... Użycie instrukcji Select Case polepsza trochę sprawę, ale nadal jest przesunięcie między liniami...
Zmieniać język czy procesor... Jak radzicie? Prawdopodobnie po prostu daruje sobię odchylanie "skanujące" ( telewizorowe) i zrobię własne, wtedy w gre wchodzą nie MHz a kHz (plamką steruję nie dłużej niż 1 mikrosekundę, narysowanie kółka to zbiór kropek, natomiast z własnym odchylaniem wystarczy załączyć plamkę i wyrysować sin i cos odchylaniem
No i przepraszam że się tak rozpisałem w tak błachym temacie. Może pójdę szukać dziewczyny lepiej...?
Pozdrawiam.
Nadeszły wakacje, nadeszła i nuda. I to jaka, aż wstyd przyznać mi się, że wziąłem się za obsługę kineskopu cz/b 5,5". No cóż, w wieku 22 lat powinno się obsługiwać dziewczynę a nie kineskop, no ale zdarza się i tak
Generalnie nie za bardzo jest sens przytaczać kod programu czy schemat. Ogólnie synchronizuje się na przerwaniach z impulsem FBT (jako początek linii) i odchylaniem pionowym ( jako początek podróży plamki). Steruję tylko plamką (włącz / wyłącz).
Do sterowania używam atmegi168 z kwarcem 18,432MHz, program piszę w Bascomie. Wszystko działa git, tj. mogę wyświetlić kropkę czy linie poziome czy pionowe. Mój problem polega natomiast na synchronizacji z początkiem wyświetlania, a dokładniej, z instrukcją warunkową, która występuje w przerwaniu - jej użycie wprowadza opóźnienie (co jest oczywiste) i w skutek tego opóźnienia, gdy chcę wyświetlić dwie linie równoległe poziome, zostają one przesunięte względem siebie.....
Wyjaśnię to dokładniej
C = 0 - początek podróży plamki
c=70 - linia numer 70
c=90 - linia numer 90
Kod: text
Te dwa warunki oczywiście nie występują na raz, ale za każdym przerwaniem są sprawdzane... No właśnie, IF c=70 jest sprawdzany wcześniej niż IF c=90 i wprowadza opóźnienie do działania drugiego warunku, wskutek czego linia 90 jest przesunięta względem linii 70.
Właściwie mam jedno pytanie. Czy napisanie kodu, np. w C pozwoli na uniknięcie oczekiwania na warunku IF, czy też wykonanie tego warunku w obu językach jest takie samo i zależy tylko od procesora (ilości cykli)? Dodam, że zmiana kwarcu z 16 MHz na 18,432 MHz nie zmieniła nic, a szybszego procesora nie mam.
Pytam także dla tego, że nie znam języka C czy Assemblera i wiem, że Bascom nie jest optymalny, ale jeśli instrukcja warunkowa w obu językach trwa tyle samo, to nie będę kombinował w tę stronę.
Aha i jeszcze jedno... Użycie instrukcji Select Case polepsza trochę sprawę, ale nadal jest przesunięcie między liniami...
Zmieniać język czy procesor... Jak radzicie? Prawdopodobnie po prostu daruje sobię odchylanie "skanujące" ( telewizorowe) i zrobię własne, wtedy w gre wchodzą nie MHz a kHz (plamką steruję nie dłużej niż 1 mikrosekundę, narysowanie kółka to zbiór kropek, natomiast z własnym odchylaniem wystarczy załączyć plamkę i wyrysować sin i cos odchylaniem
No i przepraszam że się tak rozpisałem w tak błachym temacie. Może pójdę szukać dziewczyny lepiej...?
Pozdrawiam.