Gsm otvaranje putem besplatnog poziva

Sve vezano za mikrokontrolere

Moderators: pedja089, stojke369, [eDo], trax

User avatar
DaTi
Odlično uznapredovao
Odlično uznapredovao
Posts: 730
Joined: 10-06-2007, 13:24
Location: Novi Sad - Srbija
Contact:

Post by DaTi »

Pozz Svima!! :)

Probao sam da vidim kako radi program mod uredjaja i neradi kako valja...imam negde gresku u kodu, pa moram da je otklonim e sad zamolicu nekog kome je interesuje ovaj projekat da mi pomogne ako moze, pedja otisao u bg... pa nema ko... :) za sada tako da ako neko poznaje pic basic pro nek pomogne ako hoce :) evo sta sam ja napravio do sad.... sagradio sam uredjaj napisao nesto koda.... okacicu konacnu semu, program za pc (verovatno konacan),pcb....

Code: Select all

'************Mod za programiranje uredjaja************   
program_mod:
d6 = 1 
'pali diodu za pg. mod

serin d1,4,4000,program_mod,["d"],u[1],u[2],u[3],u[4],u[5],u[6],u[7],u[8],u[9],u[10],u[11],u[12],u[13],u[14],u[15],u[16],u[17],u[18],u[19],u[20],u[21],u[22],u[23],u[24],u[25]
'Ceka na ulaz podataka od pc 

i2cwrite sda,scl,$a0,0,u[1],u[2],u[3],u[4],u[5],u[6],u[7],u[8],u[9],u[10],u[11],u[12],u[13],u[14],u[15],u[16],u[17],u[18],u[19],u[20],u[21],u[22],u[23],u[24],u[25]
'primljene podatke snima u eprom od pocetne adrese 0

serout d0,4,["o"]
'ukoliko je sve uredu poslace o na pc
 
goto program_mod
'************kraj moda za programiranje uredjaja************
To je deo koda koji dobijene podatke d pc snima u eprom dali neko moze da mi kaze de je greska?

http://www.elektronika.ba/forum/uploadz ... _parts.gif

http://www.elektronika.ba/forum/uploadz ... troler.rar
User avatar
LIAM
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 379
Joined: 27-06-2008, 14:52
Location: Rijeka - Hrvatska

Post by LIAM »

pozdrav

tako je DaTi spjoio sam K610 preko usb kabela i otvorio HT a mobitel postavio u modem mod način rada
nakon toga sam slao AT komande iz HT na mob a on je slao odgovore OK, ERROR, NO CARIER i neke brojeve zavisno od AT komande
kada sam ga nazvao u HT se pojavila poruka RING a onda sam prko AT komande napravi da kad nazovem mob u HT dobijem poruku RING + broj pozivatelja + ime iz imenika
čitao sam da dosta ima veze brzina moba i clock od PICa
User avatar
DaTi
Odlično uznapredovao
Odlično uznapredovao
Posts: 730
Joined: 10-06-2007, 13:24
Location: Novi Sad - Srbija
Contact:

Post by DaTi »

Dobro to za sony ericson ajde probaj da uzmes max232 i da onda saljes AT komande ali sa starijim telefonom npr. c25 ili tako neki....
User avatar
ShOkRe
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 468
Joined: 10-01-2007, 20:55
Location: Pula

Post by ShOkRe »

ma ok ti je to sa 16f84, ali taj je pic stak ko lampa pl500....
uzmes recimo 16f627 (ili628A duplo flasha) i onda ti ne treba eeprom, a i uart je hardverski tako da se sve ljepse vrti, da ne pricam da ti netreba ni kristal jer imas interni klok, i jos je ljepse sto kosta 20kn....
malo zajebava dok ne skuzis kako pogasiti komparatore i ostalu nepotrebnu gamad, ali onda su ti na raspolaganju i AD konvertori (temperatura, napon baterije ili sl) koje nema 84-ka.... tako da ne vidim ni jedan adut za koristenje 84-ke koja je vec tesko nabavljiva a i skupa (samo zato sto je naj prodavanija) a ne vrijedi po ničemu....
627 je pinkompatibilan pa netreba nesto previse modificirati..... osim sto treba toliko komponenti (nista) da stane u poklopac mobitela :-) dakle imas mobitel i na ledjima sa selotejpom zaljepljen rele :-)
User avatar
ShOkRe
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 468
Joined: 10-01-2007, 20:55
Location: Pula

