Elektronika.lt
 2025 m. gruodžio 25 d. Projektas | Reklama | Žinokite | Klausimai | Prisidėkite | Atsiliepimai | Kontaktai
Paieška portale
EN Facebook RSS

 Kas naujo  Katalogas  Parduotuvės  Forumas  Tinklaraščiai
 Pirmas puslapisSąrašas
 Forumas / + pokalbiai
 - Paieška forume
 - D.U.K. / Forumo taisyklės
 - Narių sąrašas
 - Registruotis
 - Prisijungti

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 2025 12 25, 07:15. 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
 
  
Puslapis 67
Pereiti prie Atgal  1, 2, 3, 4, 5, 6, 7  Toliau
Pradėti naują temą  Atsakyti į pranešimą Rodyti ankstesnį pranešimą :: Rodyti kitą pranešimą 
 Reikia pasiųsti AT komandas į C55. PIC, C kalba
PranešimasParašytas: 2012 03 19, 13:13 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Signal
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Dėkui. Išsiaiškinsim Smile
 Reikia pasiųsti AT komandas į C55. PIC, C kalba
PranešimasParašytas: 2012 03 31, 12:46 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Ham
Naujokas
Naujokas
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Sveiki,

Norėjau paklausti ar įmanoma naudojant proteus programa ir prijungus mobilujį telefoną prie laptopo nusiųsti jam programa, kad siųstų sms ar panašiai. Jei taip ar reikia kažką nustatysi proteuse ar kažką panašaus.

dekui už atsakymus
 Reikia pasiųsti AT komandas į C55. PIC, C kalba
PranešimasParašytas: 2012 03 31, 13:23 Pranešti apie taisyklių pažeidimą Atsakyti su citata
specialistas
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką
Ham rašo:
Sveiki,

Norėjau paklausti ar įmanoma naudojant proteus programa ir prijungus mobilujį telefoną prie laptopo nusiųsti jam programa, kad siųstų sms ar panašiai. Jei taip ar reikia kažką nustatysi proteuse ar kažką panašaus.

dekui už atsakymus


Imanoma. Reiks pasirinkti valdikli kuriam parasysi programa. Su koponentu compim (com portas) prisijungsi prie telefono panaudodamas com-usb koverteri (koki ft232). Tada galesi siust sms.
 Reikia pasiųsti AT komandas į C55. PIC, C kalba
PranešimasParašytas: 2012 03 31, 14:11 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Ham
Naujokas
Naujokas
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Tai proteuse pasiemu MV, ComPim jungty, viska sujungiu, tada į usb įkišu, USB-COM konverterį ir prie COM galo įkišu kabelį(COM-telefono jugntis). Ar aš taip suprantu?
Beto, kandagi nelabai esu patyręs elektronikas norėjau paklausti, pas man ant schemos telefnoas jungiasi tiesiog prie keturių jungčių(VIN, RX, TX, GND), taigi, jei aš ant proteuso viską užprogramuoju per COM, tikriausiai poto, kai norėsiu bandytis ant plokštės(ant tų keturių jungčių) reiks kažką keisti? Ar aš klystu? Taip pat niekur neradau ar siemens cx70 turi AT komandas?
 Re: Reikia pasiųsti AT komandas į C55. PIC, C kalba
PranešimasParašytas: 2012 04 04, 07:52 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Dovydas
Patyręs dalyvis
Patyręs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką Apsilankyti vartotojo tinklapyje
andriusa rašo:

Aš sakiau netikiu, kad kas parašytų pats su C nuo nulio iki galo. Įjungti biblioteką visi moka.


Teko prieš puse metų parašyti softwarinį UART MSP430 procui. Ir viskas nuo 0, C kalba, panaudojant vieną taimerį, yra TX ir RX.

Nėra jau taip baisu ir ASM bei papildomi tranzai nebuvo reikalingi Wink

_________________
---
 Reikia pasiųsti AT komandas į C55. PIC, C kalba
PranešimasParašytas: 2012 04 07, 23:38 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Signal
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Sveiki, iškilo bėdų su komunikacija tarp PIC16F877 ir Siemens C55. Išsiuntus žinutę į Siemens C55, mikrovaldiklis turi uždegti LED'ą, kuris prijungtas ant RB3 prievado, tačiau LED'as neužsidega.

