Citat:
sasha_kg: Pa evo sta sam pokusao a ne znam ovo oko starta i rada od 10 sekundi ajde probajte
Saša, nisi ti ni probao da rešiš ovaj zadatak jer si skoro potpuno prepisao Stojanov kod koji je dao u drugoj temi. Pošteno bi bilo da kažeš ja ne znam da radim ove stvari a treba mi to i to zbog toga i toga i da li mi neko može pomoći a ne ovako na istom sajtu kopiraš kod ali u drugoj temi.
E sada malo o tvojoj profesorki. Ona vam je postavila par simpatičnih zadataka a najbolji što se mene tiče je onaj sa oscilatorom koji je neko uradio tvom kolegi a onaj primer neće raditi kako treba, odnosno neće imati one frekvencije koje su tražene jer postoji caka na koju nije obraćena pažnja prilikom rešavanja jer zadatak samo na izgled izgleda lagan a u stvari ima začkoljicu. Za ljude koji rade programiranje naravno to nije problem ! Po težini zadataka ja bih upravo taj zadatak što se mene tiče proglasio najtežim od svih ostalih iako je i on lagan ali barem zbog one začkoljice.
Što se tiče tvog zadatka kaže se : Da,
- na PORTB.0 - treba da bude pogon mašine
- PORTA.0 - treba da bude vezan STARTNI prekidač. Kada se uključi mašina radi 10sec. i zaustavlja se !
- PORTB.1 - treba da bude vezan na prekidač STOP za zaustavljanje mašine
Jako bitna stvar tvog zadatka je ono što si napisao a to je :Pritiskom na taster STOP ciklus se u svakom trenutku može prekinuti.
Na žalost postoji par grešaka i program neće raditi dobro. Samo da se ogradim da nisam pregledao ovaj kod na drugoj temi nego sam samo konstatovao da ti je ponuđeno rešenje a komentarišem samo kod koji je sada napisan u ovoj temi !
Greške su sledeće :
Uslov zadatka je da na PORTA.0 bude START prekidač a ti si stavio da je :
Citat:
sasha_kg:
Start
btfsc PORTA,1 ;Testira START prekidac
goto Start
Druga greška je da si isto to uradio za STOP prekidač :
Citat:
sasha_kg
Poc
btfsc PORTA,0
goto Poc ;Testira STOP prekidač
Treća greška: Prema uslovu zadatka mašina treba da radi 10 sec po uključenju prekidača START a u "tvom" rešenju će napraviti pauzu oko 10 sec. pa će onda da se uključi jer si uključenje mašine stavio posle petlje za kašnjenje a trebalo je pre nje. Dakle treba staviti uključenje mašine pre petlje a njeno isključenje odmah iza petlje pa će tako da se uključi odmah po pritisku tastera START a isključi posle 10 sec. sama.
Nećeš verovati ali ima i četvrta greška ( ne računam ono na kraju: Call ) ! U uslovu zadatka se kaže da se mašina preko STOP tastera može isključiti u bilo kom trenutku ! U rešenju koje je napisano mašina može da se isključi tek pošto program dođe do koda koji testira prekidač STOP a to nije podrazumevani "svaki trenutak" jer se to dešava tek posle pauze kada će svejedno biti isključena. Kada profeosrka kaže svaki tenutak onda bi to trebalo da podrazumeva i trenutak kada se program nalazi u petlji jer se program najduže zadržava u njoj a takođe mora da se omogući isključenje i pre kao i posle petlje. Postoje dva rešenja a to je ili testirati prekidač STOP na više mesta u programu i takođe u petlji ili koristiti interapt rutinu koja je po meni najjednostavnije rešenje za ovaj slučaj.
Da li ćeš ti Stojane prepraviti ovaj program ili ne to je tvoja stvar , ja znam da ja neću i to neću namerno upravo iz razloga što je postavljač teme "pokušao" sam da reši ovaj problem tvojim kodom.
E sada nešto za kraj za postavljača teme : Pretpostavljam da si student kao što si i rekao ili neko od ovih tvojih kolega. Kada bi neko rešavao tvoje probleme na način na koji ti očekuješ ti nikada ne bi naučio ono što se od tebe traži ! Kako je Stojan , ja ili neko drugi mogao da sedi mesecima i uči mikrokontrolere tako možeš i ti inače ćeš protrčati kroz školu, nadam se da nije fakultet u pitanju jer ako jeste bolje vam je svima da ga napustite na vreme jer od vas nikad ništa neće biti pa ne shvatam ni svrhu vašeg studiranja.
I na kraju, imam rešenje za sve vas koji ste ovde postavili zadatke i očekivali da vam ih neko reši a da pri tome nemate blage veze sa mikrokontrolerima koji na vašu žalost moraju mnogo da se uče a naravno svako rešenje koje dam praktično ću da proverim i da potvrdim ispravnost rešenja na razvojnom sistemu kod mene.
Rešenje je sledeće: Svima vama ja mogu da rešim te zadatke pojedinačno ( koliko moje slobodno vreme to bude dozvoljavalo ) ali naravno svima ću i da naplatim moj rad a vi naravno treba da platite za vaš nerad i to u vidu kredita za mobilni telefon po ceni koju ćemo da odredimo u zavisnosti od vremena koje je potebno da se vaš zadatak uradi. Znači vi meni postavite zadatak ovde na ovoj temi ili ga pošaljete na privatnu poruku ili na mail , ja vama odgovorim koliko će to da košta pa onda vi ako hoćete platite moj rad na broj koji ću vam dati. Da ne bi bilo zabluda rešenja svih vaših zadataka ja ću da objavim ovde na sajtu da ne bi slučajno ispalo da sam nekoga prevario.
I još jednom, na sajtu bi trebao da postaviš pitanje tipa šta da uradim da rešim deo koda koji mi pravi probleme pa onda postuješ kod, pa ljudi koji znaju pogledaju, ponude alternativan kod a ne da ti neko rešava kompletan tvoj problem jer kakav god da je zahteva pored znanja i određeno vreme i to ne sigurno 10 min kao što vi mislite da bi neko imao vremena tek tako da se zeza pošto nema šta da radi.
Mislim da je moj predlog pošten a naravno vi možete da komentarišete sve što sam napisao !
[Ovu poruku je menjao Slavenko dana 14.06.2008. u 21:47 GMT+1]