Post by ShOkRe »

' EVO TI NEKI TESTER NA BRZAKE...
' NEMAM TI NA CEMU PROBAT PA VIDI AKO RADI....
' ETO KORISTIO SAM SEROUT2 KOJI JE PUNO MOCNIJI NEGO OBICNI SEROUT....
'NAJCESCI MODOVI SERIN ILI SERIN2

'T2400 0 2400 Driven True
'T1200 1 1200 OVO JE AKO IMAS MAX 232 ILI NEKAKAV INVERTER NPR 7404
'T9600 2 9600
'T300 3 300
'
'N2400 4 2400 Driven Inverted
'N1200 5 1200 OVO JE BEZ, SAMO OTPORNICI
'N9600 6 9600
'N300 7 300


'DEFINOVI:

define OSC 4 ' ILI KOLIKO JE VEC....


'definiramo konstante I simbol_linkoveDUZINA con 10
STISNUT con 1
BOTUN var PORTB.0 '' (npr) switch na + a otpor 4k7 prema masi (npr)
SIN_PIN var PORTB.1 ' sa ovog pina otpor od 22K na pc TX
SOUT_PIN var PORTB.2 ' sa ovog pina otpor od 1K na pc RX
LED var PORTB.3 ' ledica za nekakvu indikaciju
BOUDRATE con 4 ' koji modalitet cemo koristiti N2400
'definiramo varijable
A var byte
DUGO var byte
STRING var byte[DUZINA] '
tmp var byte '


loop:
'jeli dugme stisnuto vise od 2.5s onda prg mode....
if BOTUN = STISNUT then
DUGO = DUGO + 1
if DUGO > 250 then PROG_MODE
else
DUGO = 0
endif
pause 100
tmp = tmp + 1
if tmp > 200 then
tmp = 0
LED = 1
serout2 SOUT_PIN, BOUDRATE, ["DA SE JAVIM SVAKO TOLKO...",13,10]
LED = 0
endif

goto loop


PROG_MODE:
DUGO = 0
serout2 SOUT_PIN, BOUDRATE, ["USAO U TEST MODE",13,10] 'TEXT,CR,LF
LED = 1
pause 2000
LED = 0
for A = 1 to DUZINA
serout2 SOUT_PIN, BOUDRATE, ["PROBA ",dec A,".-VI PUT",13,10]
next A
goto loop


UF UBIJE MU FORMU OVAJ FORUM... DA BAREM IMA PASTE HTML....

Code: Select all

' EVO TI NEKI TESTER NA BRZAKE...
' NEMAM TI NA CEMU PROBAT PA VIDI AKO RADI....
' ETO KORISTIO SAM SEROUT2 KOJI JE PUNO MOCNIJI NEGO OBICNI SEROUT....
'NAJCESCI MODOVI SERIN ILI SERIN2

'T2400 0 2400 Driven True 
'T1200 1 1200 OVO JE AKO IMAS MAX 232 ILI NEKAKAV INVERTER NPR 7404
'T9600 2 9600 
'T300  3 300
' 
'N2400 4 2400 Driven Inverted
'N1200 5 1200 OVO JE BEZ, SAMO OTPORNICI
'N9600 6 9600
'N300  7 300
 

'DEFINOVI:
define OSC 4 ' ILI KOLIKO JE VEC....


