Pokretanje više procesa istovremeno

Evo i ja imam jednu ideju iz rukava, ali ne kod tkz. devices, nego kod samog korijena ovog programa. Za početak bi mogli koristiti funkciju outb()sa kojom možemo direktno ( bez virtualnih dato-sistema ) pisati na PP. Evo mali primjer:

[code]

#define D_LPT1_DATA 0x378
/*
*

  • Ovdje počinje funkcija main() sa kontrolama i sl…

*/
while ( 1 == 1) {
outb( 0x00, D_LPT1_DATA);
sleep ( 1 );
outb(0xff, D_LPT1_DATA);
sleep( 1 );

/*
*
*

  • Ovdje negdje se main zavrsava

*/

[/code] Ovaj code je pojednostavljeno prikazan, ali u suštini piše naizmjenično na dva bita par.porta. Znam da to nema veze sa strukturom, ali prvo bi da ovo sredim. Mogu ga jednostavno pozvati kao root bez drivera.Umjesto sleep() moglo bi se koristiti usleep() npr. za generiranje taktova.
Još nešto bi da razjasnim prije nego počnem strukturirati. Ako frekvencija bude visoka, nadam se da neće doći do neodređenih stanja u elektronici. Pošto svi taktovi istovremeno “skaču” bojim se da TTL -ovi ( ili CMOS nije važno) ne polupaju lončiće. Zaboravio sam naš jezik : Würdest du Takt- oder Flankengesteuerte Bausteine nehmen? Demux bi trebao biti Flankengesteuert a ostali sa Taktom.

Odlicno… Nisam znao da postoji i userland varijanta funkcije outb(), ali eto, za to sluzi forum, da ljudi razgovaraju, razmjenjuju iskustva, uce, a mozda i nesto zajedno naprave…

Moje misljenje je da je bolje koristiti iskljucivo “taktgesteuerte” Bausteine, jer nam vrijeme nije toliko kriticno, pa mozemo rahat sacekat da “prodje” ivica, cime se izbjegava i “unistenje” loncica koje bi integralna kola mogla pociniti.

Gornju liniju mozes napisati i kao:


while (1) {

     ...

}



/* --- ili --- */



for ( ; ; ) {

     ...

}

Mada sve ovo izgleda smijesno, za varijantu sa for petljom gcc generise najbrzi kod - naravno, ako ne koristis optimizaciju.

Evo, rekoh, samo da vidim dokle si stigao sa projektom. Prosao je i Wochenende, a svi nekako sute, kao da je to zaboravljena tema. Ja licno volim kad ovaj forum malo zivne, pa eto, javi nam se Babysitter!

Ne ne, tu sam ja, svrnem svaki dan i pogledam šta ima.
Pisao sam ti ja o onim karticama koje sam naručio i koje trebaju da služe kao multi-port za motore. Evo baš su stigle prije tri dana, pa reko ako su već tu da ih i konfigurišem i prvo realizujem onu metodu sa više portova.
Ali evo vidim da nije jednostavno konfigurirati pod linuxom. Već tri dana eksperimentišem sa njima pa možda misliš da sam zaboravio na onaj projekt, ali nisam . Čim napravim ovu metodu, onda se mogu upustiti u praktičnu realizaciju “one-port” metode.
Sad se prvo moram informisati o ovim hexsadecimalnim adresama kao npr.: 0xa800 ili 0xb400, jer nemogu da shvatim kako se one dodjeljuju i kako su podjeljene na kartici. Ona mi izbacuje 5 ovakvih adresa a ima 4 seriska i 3 paralelna porta. Morao sam i novi kernel kompajlirati i eto tu mi momentalno prolazi vrijeme. Ako si ti slučajno maher za ove adrese piši šta znaš.
Eto počeli smo kod “više procesa istovremeno” a kako izgleda završićemo kod " Big Bang teorije i ekspandirajućem svemiru ".
Ali neka, važno je da nije dosadno. Eh tako sad me evo čeka šolja Jacobs Krönung i tasnica rafaela , PA ČUJEMO SE SUTRA

Prošlo je dva sata od moje zadnje poruke (pogledaj gore ) i evo ponovo se javljam. Što se tiče kartice sve je OK. Isprobavao sam sve adresse i mogućnosti dok nije proradila. I evo sad imam 3 Paralelna porta i 6 Serijskih i funkcionišu ko munja. Ponekad ugradiš hardware u računar , startuješ sistem i sjediš pred praznim terminalom. Hajde ti sad iz “ničega” pokreni taj hardwer, još pogotovo ako je neki egzotičan kao ova kartica, Traženje po knjigama, internetu, google itd, SuSE SDB, forumi… i na kraju utipkaš tri slova u modules.conf i funkcioniše ! Dali vam (ti) je to poznato ?
Sve u svemu i ova kartica mi je potvrdila ono što kaže moj radni kolega : " Pod Linuxom funkcioniše sve, samo treba znati kako" !
Ali da se vratimo na naše motore. Vidiš, ja sam ti skoro cijelu elektroniku za multiport-metodu napravio, samo sam još čekao da mi stignu te kartice pa da sklopim te sve dijelove u jednu cjelinu. Zato bi ja da prvo napravim ovaj projekt tako da mi unikatne pločice ne stoje ovde po stolu. Osim toga , vrijeme mi prolazi, a ovaj projekt, kako ga ja zovem, mi je vrlo važan.
Nastavićemo ako bog da čim sklopim prvi robotić, pa će mo ga pojednostaviti kroz jedan jedini port. Možda sklopim i drugi robot koji funkcioniše samo sa jednim portom.
Eh prije nego zaboravim: Koji program koristiš za ovako lijepe skice ?? :wink:

Pa ja, zato ti ja nisam ni odgovorio. Pogledao sam tvoju prethodnu poruku i od tada vise i ne otvaram ovaj topic, jer sam mislio da je to bilo to, medjutim, izgleda da nije…

Odlicno, drago mi je da radi.

Ich warte …

Program ti je obicni “primitivni” paint. A to sto su slike lijepe, to ti je svabska skola…

P.S. Instalirao sam kahve aparat u radnoj sobi u blizini kompjutera. Sve je spremno za online chat.

" kahve aparat " ha, ha, ova ti je prava. Moram zapamtit ovaj izraz. Podsjeća me na jednu staru kasetu od " Mome i uzejra " gdje slično pričaju.

Hvala ti na Mailu, i ja tebi isto to čestitam i želim :wink: samo mi moraš još objasniti kako si sredio da ti nevidim E-Mail adresu ? :rolleyes:

Eh, da se vratimo na Motore. Sklopio sam svu elektroniku, priključio Motore , i spojio sve sa računarom. ( Još pričam o onoj metodi sa tri paralelna porta )
Prije nekih 5 dana sam testirao elektroniku i program od Autora one knjige Andreasa Zicknera, i primjetio da dva bita paralelnog porta ostanu uključena nakon što se program završi. To je izazvalo postepeno zagrijavanje motora jer je struja i dalje tekla kroz svitke i to dok je motor stajao. Možeš zamisliti i sam da bi se motori u tom slučaju pokvarili. Srećom sam primjetio tu činjenicu, jer sam ih uzeo u tkz. “Dauerbetrieb” i držao jedan u ruci . Interesovala me je i snaga samog motora, tako da sam prstima pokušavao da ga zaustavim. Kad sam primjetio to zagrijavanje, odpojim ja sve i počnem tražiti mogućnost da izključim motore na kraju ili u sred programa ali sve uzaludno. Piše ti on o nekoj varijabli D_SM_IOCTL_CMD_POWER_OFF koja navodno izključuje motor. Tražio sam ja tu varijablu u codu i nađem sljdeći dio u driveru :

switch ( cmd ) { case D_SM_IOCTL_CMD_DONE: /* stopp timer ..... */ if ( aSTR_smotor[ I_motor ].I_type == D_SM_NOTUSED ) { M_INFO_PRINT_(( D_KERNEL_PRINT "sMotor (%d) not initalizedn", I_motor )); return( -EINVAL ); } if ( aSTR_smotor[ I_motor ].I_timerMode == D_SM_TIMER_LIST ) { del_timer(&aSTR_smotor[ I_motor ].STR_timer); } else { #ifndef D_NO_RTC_TIMER if ( aSTR_smotor[ I_motor ].I_timerRTC != -1 ) { timer_unregister( aSTR_smotor[ I_motor ].I_timerRTC ); aSTR_smotor[ I_motor ].I_timerRTC = -1; } #endif } if ( aSTR_smotor[ I_motor ].I_portRegistered == TRUE ) { release_region( aSTR_smotor[ I_motor ].I_port, 3 ); aSTR_smotor[ I_motor ].I_portRegistered = FALSE; } aSTR_smotor[ I_motor ].I_type = D_SM_NOTUSED; break; case D_SM_IOCTL_CMD_INIT: if ( aSTR_smotor[ I_motor ].I_type != D_SM_NOTUSED ) { M_INFO_PRINT_(( D_KERNEL_PRINT "sMotor (%d) already initalizedn", I_motor )); return( -EBUSY ); } copy_from_user( (char *)&STR_ioctl, (char *)arg, sizeof(smotor_ioctl_typ) ); return( smotor_initalize_motor( I_motor, &STR_ioctl ) ); break; case D_SM_IOCTL_CMD_POWER_ON: aSTR_smotor[ I_motor ].I_stepsToWalk = 1; smotor_spin( I_motor ); break; case D_SM_IOCTL_CMD_POWER_OFF: break; case D_SM_IOCTL_CMD_WRITE_MODE: if ( (arg == D_SM_WRITE_BLOCK) || (arg == D_SM_WRITE_NOBLOCK) ) { aSTR_smotor[ I_motor ].I_writeWaitMode = arg; } else { M_INFO_PRINT_(( D_KERNEL_PRINT "Ioctl Called with invalid arg=%ld to D_SM_IOCTL_CMD_WRITE_MODEn", arg )); return( -EINVAL ); } break; default: M_INFO_PRINT_(( D_KERNEL_PRINT "Ioctl Called with invalid cmd=%dn",cmd )); return( -EINVAL ); break; } return( 0 ); } Pogledaj ovaj code i reci mi dali nešto primjećuješ? Pogledaj baš tamo kod varijable D_SM_IOCTL_CMD_POWER_OFF. Zar ti nije ovdje nešto čudno ?
U pravu si ako kažeš da ovdje nešto fali ! Nakon što uslov switch skoči pred case varijable D_SM_IOCTL_CMD_POWER_OFF ništa se nedešava jer nema komandi koje trebaju da gase motore.
Javim ja to Anreasu Zickneru, ali onako nesiguran jer nisam znao dali je to tako predviđeno ili …?? Kad piše ti on meni nazad da se izvinjava i da nije ni on primjetio da je to gršeka. Zahvali mi se što sam pronašao bug u njegovom listingu i sljedeći dan mi pošalje popravljenu verziju tog coda . Eh onda sam pokušao da tu funkciju ubacim u stari code i primjetio da editor joe nekopira u druge datoteke. :wink: Ali fala bogu da imam vas da mi pomognete :lol:
Evo sad funkcionišu motori fantastično bez zagrijavanja. Poslao sam nalog na jednu firmu koja će da pravi “glavu” za robot jer imam neke specijalne želje koje baziraju na mehaničkom principu, a pošto se moje iskustvo sa mehanikom drži u granicama, odlučih da dam jednoj firmi nalog da mi to sredi. Javili su mi da im treba 14 dana za to pa evo čekam. Tek kad glava bude gotova mogu nastaviti sa poslom jer je ona najvažnija.
Što se tiče Subote naveče, dobro je ,samo neznam dali sam kod kuće. Znaš da se ovamo Subotom u 21 h izlazi pa do ujutro . Ali da se to srediti. Meni bi najbolje odgovarala Nedelja naveče ( između 8 i 11 ).
Eh odoh sad da sljuštim jedan Kapučino, onaj užasni iz kesice al nadam se da ću ipak dobro spavati posto sam crko danas u firmi.
:borg:
Čujemo se

Evo šta je postalo od ovog projekta:
www.miralem.privat.t-online.de/vogel_nachtigall.mpg
Trebam uraditi još neke kozmetičke radove na kućici ali inače komšije me već sad pitaju : " Kakva je ono ptica što onako lijepo pjeva na mom balkonu i to bez kaveza " ?
+audi+