TwoWay Thing - Dvosmjerni GSM Kontroler
Moderators: pedja089, stojke369, [eDo], trax
TwoWay Thing - Dvosmjerni GSM Kontroler
Konačno je završen uređaj "Dvosmjerni GSM Kontroler" ili pod projektnim imenom "TwoWay Thing".
Kratki uvod u uređaj:
- kontroler pic16f84a na 16MHz
- 4 ulaza i 4 digitalna izlaza
- programabilne funkcije digitalnih ulaza (slanje SMS-a na promjenu stanja ulaza (detekcija alarma))
- zahtjev stanja svih senzorskih ulaza i povratna poruka u jednoj SMS
- dinamičnost uređaja, mogućnost proširenja na NEOGRANIČEN broj ulaza i izlaza!
- mogućnost spajanja BILO KOJEG SENZORA na uređaj uz slanje zahtjeva njegovih parametera ili automatska dojava promjene
USKORO
Kratki uvod u uređaj:
- kontroler pic16f84a na 16MHz
- 4 ulaza i 4 digitalna izlaza
- programabilne funkcije digitalnih ulaza (slanje SMS-a na promjenu stanja ulaza (detekcija alarma))
- zahtjev stanja svih senzorskih ulaza i povratna poruka u jednoj SMS
- dinamičnost uređaja, mogućnost proširenja na NEOGRANIČEN broj ulaza i izlaza!
- mogućnost spajanja BILO KOJEG SENZORA na uređaj uz slanje zahtjeva njegovih parametera ili automatska dojava promjene
USKORO
Last edited by trax on 26-10-2005, 22:33, edited 5 times in total.
P.S.
Zaboravih reći, trebaće vam Mitsubishi TRIUM telefon
Vrlo je jeftin i ima ga sigurno svugdje. Trenutno uređaj radi sa telefonima na 38400 bps. Ukoliko pronađete neki drugi telefon koji radi na recimo 19200 trebate kristal od 8MHz, za 9600 bps trebate uzeti kristal od 4MHz...
P.S. Uređaj je testiran (za sada) samo sa Mitsubishi TRIUM MARS telefonom. Ukoliko imate neki drugi model Mitsubishi-ja molim da se javite pa da probate uređaj prije ostalih!
P.S.2. Uređaj ne radi sa telefonima: Siemens i Ericsson - definitivno. Nokia telefoni koji mogu su (DLR-3P) (a nisu testirani): 6210, 6250, 7110, 7160, 7190, 3280, 6160, 6161, 6162, 6185, 5185, 5165, 7160, 7190. Da bi to sve radilo sa Nokiom trebate sagraditi dodatni sklop sa ove adrese: http://www.atrox.at/datacable/dlr3/index.html
P.S.3. Uređaj radi na SVIM GSM MREZAMA!
Definitivno mi treba neko sa nekim Triumom spreman da izvrši neka manja testiranja.
Trax
Vrlo je jeftin i ima ga sigurno svugdje. Trenutno uređaj radi sa telefonima na 38400 bps. Ukoliko pronađete neki drugi telefon koji radi na recimo 19200 trebate kristal od 8MHz, za 9600 bps trebate uzeti kristal od 4MHz...
P.S. Uređaj je testiran (za sada) samo sa Mitsubishi TRIUM MARS telefonom. Ukoliko imate neki drugi model Mitsubishi-ja molim da se javite pa da probate uređaj prije ostalih!
P.S.2. Uređaj ne radi sa telefonima: Siemens i Ericsson - definitivno. Nokia telefoni koji mogu su (DLR-3P) (a nisu testirani): 6210, 6250, 7110, 7160, 7190, 3280, 6160, 6161, 6162, 6185, 5185, 5165, 7160, 7190. Da bi to sve radilo sa Nokiom trebate sagraditi dodatni sklop sa ove adrese: http://www.atrox.at/datacable/dlr3/index.html
P.S.3. Uređaj radi na SVIM GSM MREZAMA!
Definitivno mi treba neko sa nekim Triumom spreman da izvrši neka manja testiranja.
Trax
-
- Pocetnik na forumu
- Posts: 34
- Joined: 08-08-2005, 01:28
Konacno!!!
Pozdravljam,
Pa zašto promjeni telefon?? Ja ne znam kako da nađem taj model što si ti testirao, stvarno nemam pojma, ali eto.
Pa hajde, ako može pošalji mi shemu i ostalo pa da probam.
Hoće li biti šta slično sa atmelom??
P.S. I ja sam pravio, odnosno našao ovakav forum for fr*e, nije loše samo što ne mogu skužiti kako da ubacim teme.... Ako možeš objasni pa da odradim. jako je dobra stvar. A što se tiće verifikacije kada se netno prijavi, je li stiže mail svakom novom korisniku, nisam baš probavao.
Hvala
Pa zašto promjeni telefon?? Ja ne znam kako da nađem taj model što si ti testirao, stvarno nemam pojma, ali eto.
Pa hajde, ako može pošalji mi shemu i ostalo pa da probam.
Hoće li biti šta slično sa atmelom??
P.S. I ja sam pravio, odnosno našao ovakav forum for fr*e, nije loše samo što ne mogu skužiti kako da ubacim teme.... Ako možeš objasni pa da odradim. jako je dobra stvar. A što se tiće verifikacije kada se netno prijavi, je li stiže mail svakom novom korisniku, nisam baš probavao.
Hvala
:::: Atmel For life ::::
Re: Konacno!!!
Zato sto su Siemens i Ericsson sranje od telefona Imaju problema sa komunikacijom dok im se baterija puni, iskljucuju se sami od sebe...webmasteragent wrote:Pozdravljam,
Pa zašto promjeni telefon?? Ja ne znam kako da nađem taj model što si ti testirao, stvarno nemam pojma, ali eto.
Re: Konacno!!!
Pa kad ga instaliras odes u administraciju, dole na forumu ti se pojavi link "Go to Administration Panel" i tu sve odradis... procitaj README od tog foruma pa ce ti biti jasnije.webmasteragent wrote:Pozdravljam,
P.S. I ja sam pravio, odnosno našao ovakav forum for fr*e, nije loše samo što ne mogu skužiti kako da ubacim teme.... Ako možeš objasni pa da odradim. jako je dobra stvar. A što se tiće verifikacije kada se netno prijavi, je li stiže mail svakom novom korisniku, nisam baš probavao.
A gdje ti je izvrsni file programa[ hex, bin] da mozemo vidjet sto si ti to radio ? ili je to mozda uzeto s neke druge stranice ? I cudno da ti treba tako visoka freq kristala za tako mali bitrate , za 38400 ti je dovoljan 6MHz kristal. Cak i to nije bitno sve se to da popravit samo reci gdje je ,ako je public, taj tvoj izvrsni file za taj projekt.
Pozdrav
Pozdrav
Znam ja da bi pola vas lakse spavalo da sam ja to zdrpio odnekud...
NOKIA verzija, PIC16F628A: http://www.elektronika.ba/projekti/?akc ... dprojekt=6
Sretno i javite sta mislite.
Trax
UPDATE: @ 16/10/2005 - (v3.01.alfa)Zastarjeli fajlovi:
Fajlove projekta skinite sa ove adrese: http://www.elektronika.ba/projekti/fajl ... 1.alfa.rar
UPDATE: (v2.02.alfa)
NOKIA verzija: http://www.elektronika.ba/projekti/fajl ... fa_hex.rar
UPDATE: @ 13/09/2005 - (v2.03.alfa)
NOKIA verzija: http://www.elektronika.ba/projekti/fajl ... 3.alfa.rar
NOKIA verzija, PIC16F628A: http://www.elektronika.ba/projekti/?akc ... dprojekt=6
Sretno i javite sta mislite.
Trax
Last edited by trax on 16-10-2005, 11:28, edited 13 times in total.
Pa nismo bas toliko pokvareni , ja se nadam. Inace obicno se ne "kradu" kompletni fw vec idejna rijesenja ili najcesce pojedini dijelovi kljucni za rad odredjenog tipa FW "srce ". Nekad mi je bio "posao" analizirati fw i traziti one koji vole "posudjivat " ideje tj njihova rijesenja . I mogu ti rec da bas i nije mali broj ljudi koji nisu skloni "posudjivanju" pogotovo sa public fw. Nebih zelio da me krivo razumijes ali to je tako.Inace nisi mi odgovorio zasto koristis tako visoku freq [ 16MHz na bitrate 38400] kad se iz tvog iskaza vidi da to nije program sa kriticnom brzinom izvodjenja operacija u realnom vremenu jer kasnije spustas takt osc [ cak i vise od 2 X ] u zavisnosti od bitrate-a ? Jeli to cisto tako jer si pri ruci imao bas taj kristal ili nesto drugo ?
Pozdrav
PS cini se da bas nije neka "guzva" na dijelu za mikrokontrolere.
Pozdrav
PS cini se da bas nije neka "guzva" na dijelu za mikrokontrolere.
Zdravo,
Posto koristim 16f84a on znaci nema bas RAM-a za razbacivanje. Kada mi pocnu dolaziti podaci na 38400 ja ne mogu da ih smjestim u RAM i onda fino parsiram nego moram "on the fly" ili u realnom vremenu.. tacnije dok oni dolaze. Znaci definitivno jeste bitna brzina izvrsenja, samo kod duplo manjeg bitrate-a bitovi duplo duze traju. Kako god okrenes, 38400 i nije bas mala brzina a sa ovim parsiranjem PIC ne moze da stigne sve da odradi. Program je pisan totalno kompaktno u asembleru i nema viska instrukcija.
Imao sam bezveznih problema sa proslim projektom bas sto se ovoga problema tice, znaci brzine. Imao sam ovdje kristal od 16MHz, trazio sam oko 12, 14 ali nisam nasao pa sam izabrao ovaj.
Jos nesto vrlo fino, telefona ima dosta raznih koji rade na raznim brzinama. Neki na 38400, neki 19200 i 9600. Ako se malo skonta, sa jednim HEX fajlom mogu sve to da pokrijem samo mijenjajuci kristal. Da sam uzeo nekih 10MHz imao bi problem, jer pola je 5mhz za 19200 a pola od tog spada u kategoriju egzoticnih elemenata
Bilo kako bilo, nebi da "zguram" sve to pa sam fino uzeo 16MHz i rahatluk
Meni se ovo cini vrlo finim.
Pa gdje si ti to radio, za NSA?
Trax
Slika novog v3 kontrolera
Slika starog v2 kontrolera
Posto koristim 16f84a on znaci nema bas RAM-a za razbacivanje. Kada mi pocnu dolaziti podaci na 38400 ja ne mogu da ih smjestim u RAM i onda fino parsiram nego moram "on the fly" ili u realnom vremenu.. tacnije dok oni dolaze. Znaci definitivno jeste bitna brzina izvrsenja, samo kod duplo manjeg bitrate-a bitovi duplo duze traju. Kako god okrenes, 38400 i nije bas mala brzina a sa ovim parsiranjem PIC ne moze da stigne sve da odradi. Program je pisan totalno kompaktno u asembleru i nema viska instrukcija.
Imao sam bezveznih problema sa proslim projektom bas sto se ovoga problema tice, znaci brzine. Imao sam ovdje kristal od 16MHz, trazio sam oko 12, 14 ali nisam nasao pa sam izabrao ovaj.
Jos nesto vrlo fino, telefona ima dosta raznih koji rade na raznim brzinama. Neki na 38400, neki 19200 i 9600. Ako se malo skonta, sa jednim HEX fajlom mogu sve to da pokrijem samo mijenjajuci kristal. Da sam uzeo nekih 10MHz imao bi problem, jer pola je 5mhz za 19200 a pola od tog spada u kategoriju egzoticnih elemenata
Bilo kako bilo, nebi da "zguram" sve to pa sam fino uzeo 16MHz i rahatluk
Meni se ovo cini vrlo finim.
Pa gdje si ti to radio, za NSA?
Trax
Slika novog v3 kontrolera
Slika starog v2 kontrolera
Last edited by trax on 16-10-2005, 11:36, edited 1 time in total.
Zanimljivo ! to s freq . Ja sam inace za programtor [ onaj koji je ponudjen na forumu za MCU ] isto koristio 38400 ali na 6MHz u paketima od 32 byte-a . Sad neznam koji je len["velicina"] paketa koji ti trebas prihvatiti i koliko imas vremena za odgovor [ dali je strogo definirana velicina ili "rastezljiv pojam" ] . Inace sto mislis o upotrebi SPI memorije koja ima i veliku brzinu i kapacitet za medjusmijestaj podataka. Ja nisam jos pogledao onaj file ali cu to svakako ucinit. Bas me zanima kako si postavio rutinu za komunikaciju jer brzine bitratea ionako mogu da budu rijesene rutinom sa promijenjivim kasnjenjem bez promijene kristala , kristal ionaoke odredjuje maximalnu freq bitratea a minimume rijesavas kasnjenjem npr a ne promijenom takta ??. Objasnjenje zasto je bas taj kristal ionako je nelogicno , procitaj jos jednom svoj vlastiti text o razlozima , ako smanjujes bitrate dijeleci takt pa usporavas i processor za isti omijer[ cak i nesto veci] , da ti povecavas delay u komunikacionoj rutini [ i tako smanjujes bitrate] to bi imalo logike ovako svkako nema i ocito je da se ne radi o nikakvoj obradi podataka u kriticnom vrememu vec o tome da se ne "zeza" s izracunom delaya za razlicite bitrate-e . Lijepo je cut da ima i projekata na boardu , steta je samo sto diskusije nisu malo "dinamicnije" .Imam dojam da podrucje MCUa bas nikog posebno ni ne zanima , podsijeca me sve to na komercijalne boarde za satelitsku televiziju , ljudi uglavnom dodju nesto uzet ako ima gotovo i dalje od toga nikog nista i ne zanima , steta, cast izuzecima valda ih ima ?.
Pozdrav
Pozdrav
Pa ne znam tacno koji dio mog posta nema smisla pa bi volio da mi ga kopiras pa da probam obrazloziti.
Rutina je naravno napravljena sa pauzama, fokusiranje na sredinu bita i jedna pauza u duzini trajanja bita.. nebitno. Za slanje bitova moze se koristiti neka minimalna vrijednost kristala uz minimalne pauze (proracunate) ali kod primanja i parsiranja, znaci gubljenja vremena u medjukoracima dok bajtovi dolaze - ne vidim neki zemaljski nacin da odradimo te instrukcije a da vrijeme ne prolazi.
Ono sto sam pokusao objasniti u proslom postu je slijedece: Ukoliko imate uredjaj koji radi na 4MHz i pri brzini od 9600 bauda. Kolika njegova brzina bude ako mu uduplate vrijednost kristala? Odgovor je 19200. To sam govorio. Ista stvar se desava i kada mu upola smanjite vrijednost kristala.
Sto se eksternih memorija tice - trazio sam ali nisam nasao, bas za ovaj projekt.
Trax
Rutina je naravno napravljena sa pauzama, fokusiranje na sredinu bita i jedna pauza u duzini trajanja bita.. nebitno. Za slanje bitova moze se koristiti neka minimalna vrijednost kristala uz minimalne pauze (proracunate) ali kod primanja i parsiranja, znaci gubljenja vremena u medjukoracima dok bajtovi dolaze - ne vidim neki zemaljski nacin da odradimo te instrukcije a da vrijeme ne prolazi.
Ono sto sam pokusao objasniti u proslom postu je slijedece: Ukoliko imate uredjaj koji radi na 4MHz i pri brzini od 9600 bauda. Kolika njegova brzina bude ako mu uduplate vrijednost kristala? Odgovor je 19200. To sam govorio. Ista stvar se desava i kada mu upola smanjite vrijednost kristala.
Sto se eksternih memorija tice - trazio sam ali nisam nasao, bas za ovaj projekt.
Trax
Dali si mozda probao koristit "jednozicni" protokol npr i2c sto bi se dalo uradit koliko se da vidjet iz dijela analiziranog filea . dioda + 10K otpornik na Vcc i dobijes kraci program za istu funkciju [ komunikacija], a ostaje ti jos pin-ova za neke druge urdjaje prikljucit i sl.
"...ne vidim neki zemaljski nacin da odradimo te instrukcije a da vrijeme ne prolazi. "
Inace taj mod postoji cak je i testiran i to prije par godina na primjeru izracuna DW[ decrypto rijeci] za ondasnji Premiere kanal koristeci "time delay rutinu" kad dodje zadnji byte potpisa imas vec pronadjen provider , tip naredbe , aktivni kljuc i odradjen kompletan DW algoritam negdje oko 80000 ciklusa. Test je obavljen na atmelovoj kartici
MCU AT90s8515 i naravno podaci su bili u int eepromu radi brzine citanja jer je I2C eprom prespor, na radnoj freq 12MHz . Kod izrade programa bilo koje namijene i za bilo koje racunalo problem pocesto lezi u nacinu na koji ga mi dozivljavamo i kako ga pokusavamo "prezentirat" ALU-u bilo kog procesora . Ljudi su kadkad cesce zaokupjeni dokumentiranjem svog programa nego redukcijom koda jer pisati nesto u asembleru ne znaci odmah da smo bas sve sveli na najobjektinije i s najmanjim utroskom vremena i efikasnoscu izvodjenja . Znas , kad sam ja jedan source kode poslao friendu on mi je odgovorio web adresom na kojoj je bilo "sve o umijetnosti programiranja u asembleru" . Ja sam mu se zahvalio i rekao da ja nikad ne izradjujem dijagrame toka i dokumentacija mi bas i nije jaca strana ali zato kopletan "izgled" FW drzim u glavi gotvo do najsitnijih detlja , sto on bas i nije razumio ili... ?
Jasno je meni to s dijeljenjem ili mnozenjem bitratea n X osnovni takt. Nego je pisalo i to da je MCU-u potrebna i veca brzna zbog obrade pristiglih podataka i da je to je razlog tkata 16MHz. Iz dijela analiziranog fw se vidi da je kolicina primljenih podatka ista bez obzira koji bitrate koristi odredjeni GSM , macro naredbe su iste i vrlo su kratke .Pa je tesko oteti se dojmu da to isto nebi odradio MCU i na 6 MHz / 38400 , 6/4 sto bi bilo oko 700ns za vrijeme ciklusa za taj MCU na toj freq. Sto za taj bit rate bas i nije tako sporo.No posto nisam dovrsio analizu necu se upustat u kritike i konacne zakljucke. Ali meni je zaista veoma drago da se bar s nekim moze popricat o FW i nacinu rijesavanja odredjenih parcijalnih problema . Ja ti se zahvaljujem na zanimljivom projektu . A posebno mi je drgo za diskusiju jer se tako najbolje razmijenuju iskustva sticu nova znanja ili se potice covijeka da pokusa razmisljat na drugi nacin sto neki put bude korisno. Uostalom to je ono sto nas zanima.
Pozdrav
"...ne vidim neki zemaljski nacin da odradimo te instrukcije a da vrijeme ne prolazi. "
Inace taj mod postoji cak je i testiran i to prije par godina na primjeru izracuna DW[ decrypto rijeci] za ondasnji Premiere kanal koristeci "time delay rutinu" kad dodje zadnji byte potpisa imas vec pronadjen provider , tip naredbe , aktivni kljuc i odradjen kompletan DW algoritam negdje oko 80000 ciklusa. Test je obavljen na atmelovoj kartici
MCU AT90s8515 i naravno podaci su bili u int eepromu radi brzine citanja jer je I2C eprom prespor, na radnoj freq 12MHz . Kod izrade programa bilo koje namijene i za bilo koje racunalo problem pocesto lezi u nacinu na koji ga mi dozivljavamo i kako ga pokusavamo "prezentirat" ALU-u bilo kog procesora . Ljudi su kadkad cesce zaokupjeni dokumentiranjem svog programa nego redukcijom koda jer pisati nesto u asembleru ne znaci odmah da smo bas sve sveli na najobjektinije i s najmanjim utroskom vremena i efikasnoscu izvodjenja . Znas , kad sam ja jedan source kode poslao friendu on mi je odgovorio web adresom na kojoj je bilo "sve o umijetnosti programiranja u asembleru" . Ja sam mu se zahvalio i rekao da ja nikad ne izradjujem dijagrame toka i dokumentacija mi bas i nije jaca strana ali zato kopletan "izgled" FW drzim u glavi gotvo do najsitnijih detlja , sto on bas i nije razumio ili... ?
Jasno je meni to s dijeljenjem ili mnozenjem bitratea n X osnovni takt. Nego je pisalo i to da je MCU-u potrebna i veca brzna zbog obrade pristiglih podataka i da je to je razlog tkata 16MHz. Iz dijela analiziranog fw se vidi da je kolicina primljenih podatka ista bez obzira koji bitrate koristi odredjeni GSM , macro naredbe su iste i vrlo su kratke .Pa je tesko oteti se dojmu da to isto nebi odradio MCU i na 6 MHz / 38400 , 6/4 sto bi bilo oko 700ns za vrijeme ciklusa za taj MCU na toj freq. Sto za taj bit rate bas i nije tako sporo.No posto nisam dovrsio analizu necu se upustat u kritike i konacne zakljucke. Ali meni je zaista veoma drago da se bar s nekim moze popricat o FW i nacinu rijesavanja odredjenih parcijalnih problema . Ja ti se zahvaljujem na zanimljivom projektu . A posebno mi je drgo za diskusiju jer se tako najbolje razmijenuju iskustva sticu nova znanja ili se potice covijeka da pokusa razmisljat na drugi nacin sto neki put bude korisno. Uostalom to je ono sto nas zanima.
Pozdrav
Zdravo,
Nisam koristio nista slicno i2c komunikaciji mada bi mogao za spajanje ovih eksternih AUX modula. Cak bi bilo i pozeljno. Problem je sto mi je ostalo vrlo malo prazne memorije jer se radi o samo 1024 bajta FLASH-a koji su mi dostupni u ovom chipu.
Da pocnem praviti ovaj projektic natjeralo me ovo:
http://www.elektronika.rs.ba/data/projekti/GSM/ sto prodaju za 250-300KM.
Sto se tice dokumentiranja - slazem se. To nije moja jaca strana a kad dodje vrijeme da se nesto dokumentuje ili nacrta shema koja mi je u glavi jednostavno mi bude mrsko. Isto tako ne pisem dijagrame nego sve drzim u glavi. Nije mi jasno kako bi neko mogao programirati u asembleru a da u svakom trenutku ne zna sta radi bez gledanja u bilo kakav dijagram ili bilo sta slicno.
Znaci, brzina izvrsavanja odnosno obrade bilo kakvih pristiglih podataka definitivno nije bitna. Samo je bitno da se oni "odrade" prije pristizanja novog bajta. To je sve. U mom programu ima i interrupt rutina koja se izvrsava na svakih 256 internih clocka = X[mhz]/preskaler[4]. Mislim da sam je takodje optimizovao:
Ukoliko ne dodje bilo kakav podatak u nekoliko sekundi - to znaci da imamo gresku u komunikaciji sa telefonom i program krece od inicijalizacije tj. od neke "Main" funkcije za provjeru SMS-a. Znaci ovdje se takodje gubi neko sitno vrijeme u primanju podataka - jos jedan razlog zasto mi treba barem malo brzi procesor od minimalne brzine za ovaj bitrate. 16MHz se i meni cinilo puno na pocetku ali kad sam vidio da odlicno radi ostavio sam ga. Ipak, kazes da 6MHz je dovoljno - ja nebi isao ispod 10MHz cisto iz neke opreznosti.
Kada pisem program u ASM, ne pisem ga totalno optimizovanim. Ne znam da li se tebi desava ali kada napisem bilo sta, dodjem za mjesec dana da citam taj kod, nemam blage veze sta sam to pisao, pa mi treba dobrih nekoliko minuta da ponovo skontam sta sam to imao tad u glavi. Zato pored svake komande pisem sta se desava i zasto je ona tu.
Pozdravljam
Nisam koristio nista slicno i2c komunikaciji mada bi mogao za spajanje ovih eksternih AUX modula. Cak bi bilo i pozeljno. Problem je sto mi je ostalo vrlo malo prazne memorije jer se radi o samo 1024 bajta FLASH-a koji su mi dostupni u ovom chipu.
Da pocnem praviti ovaj projektic natjeralo me ovo:
http://www.elektronika.rs.ba/data/projekti/GSM/ sto prodaju za 250-300KM.
Sto se tice dokumentiranja - slazem se. To nije moja jaca strana a kad dodje vrijeme da se nesto dokumentuje ili nacrta shema koja mi je u glavi jednostavno mi bude mrsko. Isto tako ne pisem dijagrame nego sve drzim u glavi. Nije mi jasno kako bi neko mogao programirati u asembleru a da u svakom trenutku ne zna sta radi bez gledanja u bilo kakav dijagram ili bilo sta slicno.
Znaci, brzina izvrsavanja odnosno obrade bilo kakvih pristiglih podataka definitivno nije bitna. Samo je bitno da se oni "odrade" prije pristizanja novog bajta. To je sve. U mom programu ima i interrupt rutina koja se izvrsava na svakih 256 internih clocka = X[mhz]/preskaler[4]. Mislim da sam je takodje optimizovao:
Code: Select all
;***** Interrupt rutina *****
ORG 0x04 ; Interapt vektor
bcf INTCON, GIE ; onemoguci sve interupte za sad
bcf INTCON, T0IF; skini flag od ovog interrupta
incf CKERR1, 1 ; povecaj brojac za detekciju greske
btfss STATUS, Z ; do if CLEAR, skip if set
RETFIE ; vrati se iz interupt rutine
incf CKERR2, 1 ; ckerr2++
btfss STATUS, Z ; do if CLEAR, uradi ako nije =0
RETFIE ; vrati se iz interupt rutine
incf CKERR3, 1 ; ckerr3++
btfss STATUS, Z ; do if CLEAR, uradi ako nije =0
RETFIE ; vrati se iz interupt rutine
GOTO Main ; krecemo iz pocetka, interupt smo ugasili na pocetku ove rutine :-)
Kada pisem program u ASM, ne pisem ga totalno optimizovanim. Ne znam da li se tebi desava ali kada napisem bilo sta, dodjem za mjesec dana da citam taj kod, nemam blage veze sta sam to pisao, pa mi treba dobrih nekoliko minuta da ponovo skontam sta sam to imao tad u glavi. Zato pored svake komande pisem sta se desava i zasto je ona tu.
Pozdravljam
Last edited by trax on 16-10-2005, 11:36, edited 1 time in total.
@tuta pa zaista nemam ni slova od bilo kakvog diagrama toka i sl . Osnova mojeg rada i pristupa izradi FW jest to da je navaznija kvalitetna vizija nacina postavljanja problema. Mozda to zvuci pretenciozno ali ja tako radim .Kad mi je potrebna simulacija radje pribjegavam samo testiranju sustava in vivo !!! tj dodajem im rutie za auto test i biljezenje potrebnih podataka u mem pa ih kasnije analiziram.To mi se pokazalo puno bolje u praksi od suhoparnih simulatora koji ionako nemogu simulirat sve nepredvidive dogadjaje [ to sam stekao radeci emulatore za sat tv].Cesto sam znao rec friendu da je za dobar program potrebno da covijek pozna "dusu" stroja za kojeg pise program sve ostalo su pricice, i sto je bolje poznaje ima sanse da mu kod bude kraci , efikasniji i naravno jednostavan bez kompliciranih "skakutanja" uokolo .To nemoze nadoknadit nikakv novac ulozen i u ponajbolje crosscompilere , imao sam prilike radit redukciju koda koji je generiran takvim ne bas jeftinim SW.Ali ti radi onako kako mislis da ti najboje ide , ako mislis radit "jednostavnije" FW [ bez kriticne brzine izvodjenja operacija] nije bas nuzno da odes u assembler iako bih ga svakom preporucio cak i za FW za paljenje i gasenje "lampica" jer se od necega mora pocet cak i u assembleru.
@Trax upotrebom I2C mozes oslobodit i dio prg memorije ne bas tako mali , a koliko vidim ni TX/RX sa GSMa bas nije dvosmijerni [ u isto vrijeme] vec ili /ili a to znaci da bi se i tamo mogao postavit otpornik i dioda[bat46/ moze i 1N4148] , to je zapravo obican "mixer" koji dva voda spaja u jedan. Mislis 1024 rijeci [ 2KB] ! prg memorije.
Posto je u textu spomenut GPS na jednom od portova , kao opcija, sjetio sam se jednog frienda koji je to rijesio upotrebom net monitira na GSMu u objektu koji se "prati" !! Rijec je bila o tome da cuvari jahti ipak mogu bit "upozoreni" dal je brod "zaplovio " ili je na vezu. Tu nije bila bitna jako tocna pozicija broda [iako se triangulaciom moze dobit zadovoljavajuca tocnost upotebom net monitora].I to je naravno bez dodatne elektronike.
"Nije mi jasno kako bi netko mogao programirati u asembleru a da u svakom trenutku ne zna sta radi bez gledanja u bilo kakav dijagram ili bilo sta slicno. "
Pa rekao sam ti da ja zaista sve drzim u glavi i kad si s assemblerom na "ti" onda su ti je pisanje naredbi u njemu kao da s nekim razgovaras jednostavno pises [ za pic seriju sam malo i zahrdjao ali mogu se brzo vratit] . Kad pisem program obicno prvo pisem ini rutinu zatim podprograme a glavni tok pisem i modificiram u odnosu na rijesenja koja sam koristio u podprogramu . Obicnio na pocetku definiram registre mapu srama i makro naredbe koje su "opceg " karktera .Oznacavam glavne "raskrsnice" jer kod vecih FW ipak je to nuzno radi preglednosti , da znam sto sam sve napisao.
Pa dali je 6MHz dovoljan ili nije ovisi o bloku podataka koji primamo tj njegovoj max velicini i sto zapravo trebamo uradit s podacima , dal samo trazimo spec podatak i sto radimo kad ga nadjemo i kad se zbroje utroseni ciklusi dobije se s kojim min vremenom raspolazemo [ za odgovor] a to odredjuje min freq operativnog dijela programa. Ovako jedan primjer , irdeto emulator ima vremena oko 8-10s za odgovor [ to sto je bitrate 9600 nije vazno] da bi izracunao i poslao DW , s time da mora detektirat tip naredbe , nac dal ima pid u ext I2C eepromu , ako ima nac u naredbi koji kljuc treba , taj kljuc pronac u I2C mem upisat ga u sram , izvrsit provijeru potpisa [ najzahtijevniju operaciju , po broju ciklusa] zatim provjerit rezultat hash buffera sa pristiglim potpisom iz naredbe , i ako je sve OK izracunat DW 2x po 8 bita isto tako opracija sa poprilicnim brojem ciklusa u tisucama. I taj isti PIC 16F84 sve to stigne odradit na 6 MHz , slicna je stvar i sa drugim sustavima 1 generacije samo sto oni koriste jos manju takt freq [ 3,57MHz].Ako sad usporedimo samo povrsno broj ciklusa koje treba odradit FW o kojem govorimo to je tisuce X manje samo od provijere potpisa.
"Ukoliko ne dodje bilo kakav podatak u nekoliko sekundi - to znaci da imamo gresku u komunikaciji sa telefonom i program krece od inicijalizacije "
Ocito je da mi imamo situaciju da sami odredjujemo koliko ce MCU cekat na prijavu greske i ponovit postupak prijave!!!
A to u prijevodu znaci da bilo koji kristal s kojim mozemo dobit bitrate 38400 moze bit "u igri".A pojam nekoliko sekundi je sto tocno 3, 5, 8...?
ako je na 6MHz 1 cyklus 700nS zamisli koliko je to operacija u tih "par" sekundi .To i je poanta dijela ove nase diskusije izmedju ostalog , brzina komunikacije i min brzina izvodjenja operacija nisu isti pojmovi i one se definiraju odmah na pocetku prije izrade samog programa uglavnom , bar ugrubo. Sad ja ne kazem da nacin na koji si ti rijesio problem nije dobar , on se drzi one sigurno je sigurno , od viska glava ne boli kao sto si i rekao!!! I sve je to ok ali za ubuduce bi bilo dobro da prije pocetka pisanja koda znas potrebno max vrijeme ciklusa , jer ti se moze desit da kod vremenski kriticnih operacija [ u nekom buducem FW] odes u dva pravca
1. da zbog razloga vec navedenog uzmes "mocniji" stroj , radi sigurnosti
, jako cest slucaj !
2. da udjes u zacarni krug trazenja nepostojece greske u kodu puno rijedje
Optimizacija koda , pa neznam da se bas to uopce nekom dogadja da mu netreba "pregled" i optimizacija koda , neki put jednostavno se dogodi da covijek vidi puno bolju ideju a najcesce je to slucaj bar iz mog iskustva ka se nadogradjuje neki vec gotov FW.Ja sam cak znao radeci na nekim "istrazivackim" projektima u ponasanju MCUa preslozit sve naglavacke i to kad sam vec gotvo bio zavrsio FW spreman za test.
To nije nista neobicno , mozda onima koji su nauceni da misle tudjom glavom , a toga ima i najcesce je financirano od samih kompanija.Vijerojatno si to primjetio i sam.
Pa i meni slicno kao i tebi kad se vracam na neki stari FW treba malo da se prisjetim "sto je pijesnik htio reci" . A to i nje lose , jer meni je zao ljudi koji svoj vlastiti FW nemogu "odgonetnut" iako imaju source code bez detaljne dokumentacije a to cesto znaci da bas i ne razumiju ono na cemu su radili.
Pozdrav
@Trax upotrebom I2C mozes oslobodit i dio prg memorije ne bas tako mali , a koliko vidim ni TX/RX sa GSMa bas nije dvosmijerni [ u isto vrijeme] vec ili /ili a to znaci da bi se i tamo mogao postavit otpornik i dioda[bat46/ moze i 1N4148] , to je zapravo obican "mixer" koji dva voda spaja u jedan. Mislis 1024 rijeci [ 2KB] ! prg memorije.
Posto je u textu spomenut GPS na jednom od portova , kao opcija, sjetio sam se jednog frienda koji je to rijesio upotrebom net monitira na GSMu u objektu koji se "prati" !! Rijec je bila o tome da cuvari jahti ipak mogu bit "upozoreni" dal je brod "zaplovio " ili je na vezu. Tu nije bila bitna jako tocna pozicija broda [iako se triangulaciom moze dobit zadovoljavajuca tocnost upotebom net monitora].I to je naravno bez dodatne elektronike.
"Nije mi jasno kako bi netko mogao programirati u asembleru a da u svakom trenutku ne zna sta radi bez gledanja u bilo kakav dijagram ili bilo sta slicno. "
Pa rekao sam ti da ja zaista sve drzim u glavi i kad si s assemblerom na "ti" onda su ti je pisanje naredbi u njemu kao da s nekim razgovaras jednostavno pises [ za pic seriju sam malo i zahrdjao ali mogu se brzo vratit] . Kad pisem program obicno prvo pisem ini rutinu zatim podprograme a glavni tok pisem i modificiram u odnosu na rijesenja koja sam koristio u podprogramu . Obicnio na pocetku definiram registre mapu srama i makro naredbe koje su "opceg " karktera .Oznacavam glavne "raskrsnice" jer kod vecih FW ipak je to nuzno radi preglednosti , da znam sto sam sve napisao.
Pa dali je 6MHz dovoljan ili nije ovisi o bloku podataka koji primamo tj njegovoj max velicini i sto zapravo trebamo uradit s podacima , dal samo trazimo spec podatak i sto radimo kad ga nadjemo i kad se zbroje utroseni ciklusi dobije se s kojim min vremenom raspolazemo [ za odgovor] a to odredjuje min freq operativnog dijela programa. Ovako jedan primjer , irdeto emulator ima vremena oko 8-10s za odgovor [ to sto je bitrate 9600 nije vazno] da bi izracunao i poslao DW , s time da mora detektirat tip naredbe , nac dal ima pid u ext I2C eepromu , ako ima nac u naredbi koji kljuc treba , taj kljuc pronac u I2C mem upisat ga u sram , izvrsit provijeru potpisa [ najzahtijevniju operaciju , po broju ciklusa] zatim provjerit rezultat hash buffera sa pristiglim potpisom iz naredbe , i ako je sve OK izracunat DW 2x po 8 bita isto tako opracija sa poprilicnim brojem ciklusa u tisucama. I taj isti PIC 16F84 sve to stigne odradit na 6 MHz , slicna je stvar i sa drugim sustavima 1 generacije samo sto oni koriste jos manju takt freq [ 3,57MHz].Ako sad usporedimo samo povrsno broj ciklusa koje treba odradit FW o kojem govorimo to je tisuce X manje samo od provijere potpisa.
"Ukoliko ne dodje bilo kakav podatak u nekoliko sekundi - to znaci da imamo gresku u komunikaciji sa telefonom i program krece od inicijalizacije "
Ocito je da mi imamo situaciju da sami odredjujemo koliko ce MCU cekat na prijavu greske i ponovit postupak prijave!!!
A to u prijevodu znaci da bilo koji kristal s kojim mozemo dobit bitrate 38400 moze bit "u igri".A pojam nekoliko sekundi je sto tocno 3, 5, 8...?
ako je na 6MHz 1 cyklus 700nS zamisli koliko je to operacija u tih "par" sekundi .To i je poanta dijela ove nase diskusije izmedju ostalog , brzina komunikacije i min brzina izvodjenja operacija nisu isti pojmovi i one se definiraju odmah na pocetku prije izrade samog programa uglavnom , bar ugrubo. Sad ja ne kazem da nacin na koji si ti rijesio problem nije dobar , on se drzi one sigurno je sigurno , od viska glava ne boli kao sto si i rekao!!! I sve je to ok ali za ubuduce bi bilo dobro da prije pocetka pisanja koda znas potrebno max vrijeme ciklusa , jer ti se moze desit da kod vremenski kriticnih operacija [ u nekom buducem FW] odes u dva pravca
1. da zbog razloga vec navedenog uzmes "mocniji" stroj , radi sigurnosti
, jako cest slucaj !
2. da udjes u zacarni krug trazenja nepostojece greske u kodu puno rijedje
Optimizacija koda , pa neznam da se bas to uopce nekom dogadja da mu netreba "pregled" i optimizacija koda , neki put jednostavno se dogodi da covijek vidi puno bolju ideju a najcesce je to slucaj bar iz mog iskustva ka se nadogradjuje neki vec gotov FW.Ja sam cak znao radeci na nekim "istrazivackim" projektima u ponasanju MCUa preslozit sve naglavacke i to kad sam vec gotvo bio zavrsio FW spreman za test.
To nije nista neobicno , mozda onima koji su nauceni da misle tudjom glavom , a toga ima i najcesce je financirano od samih kompanija.Vijerojatno si to primjetio i sam.
Pa i meni slicno kao i tebi kad se vracam na neki stari FW treba malo da se prisjetim "sto je pijesnik htio reci" . A to i nje lose , jer meni je zao ljudi koji svoj vlastiti FW nemogu "odgonetnut" iako imaju source code bez detaljne dokumentacije a to cesto znaci da bas i ne razumiju ono na cemu su radili.
Pozdrav
Interesuje me kako je pristupio NET Monitoru na udaljenom telefonu? Ne mogu da nadjem niti AT komandu niti bilo koji drugi nacin. Znaci, trebalo bi nekako iscitati te podatke recimo spajanjem mikrokontrolera na telefon i provjeravati jacine signala - to nije bitno u ovom trenutku, i ukoliko se zadovolji neki uslov kontaktirati udaljeni telefon.
Zaista neznam detalje nisam ga ni pitao ali dodatne elektronike nije bilo , to znam.Jedino sto je potrebno imat mapu baznih stanica sa siframa da bi se znalo odakle su ta 3 signala poslana i tako mogao pratit polozaj.Nego gledajuci ovaj tvoj FW mozda nebi bilo lose da se fixni odgovori tabeliraju i na taj nacin iscitavaju i salju u port . Poslat cu ti jedan prijedlog ako te bude zanimao , rutina koje to mogu odradit i ustedjet dio memorije za nesto drugo .
Pozdrav
Pozdrav