www.elektronik.si Seznam forumov www.elektronik.si
Forum o elektrotehniki in računalništvu
 
 PomočPomoč  IščiIšči  Seznam članovSeznam članov  SkupineSkupine  StatisticsStatistika  AlbumAlbum  DatotekeFilemanager DokumentacijaDocDB LinksPovezave   Registriraj seRegistriraj se 
  PravilaPravila  LinksBolha  PriponkePriponke  KoledarKoledar  ZapiskiZapiski Tvoj profilTvoj profil Prijava za pregled zasebnih sporočilPrijava za pregled zasebnih sporočil PrijavaPrijava 

GSM pic mikrokontroler
Pojdi na stran 1, 2, 3  Naslednja
 
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Elektronika
Poglej prejšnjo temo :: Poglej naslednjo temo  
Avtor Sporočilo
vili
Član
Član



Pridružen-a: Ned 30 Maj 2004 16:37
Prispevkov: 64
Aktiv.: 0.27
Kraj: Ljubljana

PrispevekObjavljeno: Sob Apr 29, 2006 9:50 pm    Naslov sporočila:  GSM pic mikrokontroler Odgovori s citatom

Vem da je bilo o tem že veliko govora a vseeno. S pomočjo pic mikrokontrolerja bi rad pošiljal ter bral sms sporočila z gsm telefona. Za to bi najraje uporabil staro regljo. Če je že kdo kaj delal s tem bi prosil za kakšen nasvet kako začeti, ali pa link do uporabnih strani.

LP
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 23.57

PrispevekObjavljeno: Sob Apr 29, 2006 9:55 pm    Naslov sporočila:   Odgovori s citatom

Na forumu Sveta Elektronike je bilo pred kratkim precej govora tem, v reviji pa je Vilko tudi napisal nekaj clankov o tej tematiki (sicer za 8051, a koncept je povsem enak, ne glede na izbiro mikrokontrolerja). Uporabi iskanje.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
vili
Član
Član



Pridružen-a: Ned 30 Maj 2004 16:37
Prispevkov: 64
Aktiv.: 0.27
Kraj: Ljubljana

PrispevekObjavljeno: Pet Maj 05, 2006 8:17 pm    Naslov sporočila:   Odgovori s citatom

Rad bi samo vzpostavil komunikacijo med picem in ga628. Če pošljem ukaz z računalnika npr AT se le ta odzove in odgovori z OK. Zanima pa me zakaj mi to ne deluje ko pošljem ukaz mikrokontrolerja.
Hitrost komunikacije sem pravilno nastavil, ukaz pa pošljem z:
printf("AT");

LP
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Djurodrljaca
Član
Član



Pridružen-a: Pet 19 Dec 2003 16:31
Prispevkov: 393
Aktiv.: 1.66
Kraj: Mengeš

PrispevekObjavljeno: Pet Maj 05, 2006 9:15 pm    Naslov sporočila:   Odgovori s citatom

Treba je še poslati <CR> znak (v C '\r'). To ti vnese v hyperterminalu ko pritisneš enter.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
mujo
Član
Član



Pridružen-a: Ned 02 Jan 2005 19:24
Prispevkov: 746
Aktiv.: 3.15
Kraj: MB

PrispevekObjavljeno: Pet Maj 05, 2006 9:58 pm    Naslov sporočila:   Odgovori s citatom

Djurodrljaca je napisal/a:
Treba je še poslati <CR> znak (v C '\r'). To ti vnese v hyperterminalu ko pritisneš enter.

Poslati treba \n\r ali samo \r?
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
Djurodrljaca
Član
Član



Pridružen-a: Pet 19 Dec 2003 16:31
Prispevkov: 393
Aktiv.: 1.66
Kraj: Mengeš

PrispevekObjavljeno: Sob Maj 06, 2006 6:59 am    Naslov sporočila:   Odgovori s citatom

Oblika AT ukaza je: AT.......<CR> ("AT.......\r")