'definiramo konstante I simbol_linkove
DUZINA   con 10  
STISNUT  con 1
BOTUN    var PORTB.0         '' (npr) switch na + a otpor 4k7 prema masi (npr)
SIN_PIN  var PORTB.1          ' sa ovog pina otpor od 22K na pc TX
SOUT_PIN var PORTB.2          ' sa ovog pina otpor od 1K na pc RX
LED      var PORTB.3          ' ledica za nekakvu indikaciju
BOUDRATE con     4             ' koji modalitet cemo koristiti N2400
'definiramo varijable
A       var byte
DUGO    var byte
STRING 	var byte[DUZINA]      '
tmp     var byte                 '


loop:
   'jeli dugme stisnuto vise od 2.5s onda prg mode....   
   if BOTUN = STISNUT then 
        DUGO = DUGO + 1      
        if DUGO > 250  then PROG_MODE
   else
      DUGO = 0  
   endif
   pause 100
   tmp = tmp + 1
   if tmp > 200 then
        tmp = 0
        LED = 1
        serout2 SOUT_PIN, BOUDRATE, ["DA SE JAVIM SVAKO TOLKO...",13,10]
        LED = 0
   endif
   
goto loop   
   
   
PROG_MODE:
    DUGO = 0
    serout2 SOUT_PIN, BOUDRATE, ["USAO U TEST MODE",13,10] 'TEXT,CR,LF
    LED = 1
    pause 2000
    LED = 0
    for A = 1 to DUZINA
        serout2 SOUT_PIN, BOUDRATE, ["PROBA ",dec A,".-VI PUT",13,10]
    next A
goto loop
DA PROBAM OVAKO ?
evo ovaj example u biti ne radi nista, nego je to odgovor na pitanje dati-ja sa pm-a (ako nije bed sto sam ovdje postao, i ako uopce taj pm ima veze s ovim postom)
User avatar
DaTi
Odlično uznapredovao
Odlično uznapredovao
Posts: 730
Joined: 10-06-2007, 13:24
Location: Novi Sad - Srbija
Contact:

Post by DaTi »

pa i ima i nema... :) ali nadam se da ce posluziti... sacu da probam pa cu javiti. Hvala za pomoc : )
User avatar
ShOkRe
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 468
Joined: 10-01-2007, 20:55
Location: Pula

Post by ShOkRe »

eh žebajga, onda cemo nastaviti po PM-u :-(

cujemo se...
User avatar
ShOkRe
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 468
Joined: 10-01-2007, 20:55
Location: Pula

Post by ShOkRe »

ili npr ?

Image
User avatar
DaTi
Odlično uznapredovao
Odlično uznapredovao
Posts: 730
Joined: 10-06-2007, 13:24
Location: Novi Sad - Srbija
Contact:

Post by DaTi »

ShOkRe ja onaj kod probao i neradi jos sam dodao input i output za pinove evo pa vidi.... a kakv ti je to screen od kog proga?

Code: Select all

define OSC 4 'definisi kristal od 4 mhz

TASTER var PORTB.1      ' PG. taster
SOUT_PIN var PORTA.2    ' sa ovog pina otpor od 1K na pc RX
LED var PORTB.5         ' ledica za nekakvu indikaciju
LED2 VAR PORTB.4        ' ledica 2

BOUDRATE con 4 ' N2400 brzina

output PORTB.4  ' postavljam portb.4 na izlazni
output PORTA.2  ' postavljam porta.2 na izlazni
output PORTB.5  ' postavljam portb.5 na izlazni
input PORTB.1   ' postavljam portb.1 na izlazni


PORTA = 0  ' na svim pinovima porta je 0
PORTB = 0  ' na svim pinovima portb je 0

' varijable
tmp var byte 


loop: ' Pocetak pod programa  loop

if TASTER = 0 then call PROG_MODE  ' ako je pritisnut taster bezi u program mod
pause 100 ' pauza od 100 mS
tmp = tmp + 1  ' ovo sa tmp nisam skontao zasta je :)
if tmp > 200 then
tmp = 0
LED = 1  ' pali led diodu
serout2 SOUT_PIN,BOUDRATE, ["Samo pisi nesto",13,10] ' sad bi trebao da posalje na pc
LED = 0  ' gasi  led diodu
endif

goto loop ' idi na pocetak pod programa loop


PROG_MODE:  ' Pocetak pod programa  PROG_MODE

serout2 SOUT_PIN,BOUDRATE, ["upao je u pg. mod",13,10]'kad udje u pg mod zvekne ovo na komp 
LED2 = 1 ' pali ledicu za pg mod
pause 2000 ' pauza od 2 sekunde
LED2 = 0 ' gasi ledicu
serout2 SOUT_PIN,BOUDRATE, ["test",13,10]'ovo radi reda

goto loop ' idi na pocetak pod programa loop

END ' the end
User avatar
ShOkRe
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 468
Joined: 10-01-2007, 20:55
Location: Pula

Post by ShOkRe »

1. posto na poslu nemam vb/vbexpres2008.net ili sl, onda sam u excelu (VBA) napravio formu, u biti i tako mozes distribuirati aplikaciju, bez kompiliranja... :-) nakacis se na comctl32.ocx i piči...
nekakvom kalkulacijom sam došao da bi u eeprom od 256 bajta stalo 32 telefonska broja, sto je dovoljno za potrebe manjih aplikacija ovog uređaja. (ovo ne vrijedi za 16f84 (kantu))

