Goto page Previous 1, 2
neuron
Guest
Tue Nov 16, 2004 11:47 am
Quote:
Win9x. Te same obserwacje prowadzone gdy komp był wystartowany z
dyskietki
czystym DOS-em 6.22 pokazują, że impulsy "stoją" w miejscu jak zbój...
bo w dosie pomiedzy programem a sprzetem nic nie ma a sam dos ma charakter
uslugowy wzgledem aplikacji.
w windach pomiedzy aplikacja a sprzetem jest COS a aplikacja urzytkowa jest
w to COS wkomponowana - staje się cześcią tego CZEGOS. To COS rzadzi sie
swoimi prawami na ktore
normalny programista nie ma zadnego wplywu. Zaawansoany programista moze
wplyw miec -
pod warunkiem ze na placu boju nie spotka sie z innym zaawansowanym
programsta
Tylko karnel moze pernamentnie utrzymywac status realtime - inne procesy i
owszem moga miec
rowniez status realtime - ale maja szybciutko zrobic to co maja do zrobienia
i spadac na szczaw
inaczej system zdycha.
Pamietajcie o jednym jeszcze - x procesow, y operacji dyskowych, z sciezek
na n talezach
a fizyczny sterownik HDD tylko JEDEN !
wojtek
www.neuron.com.pl
Adam Dybkowski
Guest
Tue Nov 16, 2004 9:46 pm
Kris wrote:
Quote:
Na pocztaku tez myslalem o wykorzystaniu 8254. Aplikacja ma dzialac pod
Windows.
Chyba pozostaje jakis maly atmelek podlaczany na COM i wymiana
informacji z nim.
Pytanie do Adama: Jak to rozwiazałes w swoim programie ISP Programmer?
Nijak bo problemu nie ma. Ze względu na działające inne procesy
programowanie może być (i jest w rzeczywistości) wstrzymywane - i nie
wynika z tego żaden problem. Co najwyżej taktowanie na ISP będzie
znacznie wolniejsze, ale dla programowanych uC nie ma to najmniejszego
znaczenia, czy SCK ma 100 kHz, czy 10 Hz. Z drugiej strony, dostępy do
portu równoległego i tak są bardzo wolne (minimum kilkaset us, mierzyłem
to jakiś czas temu w WinXP).
BTW: Porównywałem ostatnio szybkość programowania ATmega128 przez ISP i
przez JTAG - protokół niby podobny, kabelek (LPT) i soft (własny)
również, ale JTAG jest znacznie szybszy. Wynika to pewnie ze sposobu
przepychania danych do programowanego uC, bo czas programowania
(fizycznego) jednej strony pamięci Flash jest stały niezależnie od metody.
--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/
Uwaga: przed wysłaniem do mnie maila usuń "123" z adresu.
Kris
Guest
Tue Nov 16, 2004 10:27 pm
Mam rozumiec, ze jesli bede pisał program w asmie i linijka pod linijka
umieszcze rozkazy przykładowo utaw SCK i wyzeruj SCK przez odwolanie sie
do portów (gdzie sck to jeden z bitów LPT) to ta zmiana nastapi po
czasie minimum kilkaset us?
To po co w takim razie opcja wyboru kwarcu w twoim programie?
A z tym JTAGiem to ciekawa sprawa.
Quote:
Nijak bo problemu nie ma. Ze względu na działające inne procesy
programowanie może być (i jest w rzeczywistości) wstrzymywane - i nie
wynika z tego żaden problem. Co najwyżej taktowanie na ISP będzie
znacznie wolniejsze, ale dla programowanych uC nie ma to najmniejszego
znaczenia, czy SCK ma 100 kHz, czy 10 Hz. Z drugiej strony, dostępy do
portu równoległego i tak są bardzo wolne (minimum kilkaset us, mierzyłem
to jakiś czas temu w WinXP).
Adam Dybkowski
Guest
Tue Nov 16, 2004 11:35 pm
Kris wrote:
Quote:
Mam rozumiec, ze jesli bede pisał program w asmie i linijka pod linijka
umieszcze rozkazy przykładowo utaw SCK i wyzeruj SCK przez odwolanie sie
do portów (gdzie sck to jeden z bitów LPT) to ta zmiana nastapi po
czasie minimum kilkaset us?
Tak to wyglada w Windows XP. Nie wiem, z jaka predkoscia wynik dzialania
instrukcji 'out' propaguje sie na port w DOSie.
Quote:
To po co w takim razie opcja wyboru kwarcu w twoim programie?
Bo nie moge polegac na aktualnym "widzimisie" Windozy (a moze i calego
peceta - sprawdzal ktos ile trwa 'out' na LPT w czystym DOSie?).
Opoznienia czasowe opieram na funkcji QueryPerformanceCounter. Wprowadze
w przyszlosci mozliwosc wylaczenia dodatkowych opoznien, jezeli to
mialoby przyspieszyc programowanie.
Poza tym mozesz zachciec popedzac AVRa np. z zewnetrznego generatora 100
kHz albo kwarcu 32,768 kHz - wtedy miedzy kolejnymi zboczami transmisji
ISP trzeba nieco wiecej poczekac.
--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/
Uwaga: przed wysłaniem do mnie maila usuń "123" z adresu.
neuron
Guest
Wed Nov 17, 2004 1:19 am
Quote:
Bo nie moge polegac na aktualnym "widzimisie" Windozy (a moze i calego
peceta - sprawdzal ktos ile trwa 'out' na LPT w czystym DOSie?).
Nie wiem jak by to wyszlo na wspolczesnych maszynach
jak robilem myki w czasach AT to lpt zawsze rzadzilo sie tymi samymi prawami
co ISA - czyli takt 8MHz z mozliwoscia podkrecenia w chipsecie.
W miare stabilny transfer ok 1kHz mozna uzyskac synchronizujac sie w watku
instrukcja sleep
repeat
sleep(1); // zawiesza dzialanie watku na 1ms
cos_do_portu
index_i_warunek_konca
until 1=0;
Oczywiscie w odrebnym watku i oczywiscie jesli nie ogladasz jednoczesnie
filmu z divxa
Dla wiekszych predkosci kombinowalem kiedys z funkcja testujaca
inkrementacje
licznika w petli w czasie 1 sec wyznaczonej przez zegar systemowy aby
wyznaczyc sredni czas trwania watku bez opoznienia - ale nie skonczylem tego
wiec nie wiem jak to zadziala.
Jeszcze jedna uwaga odnosnie programu dosowego w sesji windowsa - koniecznie
trzeba dla niego stworzyc pifa i wylaczyc w nim wykrywanie bezczynnosci -
jesli windows stwierdza ze dosowy program nie korzysta z myszy ani z
klawiatury to system traktuje go jako nic nie robiacego i odebiera mu
przydzielony czas !
wojtek
www.neuron.com.pl
J.F.
Guest
Wed Nov 17, 2004 1:22 am
On Wed, 17 Nov 2004 02:19:32 +0100, neuron wrote:
Quote:
Bo nie moge polegac na aktualnym "widzimisie" Windozy (a moze i calego
peceta - sprawdzal ktos ile trwa 'out' na LPT w czystym DOSie?).
Nie wiem jak by to wyszlo na wspolczesnych maszynach
jak robilem myki w czasach AT to lpt zawsze rzadzilo sie tymi samymi prawami
co ISA - czyli takt 8MHz z mozliwoscia podkrecenia w chipsecie.
Biorac pod uwage ze lpt byl wtedy na karcie ISA - to w zasadzie nie
dziwnie :-)
Stosunkowo stabilny byl/jest czas dostepu do portu LPT.
Okolo 1us, nawet jesli procek w miedzyczasie przyspieszyl 20 razy ..
Co nawiasem mowiac .. jak sie dzis zalatwia ? Procek wykonuje
'in al,378' ... i dostaje waita na 3000 cykli ?
J.
Adam Dybkowski
Guest
Wed Nov 17, 2004 10:20 pm
J.F. wrote:
Quote:
Stosunkowo stabilny byl/jest czas dostepu do portu LPT.
Okolo 1us, nawet jesli procek w miedzyczasie przyspieszyl 20 razy ..
Co nawiasem mowiac .. jak sie dzis zalatwia ? Procek wykonuje
'in al,378' ... i dostaje waita na 3000 cykli ?
Oczywiscie, a w czym problem. Kawalek chipsetu zawierajacy obsluge LPT
wstrzymuje procesor wystawiajac odpowiedni stan na pin WAIT (czy jak tam
go zwa w dzisiejszych prockach). W magistrali ISA byla do tego specjalna
linia IOCHRDY.
--
Adam Dybkowski
http://www.amwaw.edu.pl/~adybkows/
Uwaga: przed wysłaniem do mnie maila usuń "123" z adresu.
Goto page Previous 1, 2