Oblika odgovora pa: <CR><LF>.........<CR><LF> ("\r\n.........\r\n")
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
vili
Član
Član



Pridružen-a: Ned 30 Maj 2004 16:37
Prispevkov: 64
Aktiv.: 0.27
Kraj: Ljubljana

PrispevekObjavljeno: Sob Maj 06, 2006 12:05 pm    Naslov sporočila:   Odgovori s citatom

Hvala za pomoč.
Sedaj telefon sprejme ukaz in ga izvrši npr. pokliče določeno telefonsko številko. Ne znam pa prebrati podatkov, ki jih pošlje nazaj. Če uporabim rutino getc() se program tu ustavi in čaka kot da telefon ne pošlje nič nazaj.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Djurodrljaca
Član
Član



Pridružen-a: Pet 19 Dec 2003 16:31
Prispevkov: 393
Aktiv.: 1.66
Kraj: Mengeš

PrispevekObjavljeno: Sob Maj 06, 2006 1:02 pm    Naslov sporočila:   Odgovori s citatom

Najprej preveri, če ti RX linija sploh deluje.

V čem pišeš ta program za mikrokontroler?

Če boš priložil tisti del kode, kjer imaš to komunikacijo, mogoče lahko ugotovim kje je problem.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Highlag
Član
Član



Pridružen-a: Pet 23 Jan 2004 20:42
Prispevkov: 4034
Aktiv.: 17.03
Kraj: Črnuče

PrispevekObjavljeno: Sob Maj 06, 2006 4:29 pm    Naslov sporočila:   Odgovori s citatom

Kaj uporabljaš za pisanje programov v C-ju bi tudi mene zanimalo.
_________________
If at first you don't succeed, destroy all evidence that you tried.
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Obišči avtorjevo spletno stran
vili
Član
Član



Pridružen-a: Ned 30 Maj 2004 16:37
Prispevkov: 64
Aktiv.: 0.27
Kraj: Ljubljana

PrispevekObjavljeno: Sob Maj 06, 2006 6:00 pm    Naslov sporočila:   Odgovori s citatom

Uporabljam CCS pic compiler.

#include <16f873.h>
#fuses XT,NOPROTECT
#use delay(clock=4000000)
#use rs232(baud=9600, xmit=PIN_c6, rcv=PIN_c7)
char podatek[10];

void main()
{
printf("AT\r");
podatek[0]=getc();
puts(podatek);
}

Problem je v tem ker mikrokontroler ne sprejme nobenega podatka od telefona in se obesi pri ukazu getc(). Če mu preko terminala na računalniku pošljem nek znak pa ga sprejme in z ukazom puts(podatek) prikaže.

Če je telefon priključen na računalnik stvar deluje tako da je z RX verjetno vse vredu.
LP
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Djurodrljaca
Član
Član



Pridružen-a: Pet 19 Dec 2003 16:31
Prispevkov: 393
Aktiv.: 1.66
Kraj: Mengeš

PrispevekObjavljeno: Sob Maj 06, 2006 6:18 pm    Naslov sporočila:   Odgovori s citatom

Mogoče bi raje uporabil gets(podatek); namesto podatek[0]=getc();

Drugi problem je pa v tem, da gets() skoraj sigurno ni prirejen za AT ukaze. Problem je v tem, ker ponavadi funkcije za stringe čakajo na zaključni znak '\0' oz vrednost nič. Oblika odgovora pa je "\r\n....\r\n" oz "\r\n....\r\n\r\n....\r\n", če je odgovor v dveh vrsticah.
Pa še nekaj, če prav razumem ta program ti najprej pošlješ AT ukaz, potem prejmeš odgovor in pošlješ odgovor nazaj v mobitel?
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo Pošlji E-sporočilo
Sokrat
Član
Član



Pridružen-a: Čet 25 Avg 2005 11:00
Prispevkov: 5584
Aktiv.: 23.57