Siemens C55 prijungtas (Rx, Tx, Vdd, GND) prie mikrovaldiklio per UART sąsają tiesiogiai be buferio.

Kompiliatorius - Mikro C PRO for PIC.

Vadovaujausi idėja, kuri buvo aprašyta šitoje temoje: Pradžioje siunčiame komandą AT+CNMI su atitinkamais parametrais, kad atėjus SMS žinutei gauti kitą komandą - +CMTI: <mem>,<index> (atminties vieta ir žinutės nr.). Pats žinutės tekstas ir jos interpretavimas nedomina. Svarbu tik faktas, kad žinutė ''atėjo".

Mano programos kodas:

char priemimas[2];
const char siuntimas[] ="AT+CNMI=1,1,0,0,1"; //??????
char i=0;
int flag=0;
unsigned char duomenys;

void interrupt()
{
if (PIR1.RCIF==1)
{
for (i=0; i<1; i++)
{
priemimas[i]=Uart1_Read();
}
flag=1;
}
}

void main()
{
TRISA=0;
TRISB=0;
PORTA=0;
PORTB=0;
INTCON.GIE = 1;
INTCON.PEIE = 1;
PIE1.RCIE=1;
TRISC.RC7=1;
TRISC.RC6=0;
i=0;
Uart1_Init(9600);
Delay_ms(2000);

do
{
duomenys = siuntimas[i];
Uart1_Write(duomenys);
i++;
}
while (i<17);
Uart1_Write ('\r');

do
{
if (flag==1)
{
if (strcmp(priemimas, "+") == 0)
{
PORTB.RB3=1;
}
}
}
while (1);
}

Šią programą simuliavau Proteus aplinkoje ir ji veikė. Realybėje deja ne. Gaila neturiu duomenų kabelio per kurį galėčiau sujungti telefoną su kompu ir žiūrėti kaip viskas atitinkamai veikia.

Programos veikimo idėja: siunčiame konfigūracijos komandą AT+CNMI. Atėjus žinutei į Siemens C55, telefonas išsiunčia komandą +cmti: "SM", 1 kuri parodo kad atėjo žinutė nr. 1. Ši komanda iššaukia mikrovaldiklyje pertrauktį. Jos metu į masyvą įdedamas tik pirmas atėjusios komandos simbolis - "+". Vėlaiu yra vykdoma sąlyga if. Jeigu masyve yra "+" - uždegamas LED ant RB3, jei jo nėra - niekas ir neįvyksta.


Taigi, kas mano programoje yra blogai, kad ji neveikia?
Kokie yra tie "atitinkami AT+CNMI parametrai? Ar jie programoje nurodyti teisingai?
Galų gale gal viskas neveikia dėl to kad nėra buferio jungtyje telefono Tx -----------> mikrovaldiklio Rx? Juk telefonas išduoda tik apie ~3 V. ??

Būtų labai gerai išgirsti kažkokių minčių Rolling Eyes
 Reikia pasiųsti AT komandas į C55. PIC, C kalba
PranešimasParašytas: 2012 04 08, 12:19 Pranešti apie taisyklių pažeidimą Atsakyti su citata
specialistas
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką
Kodas:

//-------------------------------------------------------------
const char ATE0[]="ATE0\r";
const char AT_CNMI[]="AT+CNMI=1,1,0,0,1\r";
char buff[32];
//-------------------------------------------------------------
void clear_buff(void);
void uart_send(const char *st);
unsigned int uart_read(void);
unsigned int test_ok(unsigned int len);
void klaida(void);
//-------------------------------------------------------------
void uart_send(const char *st){
   int i;
   clear_buff();
   i = 0;
   while(st[i] != 0){
      if (UART1_Tx_Idle() == 1) {
         UART1_Write(st[i]);
         i++;
      }
   }
}
//-------------------------------------------------------------
unsigned int uart_read(void){
  unsigned int i, s;
  s = 0;
  i = 0;
  while(i<65535){
    if (UART1_Data_Ready() == 1) {
      buff[s] = UART1_Read();
      s++;
      i = 0;
    }
    i++;
  }
  return s;
}
//-------------------------------------------------------------
void clear_buff(void){
  int i;
  for(i=0; i<32; i++){
    buff[i] = 0;
  }
}
//-------------------------------------------------------------
unsigned int test_ok(unsigned int len){
  if(strncmp(&buff[len-6], "\r\nOK\r\n", 6) == 0){
    return 1;
  }
  return 0;
}
//-------------------------------------------------------------
void klaida(void){
  while(1){
    delay_ms(250);
    PORTB.RB3 = 1 ;
    delay_ms(250);
    PORTB.RB3 = 0 ;
  }
}
//-------------------------------------------------------------
void main(){
  unsigned int i;
  TRISA=0;
  TRISB=0;
  PORTA=0;
  PORTB=0;
  Uart1_Init(9600);
  Delay_ms(2000);

  uart_send(ATE0);
  i = uart_read();
  if(!test_ok(i)) klaida();
  uart_send(AT_CNMI);
  i = uart_read();
  if(!test_ok(i)) klaida();
  clear_buff();
  while(1){
    if (UART1_Data_Ready() == 1){
      uart_read();
      i = strncmp(buff,"\r\n\+", 3);
      if(i==0) PORTB.RB3 = 1 ;
      clear_buff();
    }
  }
}
 Reikia pasiųsti AT komandas į C55. PIC, C kalba
PranešimasParašytas: 2012 04 08, 19:06 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Signal
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Testavau kodą nemažai kartų, beveik visada mirksi lemputės - klaida. Tačiau keletą kartų viskas suveikė kažkokiu būdu gerai - atsiuntus SMS užsidegė LED Smile

Ar tikrai nereikia buferio tarp c55 tx ir pic rx? Galbūt šie nestabilumai ir yra būtent dėl to... PIC16F877 UART Rx yra su Šmito trigeriu, kurio min Vin = 0.8VDD (Jei maitinimas 5 V, tai min 4 V reik), o c55 išduoda berods tik 3,3 V.

Kaip Jūs jungėte telefoną su mikrovaldikliu?

Anyway, specialistui labai labai dėkui už kodą! Wink Užvedė ''ant kelio" Smile
 Reikia pasiųsti AT komandas į C55. PIC, C kalba
PranešimasParašytas: 2012 04 08, 19:26 Pranešti apie taisyklių pažeidimą Atsakyti su citata
specialistas
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką
Isbandyta su proteus, prie kompo prijungus tel. per ft232 usb-usart keitikli. Man tai normaliai veikia. Telefonas siemens mc60. I tel. RX jungiau per dalikli, nes is ft232 5V iseina.
 Reikia pasiųsti AT komandas į C55. PIC, C kalba
PranešimasParašytas: 2012 04 08, 19:50 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Signal
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Antradienį gausiu 74HCT125 buferį, tai pasibandysiu Smile Vienam forumiečiui šioje temoje jau buvo iškilusi panaši bėda.
 Reikia pasiųsti AT komandas į C55. PIC, C kalba
PranešimasParašytas: 2012 04 08, 21:23 Pranešti apie taisyklių pažeidimą Atsakyti su citata
specialistas
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką
Dar reiktu pacioje pradzioje pasiust keleta kartu komanda AT, kad telefonas tiksliai nusistatytu kokiu greiciu perduodami duomenys.
 Reikia pasiųsti AT komandas į C55. PIC, C kalba
PranešimasParašytas: 2012 04 08, 21:31 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Ingo
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką Apsilankyti vartotojo tinklapyje
Signal rašo:
Testavau kodą nemažai kartų, beveik visada mirksi lemputės - klaida. Tačiau keletą kartų viskas suveikė kažkokiu būdu gerai - atsiuntus SMS užsidegė LED Smile

Ar tikrai nereikia buferio tarp c55 tx ir pic rx? Galbūt šie nestabilumai ir yra būtent dėl to... PIC16F877 UART Rx yra su Šmito trigeriu, kurio min Vin = 0.8VDD (Jei maitinimas 5 V, tai min 4 V reik), o c55 išduoda berods tik 3,3 V.

Kaip Jūs jungėte telefoną su mikrovaldikliu?