2. tmp sam stavio da prilikom pritiska tipke neide odmah u prg, nego tek kad zadrzis 2,5 sec... a na običan (kratki) strisak moguce je staviti nekakvu test sekvencu, ili npr provjera kredita i slanje ili xyz...
kako si izbacio tu funkciju, mozes slobodno obrisati sve vezano uz tmp..

3. ovo bi moralo raditi, ako ne onda provjeri fuse-ove, vec drugi put mislim da nisu dobro skureni...
posto nikad nisam radio sa trako slabim picem, iso sam malo pogledati pa on i nema nekih fuseova, samo kristal stavi na HS ako nisi, i nemo zasticavati kod, a i wdog ugasi netreba ti....
vidio sam da ima 64Bajta eeprom, sto znaci stane 8 tel. brojeva u interni...

inace i/o mozes definirati sa tris registrima... npr:
TRISA=%00001111 ' bit o do 3 input 4-7 out.. (1kao in, 0 kao out)
ili TRISA.1 = 1 isto kao i input porta.1

imas li za taster pulup otpor ili si enejblao weak_poolup (ugrdjene otpore u picu na portu b to se radi sa registrom)
[quote=MCP_datasheet]bit 7 RBPU: PORTB Pull-up Enable bit
1 = PORTB pull-ups are disabled
0 = PORTB pull-ups are enabled by individual port latch values[/quote]


inace nisam skuzio sa cime radis, koji programmer, koji softver, i dali ti ako neradi komunikacija uopce blica ledica ?
User avatar
DaTi
Odlično uznapredovao
Odlično uznapredovao
Posts: 730
Joined: 10-06-2007, 13:24
Location: Novi Sad - Srbija
Contact:

Post by DaTi »

taster je na pull....udje on u program mod i sve to... vidim svetli crvena dioda led2 u programu, tmp cu obrisati....znaci mene samo interesuje ta komunikacija izmedju pc i pic to mi je sad naj veci problem serin sam skontao kad sam pravio 10 kanalni interfejs sa pic, verovatno cu ohih dana naruciti pic16f629 to mi je potrebno, eprom pica 16f84 je degenerican i glupav ja zapisem stanje u njega i vidim u ic-progu da je zapisan i nemogu nikako da ga ocitam.... mada sam stavio dodatni eprom da se nemesa sa ostatkom... :) oda spftwer za pc to mi je jednostavno to nije problem i ShOkRe ja sam u ovom uredjaju hteo samo da jedan broj bude master a ne vise njih zato sto mi tako jednostavnije a onako bi se izgubio u kodu... a ovo neide mi u glavu zasto neradi.... serin radi a serout neradistvarno mi neide u glavu zasto znaci otvorim u vb port

