|
|
Elektronika.lt portalo forumas
Jūs esate neprisijungęs lankytojas. Norint dalyvauti diskusijose, būtina užsiregistruoti ir prisijungti prie forumo.
Prisijungę galėsite kurti naujas temas, atsakyti į kitų užduotus klausimus, balsuoti forumo apklausose.
Administracija pasilieka teisę pašalinti pasisakymus bei dalyvius,
kurie nesilaiko forumo taisyklių.
Pastebėjus nusižengimus, prašome pranešti.
Dabar yra 2024 11 26, 08:27. Visos datos yra GMT + 2 valandos.
|
|
|
|
Forumas » Mikrovaldikliai » Reikia pasiųsti AT komandas į C55. PIC, C kalba
|
Jūs negalite rašyti naujų pranešimų į šį forumą Jūs negalite atsakinėti į pranešimus šiame forume Jūs negalite redaguoti savo pranešimų šiame forume Jūs negalite ištrinti savo pranešimų šiame forume Jūs negalite dalyvauti apklausose šiame forume
|
|
|
|
|
|
Reikia pasiųsti AT komandas į C55. PIC, C kalba |
Parašytas: 2009 11 15, 02:18 |
|
|
|
Sveiki,
pradžioj tai, ką dabar turiu:
PIC16F84A 18pin, 4MHz;
"MikroC PRO for PIC" - pirmenybė rašyti šia programa (C kalba);
PIC programatorius (USB);
Proteus softas;
nešiojamas kompiuteris - tik .hex failui įrašyti į MV;
Maketavimo lenta - schemai sujungti;
menkniekiai - varžos, kvarcai, led'ai ir t.t.;
Siemens C55.
Googlinu jau kelintą dieną, vis nesurandu pavyzdžio parašyta C kalba naudojant PIC'ą, kur persiųstų AT komandas iš mikrovaldiklio į telefoną. Konkrečiai mano PIC'ui reikia dar sukurti virtualų UART'ą, kadangi jis pats jo neturi (pvz. PIC16F887) jį turi.
Na tikslas sujungti Siemens C55 su mikrovaldikliu.
Pagooglinus ir aklai paeksperimentavus sugalvojau tiek:
Citata: |
char Soft_UART_Init(char *port, char rx_pin, char tx_pin, unsigned long baud_rate, char inverted);
void Soft_UART_Write(char udata);
char K;
void main()
{
// initialization of the UART with (8 bit, 9600 baud rate, no parity, non inverted)
Soft_Uart_Init(PORTA,1,2,9600,0);
K=("at+clck =cs,0"); //klaviaturai atrakinti
do {
Soft_Uart_Write(K); // send data via UART
Delay_ms(1000); // wait 1 second
}
while(1);
} |
Šiuo kodu norėčiau atrakinti C55 klaviatūrą.
http://www.piclist.com/images/www/hobby_elec/gif/pic2_0.gif
Parašyta programa neveikia. Tai parodo išbandžius:
ant maketavimo plokštės - klaviatūros neatrakina, prie A1 kojos prijungus LED'ą net neblyksi - įtampos neduoda visai;
Pasileidus Proteus ir mikrovaldiklio kojų išvaduose prijungus LED'us, taip pat nemirksi - Rx'u informacija neperduodama (A1 koja).
MikroC programoj sukūrus projektą buvo pasirinkta - 4 MHz, esant tokiam dažniui parinktas XT režimas, žinoma, pasirinktas mikrovaldiklis, su kuriuo dirbu. Toliau visa kita pagal nutylėjimą.
Matomai problema parašytoje programoje. Kiek ji teisinga? Gal turit kokį pavyzdėlį tam ar patikslintumėt klaidas šios programos kodo?
Papildomai sudėtingiau, kad reikia naudoti virtualų Uart'ą (SUART), tačiau dar norėčiau pabandyti šį mikrovaldiklį - PIC16F84. Na dar ilgiau užsitęsus problemoms griebčiau mikrovaldiklį jau savyje turintį UART'ą, iš kurio kojų tiesiai išeitų Rx, Tx. Na rinkčiausi iš šio sąrašiuko:
http://openprog.altervista.org/OP_eng.html#Support
Tačiau labai norėčiau išsiversti ir be to.
Neturiu COM lizdo, todėl su kompu nejungsiu. Manau programą galima patikrinti ir LED'ų mirksėjimais iš kojos, kuri veiks kaip Rx.
Labai būtų malonu, kad padėtumėt ištaisyti klaidas, esančias programos kode. Na o aš googlinu toliau...
ps: smagu prisijungti. |
|
|
|
|
|
|
Reikia pasiųsti AT komandas į C55. PIC, C kalba |
Parašytas: 2009 11 15, 04:42 |
|
|
|
su ledu vien tik nepaziuresi ar nuoseklusis veikia ar ne nes greiciai dideli yra ir tavo akute net neiziures tenais Idomu kokios tavo zinios mikropasaulyje yra ir kartais ne peraukstai soki nuo lempuciu mirgsejimo iki AT komandu?m? |
|
_________________ Diplomas tik etikete ant konservų dėžutes. O kas slepiasi dėžutėje neaišku. |
|
|
|
|
Reikia pasiųsti AT komandas į C55. PIC, C kalba |
Parašytas: 2009 11 15, 09:31 |
|
|
|
Patariu naudoti PIC16F628 kuris turi UART moduli ir dar daugiau kitu galimybiu. 16F84 yra seniena kuri dar vis plaukioja rinkoje. Esu ne vieną gsm signalkę padares su pic16f628 ir jokiu problemu,dirba patikimai. pic16f877 gal kiek per didelis at komandoms siuntineti, nebent daug isejimo/iejimo portu reikia,na bet irgi neblogas variantas,bet truputi brangokas.
MikroC - gerai.paprasta ir lengvai suprantama.
Del programos kodo veliau paziuresiu. |
|
|
|
|
|
|
Reikia pasiųsti AT komandas į C55. PIC, C kalba |
Parašytas: 2009 11 15, 11:00 |
|
|
|
Ingo rašo: |
Patariu naudoti PIC16F628 kuris turi UART moduli ir dar daugiau kitu galimybiu. 16F84 yra seniena kuri dar vis plaukioja rinkoje. Esu ne vieną gsm signalkę padares su pic16f628 ir jokiu problemu,dirba patikimai. pic16f877 gal kiek per didelis at komandoms siuntineti, nebent daug isejimo/iejimo portu reikia,na bet irgi neblogas variantas,bet truputi brangokas.
MikroC - gerai.paprasta ir lengvai suprantama.
Del programos kodo veliau paziuresiu. |
Ačiū už pasiūlymą, jau užsienio forumuose teko perskaityti, kad verčiau naudoti šį PIC'ą. Tad pirmadienį lėksiu į lemoną ir pasiimsiu jį kartu su 20 MHz kvarciniu rezonatorium.
Taip pat laukiu, ką įdomaus galėsi pasiūlyt su programos kodu. |
|
|
|
|
|
|
Reikia pasiųsti AT komandas į C55. PIC, C kalba |
Parašytas: 2009 11 15, 11:08 |
|
|
|
Ištaisiau klaidas tavo programėlės kode. Funkcija Soft_Uart_Write siuncia tik viena baita, o tu savo programoje rasai visa eilute baitu,reikia siusti po viena,kiek yra simboliu eiluteje,tiek ir siunti.
Pataisytas tavo kodas:
Kodas: |
//kas 1sek siunciama per UART AT+CLCK
const char atrakinti[] = "AT+CLCK";//kabutese rasai siunciama AT komanda
unsigned char data ;
char i = 0;
void main() {
i=0;
Soft_Uart_Init(PORTB, 1, 2, 9600, 0);
while(1){
do{
data = atrakinti[i];
Soft_Uart_Write(data); // siunciam duomenis
i++;
}
while (i<6); //baitu skaicius masyve atrakinti[].
i=0;
Soft_Uart_Write ('\r');
Soft_Uart_Write ('\n'); //kita eilute
Delay_ms(1000);
}
} |
Pasitikslink ar tikrai C55 palaiko 9600baud_rate,man atrodo kad gal 19200 |
|
|
|
|
|
|
Reikia pasiųsti AT komandas į C55. PIC, C kalba |
Parašytas: 2009 11 15, 14:43 |
|
|
|
Ačiū už pataisytą programą, tačiau ją išbandžius Proteus'e tiek su PIC16F84A, tiek su PIC16F628A (kažkodėl Proteus'e nėra šio PIC'o be "A") loginis aukštas lygis iš B1 kojos taip ir nepasirodo.
Kaip sakai iš to, kas parašyta programos kode, ar turi išsiųsti AT komdas per Rx? Ieškoti klaidos programos kode ar schemoj? |
|
|
|
|
|
|
Reikia pasiųsti AT komandas į C55. PIC, C kalba |
Parašytas: 2009 11 15, 15:18 |
|
|
|
Viskas veikia normaliai,pats išbandžiau. RB1 yra Rx, RB2 yra Tx(siuntimas).
Proteuse prie PIC RB1,RB2 prijunk Virtual Terminal (iš menu Virtual Instruments mode). Terminalui nustatyk Baud Rate, PIC'ui nepamiršk nustatyti Processor Clock Frequency ir nurodyti kur yra hex failas. Terminalo RXD prijungi prie RB2.
Paleidi simuliacija,jei neatsidaro terminalo langas, dešiniu pelės klavišu spaudi ant terminalo ir uždedi varnelę ant Virtual terminal (pačioje apačioje).
Iššokusiame terminalo lange matai ką siunčia mikrokontroleris.
Tarp F628 ir F628A esminio skirtumo nėra. Programą gali rašyti dėl F628 o simuliacijai pasiimti F628A. |
|
|
|
|
|
|
|
Reikia pasiųsti AT komandas į C55. PIC, C kalba |
Parašytas: 2009 11 15, 18:19 |
|
|
|
Ingo rašo: |
Viskas veikia normaliai,pats išbandžiau. RB1 yra Rx, RB2 yra Tx(siuntimas).
Proteuse prie PIC RB1,RB2 prijunk Virtual Terminal (iš menu Virtual Instruments mode). Terminalui nustatyk Baud Rate, PIC'ui nepamiršk nustatyti Processor Clock Frequency ir nurodyti kur yra hex failas. Terminalo RXD prijungi prie RB2.
Paleidi simuliacija,jei neatsidaro terminalo langas, dešiniu pelės klavišu spaudi ant terminalo ir uždedi varnelę ant Virtual terminal (pačioje apačioje).
Iššokusiame terminalo lange matai ką siunčia mikrokontroleris.
Tarp F628 ir F628A esminio skirtumo nėra. Programą gali rašyti dėl F628 o simuliacijai pasiimti F628A. |
Galėtum kur nors patalpinti tiek MikroC, tiek Proteus'o sukurtus projektus? Žiūrėčiau, kurią vietą kreivai padariau. |
|
|
|
|
|
|
Reikia pasiųsti AT komandas į C55. PIC, C kalba |
Parašytas: 2009 11 15, 19:00 |
|
|
|
Citata: |
Galėtum kur nors patalpinti tiek MikroC, tiek Proteus'o sukurtus projektus? Žiūrėčiau, kurią vietą kreivai padariau.
|
Duok savo emaila atsiusiu i pasta. |
|
|
|
|
|
Reikia pasiųsti AT komandas į C55. PIC, C kalba |
Parašytas: 2009 11 16, 00:31 |
|
|
|
minep eta inbox.lt
Įdomu, kodėl man neleidžia naudoti kintamojo "data" vardu, kuomet pas tave, kaip matau, puikiausiai veikia. Help'e pasiskaičiau, kad jis vienas iš išrinktųjų žodžių, kurių negalima naudoti. Tačiau kodėl tau leidžia? |
|
|
|
|
|
Reikia pasiųsti AT komandas į C55. PIC, C kalba |
Parašytas: 2009 11 16, 13:20 |
|
|
|
Ingo, labai tau ačiū.
Įsidiegiau MikroC 8.2 versiją, nustačiau PWRTE, OSC ir XT. Kažkodėl pas tave nustatyta HS, nors ties 4MHz turėtų būti XT.
Proteus'e viskas jau veikia, tačiau telefonas dar nereaguoja.
Įdomu tai, kad Proteus'e iš mikrovaldiklio Tx išeina aukštas signalas tik trumpą laiką (prijungtas LED'as tik trumpas užsidega, voltmetre tik trumpam parodo ~5V).
O ant realios schemos viskas atvirškiai - LED'as tik labai trumpam išsijungia, voltmetras net nesureaguoja ir visada rodo netoli 5V.
Kaip turi būti teisingai? |
|
|
|
|
|
|
Reikia pasiųsti AT komandas į C55. PIC, C kalba |
Parašytas: 2009 11 16, 16:34 |
|
|
|
Led tiek Proteuse tiek realioj schemoje turi jungti per 200-300om varžą . Kai siunčiama per uart, proteuse Led'as turi degti pastoviai.
Programuojantrealu PIC'a turi aprašyti portus,nepalik jų neapibrėžtoj būsenoje. Pvz. kur prieš tai daviau koda iškart po main rašyk:
TRISA=0; //
TRISB=0; //
arba jeigu portai yra skirtingi tai raši taip:
TRISA.F0=1; //RA0 iejimas
TRISA.F1=0; //RA1 isejimas
ir t.t
Jeigu mk kokia nors koja nenaudojama,tai nurodai kaip isejima.Pvz.TRISB.F0=0;
Programuojant sudetingesnius mk,dar nuradai vidiniu moduliu busena,pvz isjungi komparatorius,nurodai kokie iejimai yra skaitmeniniai, o kokie analoginiai ir t.t.. |
|
|
|
|
|
|
Reikia pasiųsti AT komandas į C55. PIC, C kalba |
Parašytas: 2009 11 16, 17:49 |
|
|
|
Kaip suprantu, tai, jog ištisai šviečiantis LED ir tik retsykiais išsijungiantis (at komandos siuntimo momentu), yra viskas normalu? O čia Proteus'e grybą pjauna, kad atvirkščiai vyksta palyginus su realia schema?
Beje pasakei ateity naudingos informacijos apie įėjimą, kad reikia priskirti arba skaitmeninį, arba analoginį signalą. Tik dar nežinau, kurio prireiks. Na čia ateičiai...
Dabar dar reikia pasiųsti komandą, kad sureaguotų telefonas. Dar jis man nereaguoja, bet gal dėlto, kad dar nenurodžiau jam teisingos AT komandos.
Pastebėjau problemą, kad MikroC programa blogai supranta tokią eglutę:
kintamasis[ ]="AT+KEY="*#06#",1"
pati AT komanda prieš lygybės ženklą šiek tiek kita, bet čia ne esmė. Problema ta, kad MikroC antrą skliaustą supranta, kaip uždarymą, todėl programa nebesupranta kas tie *#06# simboliai.
Kaip šiuo atėju elgtis? |
|
|
|
|
|
|
Reikia pasiųsti AT komandas į C55. PIC, C kalba |
Parašytas: 2009 11 16, 19:45 |
|
|
|
Jeigu neiseina pasiusti taip kaip ankstesniame pvz. tai bandyk skaidyti i dvi dalis ir i tarpa bei pabaigoje iterpdamas komanda:
Soft_Uart_Write (34); //siunciama dvigubos kabutes
Bet,nezinau ar su AT komandomis galima valdyti mygtuku paspaudima,manau kad ne...
Atrakinti klaviatura galima su komanda at+clck =cs,0
bet tas nera butina,at komandos priimamos ir su uzrakinta kl.
Jeigu nori patikrinti ar telefonas reaguoja i at komandas,tai paprasciausiasi
pasiusk skambinimo komanda i savo tlf ,programoje irases savo nr:pvz:
ATD+37061012345;
Tik nepamirsk kabuciu po paskutinio skaiciaus prideti! |
|
|
|
|
|
|
Google paieška forume |
|
|
Naujos temos forume |
|
|
FS25 Tractors
Farming Simulator 25 Mods,
FS25 Maps,
FS25 Trucks |
|
ETS2 Mods
ETS2 Trucks,
ETS2 Bus,
Euro Truck Simulator 2 Mods
|
|
FS22 Tractors
Farming Simulator 22 Mods,
FS22 Maps,
FS25 Mods |
|
VAT calculator
VAT number check,
What is VAT,
How much is VAT |
|
LEGO
Mänguköök,
mudelautod,
nukuvanker |
|
Thermal monocular
Thermal vision camera,
Night vision ar scope,
Night vision spotting scope |
|
FS25 Mods
FS25 Harvesters,
FS25 Tractors Mods,
FS25 Maps Mods |
|
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija |
|
FS25 Mods
FS25 Maps,
FS25 Cheats,
FS25 Install Mods |
|
GTA 6 Weapons
GTA 6 Characters,
GTA 6 Map,
GTA 6 Vehicles |
|
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps |
|
|
|