Anyway, specialistui labai labai dėkui už kodą! Wink Užvedė ''ant kelio" Smile


Tam kad viskas vyktu stabiliai yra butina naudoti interrupt funkcija. Jeigu reikia aptikti tik viena zenkla, ir kitokiu pertraukimu nera, tai priemimui uztenka parasyti tik tiek:
Kodas:
void interrupt(){
if(UART1_Read() == '+') {PORTB.RB3=1;}
}
 Reikia pasiųsti AT komandas į C55. PIC, C kalba
PranešimasParašytas: 2012 04 08, 22:55 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Signal
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Ingo rašo:
Signal rašo:
Testavau kodą nemažai kartų, beveik visada mirksi lemputės - klaida. Tačiau keletą kartų viskas suveikė kažkokiu būdu gerai - atsiuntus SMS užsidegė LED Smile

Ar tikrai nereikia buferio tarp c55 tx ir pic rx? Galbūt šie nestabilumai ir yra būtent dėl to... PIC16F877 UART Rx yra su Šmito trigeriu, kurio min Vin = 0.8VDD (Jei maitinimas 5 V, tai min 4 V reik), o c55 išduoda berods tik 3,3 V.

Kaip Jūs jungėte telefoną su mikrovaldikliu?

Anyway, specialistui labai labai dėkui už kodą! Wink Užvedė ''ant kelio" Smile


Tam kad viskas vyktu stabiliai yra butina naudoti interrupt funkcija. Jeigu reikia aptikti tik viena zenkla, ir kitokiu pertraukimu nera, tai priemimui uztenka parasyti tik tiek:
Kodas:
void interrupt(){
if(UART1_Read() == '+') {PORTB.RB3=1;}
}



Iki to mes nedaeinam. Klaida gaunama dar prieš SMS siuntimą, pačioje programos pradžioje - siunčiant ATE0 ir AT+CNMI komandas.
 Reikia pasiųsti AT komandas į C55. PIC, C kalba
PranešimasParašytas: 2012 04 09, 08:01 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Ingo
Užkietėjęs dalyvis
Užkietėjęs dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą Siųsti el. laišką Apsilankyti vartotojo tinklapyje
Signal rašo:

Iki to mes nedaeinam. Klaida gaunama dar prieš SMS siuntimą, pačioje programos pradžioje - siunčiant ATE0 ir AT+CNMI komandas.


Tai kad pradeti reikia nuo paprastesnio dalyko, taip kaip buvai pradejes, jei gu nori sudetingiau, panagrinek sekanti koda. netestavau ir netikrinau, parasiau tik pati principa, bet jei suprasi minti, pasiderinsi kaip noresi:
Kodas:

#define LED_raudonas    RB4_bit
#define LED_zalias      RB3_bit

const  Wait_OK     = 1;
const  Wait_plius   = 2;

unsigned short response_type =0;
unsigned short gsm_state = 0;
unsigned short response_rcvd = 0;

void Usart_Str_Write(char* string);

//-------------------------------------------------
void main(){

ADON_bit = 0;   //Turn off ADC
TRISA=0;
TRISB=0;
TRISC=0b10000000;
TRISD=0;
TRISE=0;

PORTA=0;PORTB=0;PORTC=0;PORTD=0;PORTE=0;

PIE1.RCIE = 1;    //leidzia USART read pertraukimus
INTCON.GIE = 1;   // global interrput enable
INTCON.PEIE = 1;  // Peripheral Interrupt Enable


UART1_Init(9600);
Delay_ms(1000);

while(1){

response_type=Wait_OK ;
Usart_Str_Write("AT");
delay_ms(100);

while(!response_rcvd) {
LED_raudonas=1;        //dega raudonas led'as=klaida
Usart_Str_Write("AT");
Delay_ms(500);
}

response_rcvd = 0;
LED_raudonas=0;

response_type=Wait_plius;
delay_ms(100);
Usart_Str_Write("AT+CNMI=1,1,0,0,1");

delay_ms(500);

} //end while(1)

}
//-----------------------------------------------------
void Usart_Str_Write(char* string)
{
while (strlen(string)){
UART1_Write((char) (*string));
++string;
}
UART1_Write('\r');
UART1_Write('\n');
}