Code: Select all

Private Sub Form_Load()

With MSComm1
.Settings = "2400,n,8,1"
.CommPort = 1
.PortOpen = True
.InputLen = 0
End With

End Sub

Private Sub Timer1_Timer()
Text1.Text = MSComm1.Input
End Sub

to je kod iz vb kojih hvatam sa rx od seriskog... a sta je taj fuse?
User avatar
DaTi
Odlično uznapredovao
Odlično uznapredovao
Posts: 730
Joined: 10-06-2007, 13:24
Location: Novi Sad - Srbija
Contact:

Post by DaTi »

hhehe ipak znam sta su fjuzvi znaci stavio sam na hs oscilator, wdt sam ugasio, cp sam ugasio, pwrt sam ostavio upaljenog... i isprogramirao sam pic i opet nis...
User avatar
ShOkRe
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 468
Joined: 10-01-2007, 20:55
Location: Pula

Post by ShOkRe »

fuse (osiguraci) se zovu registri koji se postavljaju prilikom programiranja pica, mozes ih postaviti u programu za programiranje ili u sourceu, tada se programer(najcesce) drzi zadanog...
u tvom je slucaju bitno da kristal bude na hs, drugo je nebitno....

ali kakomi tek sad kazes da se ledica pali, odmah prelazimo na vb porciju, cini mi se da si definirao on timer_event, ali imas i on comm_evente pogledaj...
i zasto je input len 0 ?

ja bih ti savjetovao da se za pocetak igras sa hyperterminalom, probaj flow_control stavljati na off (iako to nebi trebalo mjenjati na stvari)
ako ti bajtovi dolaze u HT.. onda znas di je problem....

mislim da ti kood radi, al te negdje drugdje zajebava....

ono sto kazes neradi serout ali radi serin... zato jer sa kod slanja u vb-u nemas sto raditi, posaljes i to je to, ali kod primanja treba hendlati buffer, i procesirati po eventima ili kontinuirano...

ali on timer event, nije bas najsretniji nacin...
vidjet ces kad nadjes gresku u svom kodu...
nism dugo nistqa radio u vb-u pa sam malo zaboravio mscomm registre i evente... otvori kakav source od nekog terminala pa vidi kako to ekipa radi....
User avatar
DaTi
Odlično uznapredovao
Odlično uznapredovao
Posts: 730
Joined: 10-06-2007, 13:24
Location: Novi Sad - Srbija
Contact:

Post by DaTi »

znaci ja kaontam ti si napisao dok radi ledica on salje.... podatke na pc a kad se iskljuci trebalo bi da je poslao jel? znaci bez problema on meni ulazi u program mod... to je ok, a sad se trebam jos poihrati sa ovim sto si napisao, koristicu ht, jel trebam u ht kod onih stop bit , parity, data bits, flow control.. ? jel tu trebam nes da izmenim?

EDIT:
Prietio sam u ht da kad radi led dioda (valjda onda salje nesto) onaj urzor radi brze, a kad nesvetli nessalje onda sporije....
User avatar
ShOkRe
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 468
Joined: 10-01-2007, 20:55
Location: Pula

Post by ShOkRe »

eto, vidio si da radi, ko zna otkad još :-)

to sa kursorom, ma nemoj sitničariti (ne kuzim zasto bi, mozda je vaptička orka?)

nego kad ce nesto funkcionalno ?

evo meni cesto treba nekakva komunikacija izmedju vb-a i pica., i uvjek me rasturi taj dio, toliko vremena uzume, da proradi kako treba, da sam ljen uopce opet uskakati u to....