PrispevekObjavljeno: Sob Maj 06, 2006 6:59 pm    Naslov sporočila:   Odgovori s citatom

Kako pa sploh ves, da se je program ustavil ravno tam, kjer ti trdis da se je ustavil ? Kot je napisal Djuro, tako kot je program napisan, izgleda kot da posljes nazaj en znak odgovora v telefon (kar seveda ne naredi nic), nimas pa nacina za preverjanje kako dalec si sploh prisel (npr. eno LEDico, stanje katere bi spremenil po getc() in bi tako vedel ali je program prisel preko getc() ali ne.
Nazaj na vrh
Skrit Poglej uporabnikov profil Pošlji zasebno sporočilo
vili
Član
Član



Pridružen-a: Ned 30 Maj 2004 16:37
Prispevkov: 64
Aktiv.: 0.27
Kraj: Ljubljana

PrispevekObjavljeno: Sob Maj 06, 2006 7:37 pm    Naslov sporočila:   Odgovori s citatom

Vse je priključeno na telefon in terminal na računalniku. Ko za ukazom getc() pošljem ukaz nazaj to vidim na računalniku, če se seveda program prej ne ustavi. Če iz računalnika pošljem podatek pic le tega prebere in ga pošlje nazaj tako da vem kje se vse skupaj ustavi. Celotna koda ki jo pic pošlje telefonu je vidna tudi na terminalu to deluje ker mi telefon kliče na določeno številko.

Ko se zacikla in čaka na podatke s telefona, program lahko spravim naprej tako da pošljem podatek iz računalnika in pic odgovori. poizkusil sem tudi z odklopom povezave na računalnik vendar še vedno deluje. Z ukazom gets() se mi zgodi enako kot z getc().

LP
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
NeoTO
Član
Član



Pridružen-a: Pon 28 Mar 2005 19:19
Prispevkov: 2752
Aktiv.: 11.62
Kraj: Trzic

PrispevekObjavljeno: Sob Maj 06, 2006 7:47 pm    Naslov sporočila:   Odgovori s citatom

Če bi pogledal v pomoč, bi lahko prebral, da lahko getc() kličeš šele, ko imaš podatek že v input bufferju. Da to veš, uporabiš ukaz kbhit(), ki ti vrne 1, če te podatki čakajo, in 0, če PIC ni sprejel ničesar. Če uporabljaš softwareski UART, potem moraš kbhit() klicat vsaj nekajkrat na periodo prenosa (npr. pri 9600 baud, moraš klicat kbhit() vsaj nekajkrat na 100 us (mikrosekund).
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo MSN Messenger - naslov
vili
Član
Član



Pridružen-a: Ned 30 Maj 2004 16:37
Prispevkov: 64
Aktiv.: 0.27
Kraj: Ljubljana

PrispevekObjavljeno: Sob Maj 06, 2006 9:02 pm    Naslov sporočila:   Odgovori s citatom

Kako pa je potem potrebno spisati rutino? Zakaj pa getc() deluje ko pošljem podatek z računalnika?

LP
Nazaj na vrh
Odsoten Poglej uporabnikov profil Pošlji zasebno sporočilo
Pokaži sporočila:   
Objavi novo temo   Odgovori na to temo   Printer-friendly version    www.elektronik.si Seznam forumov -> Elektronika Časovni pas GMT + 2 uri, srednjeevropski - poletni čas
Pojdi na stran 1, 2, 3  Naslednja
Stran 1 od 3

 
Pojdi na:  
Ne, ne moreš dodajati novih tem v tem forumu
Ne, ne moreš odgovarjati na teme v tem forumu
Ne, ne moreš urejati svojih prispevkov v tem forumu
Ne, ne moreš brisati svojih prispevkov v tem forumu
Ne ne moreš glasovati v anketi v tem forumu
Ne, ne moreš pripeti datotek v tem forumu
Ne, ne moreš povleči datotek v tem forumu

Uptime: 494 dni


Powered by phpBB © 2001, 2005 phpBB Group