//----------------------------------------------------------------
void interrupt(){
unsigned char tmp;

if (RCIF_bit == 1) {
tmp = UART1_Read();

if(response_type==Wait_OK){

switch (gsm_state) {
        case  0: {
                  if (tmp == 'O')  { gsm_state = 1;}
                  break;
                 }

        case  1: {
                  if (tmp == 'K')  {response_rcvd = 1;}
                  gsm_state = 0;
                  break;
                 }
        default: {
                  gsm_state = 0;
                  break;
                 }
} //end switch
} //end if

if(response_type==Wait_plius){

switch (gsm_state) {
        case  0: {
                  if (tmp == '+')  { gsm_state = 1;}
                  break;
                 }
        case  1: {
                  if (tmp == 'c')  { gsm_state = 2;}
                  break;
                 }
        case  2: {
                  if (tmp == 'm')  { gsm_state = 3;}
                  break;
                 }
        case  3: {
                  if (tmp == 't')  {gsm_state = 4;}
                 }
        case  4: {
                  if (tmp == 'i')  {LED_zalias = ~1;}//uzdega arba isjungia zalia led'a
                  gsm_state = 0;
                 }
         default: {
                  gsm_state = 0;
                  break;
                 }
} //end switch
} //end if


}
}
 Reikia pasiųsti AT komandas į C55. PIC, C kalba
PranešimasParašytas: 2012 04 23, 20:02 Pranešti apie taisyklių pažeidimą Atsakyti su citata
Signal
Dažnas dalyvis
Dažnas dalyvis
Peržiūrėti vartotojo aprašymą Siųsti asmeninį pranešimą
Ačiū dar kartą specialistui ir Ingo už pagalbą Smile Įdėjus buferį viskas veikia Smile

Tačiau iškilo kita bėda...


Paskutinį kartą redagavo Signal, 2012 04 23, 20:05. Redaguota 1 kartą
Pradėti naują temą  Atsakyti į pranešimą Pereiti prie Atgal  1, 2, 3, 4, 5, 6, 7  Toliau
 
Forumo sistema: phpBB
 „Google“ paieška forume
 Kas naujesnio?
 Naujos temos forume

Global electronic components distributor – Allicdata Electronics

Electronic component supply – „Eurodis Electronics“

LOKMITA – įvairi matavimo, testavimo, analizės ir litavimo produkcija

Full feature custom PCB prototype service

Sveiki ir ekologiški maisto produktai

Mokslo festivalis „Erdvėlaivis Žemė

LTV.LT - lietuviškų tinklalapių vitrina

„Konstanta 42“

„Mokslo sriuba“

www.matuok.lt - Interneto spartos matavimo sistema

Programuotojas Tautvydas – interneto svetainių-sistemų kūrimas

PriedaiMobiliems.lt – telefonų priedai ir aksesuarai

Draugiškas internetas

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
Dantų protezavimas
All on 4 implantai,
Endodontija mikroskopu,
Dantų implantacija
FS25 Mods
FS25 Maps, FS25 Cheats, FS25 Install Mods
FS25 Mods
Farming Simulator 25 Mods,
FS25 Maps
ATS Trailers
American Truck Simulator Mods, ATS Trucks, ATS Maps
Must have farming mods
Farming simulator modhub, Best farming simulator mods
Reklama
‡ 1999– © Elektronika.lt | Autoriaus teisės | Privatumo politika | Atsakomybės ribojimas | Turinys | Reklama | Kontaktai LTV.LT - lietuviškų tinklalapių vitrina
Ets2 mods, Ats mods, Beamng drive mods
allmods.net
„MokslasPlius“ – mokslui skirtų svetainių portalas
www.mokslasplius.lt
Optical filters, UV optics, electro optical crystals
www.eksmaoptics.com
LTV.LT – lietuviškų tinklalapių vitrina
www.ltv.lt/technologijos/
Elektroninių parduotuvių optimizavimas „Google“ paieškos sistemai
www.seospiders.lt
Mokslo festivalis „Erdvėlaivis žemė“
www.mokslofestivalis.eu
Reklama


Reklama