izmedju ostalog u vb-u osim mscomctl32.ocx ima jos mogučnosti za komunikaciju preko coma iako je ova najrasprostranjenija, i po defaultu postoji, ali ima nekakve lose navike, taj buffer je nekako neinteraktivan(nesamostalan), pa neki specijalni karakteri tipa EOL koje sam pokusavao koristiti za nekakvu interakciju sobzirom da sa 2zice+gnd nemas flow-control, eh onda je zgodno postaviti i neki crc ili verify write, pa se toga nakupi....

bio bih najsretniji kad bi nasao nekakvu open_sorce soluciju mozda na mcp_siteu ima, nisam ni orao....

sto se tice HT-a napisao sam ti samo stavi flow na none, ostalo ostaje...
eventualno echo ugasis ako ne zelis da ti pokazuje tvoje karaktere, ali to vec znas....

inace oni 10, i 13 znas sta su... pa tako tu ima masa drugih specijalnih karaktera, skini si ascii tabelu....

eh sad, da kazes sto telefon pokaki kad ga nazovu; jel to nesto kao "CALL 012345678" ili samo nesto glupo, pa ga moras provocirati da ti kaze tko zove ?
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Post by pedja089 »

koliko ja znam taj fazon sa otpornikom prolazi samo kada je upitanje slanje podataka sa pc na pic, ali ne i obrnuto, jer je ne definisano stanje izmedju 3V i -3V na seriskom.
stoga da bi seriski prepoznao nesto kao logicki jednicu treba dovesti napon nizi od -3V sto je ne izvodljivo preko jednog otpornika...
User avatar
ShOkRe
Pravo uznapredovao :)
Pravo uznapredovao :)
Posts: 468
Joined: 10-01-2007, 20:55
Location: Pula

Post by ShOkRe »

ma ide to bez beda... kao i kad umjesto max232 stavis 7804 ili bilo koji inverter (ako koristis hardverski serijalac koji nema invert_mode)

ne radi na nekim laptopima, i nekim bubama (usb), ali po defaultu radi, i za napomenuti je da to nikako nije profesionalno rijesenje, ali za ovakve stvari, di ces bolje ako jedan max232 manje....

inace ima i fora sa dvije kaskade (za + i -) za koje se sa par dioda uzima sa picovog pwm-a puls i pune kondici, onda sa dva(ili vise) tranzistora pravi pravi rs232c naponski.... al koga je briga za naponske standarde ako radi :-)
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Post by pedja089 »

kod mene nece, a ocigledno i kod da ti ne radi...
ni ja nisam ljubitelj standarda, ali ovo ocigledno ne prolazi svuda...
User avatar
DaTi
Odlično uznapredovao
Odlično uznapredovao
Posts: 730
Joined: 10-06-2007, 13:24
Location: Novi Sad - Srbija
Contact:

Post by DaTi »

Evo proradilo je :D :D :D :D :D :D :D :D

Code: Select all

@ DEVICE HS_OSC,WDT_OFF,PROTECT_OFF
define OSC 4 'definisi kristal od 4 mhz

    IZLAZ var PORTA.2 ' imenuje porta.2 kao izlaz
    BPS con 0'ako ide max232  onda se uzimaju one vrednosti sa t sad t2400
    
    output PORTA.2  ' postavljam porta.2 na izlazni
    
Glavni: 'glavni pod program
    serout IZLAZ,BPS,["Test"] 'postavljeno je da salje test na rx od kompa
    pause 1000 'pauza od 1 sekunda tj. 1000 mS
goto glavni 'vraca se na pocetak pod programa loop
end 'kraj

Hvala ShOkRe i pedja089 na pomoci :) sad mozemo dalje sa projektom posto smo otisli u off.
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7871
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Post by pedja089 »

samo ovo radi sa maxom...
Post Reply