ورود به حساب ثبت نام جدید فراموشی کلمه عبور
برای ورود به حساب کاربری خود، نام کاربری و کلمه عبورتان را در زیر وارد کرده و روی «ورود به سایت» کلیک کنید.





اگر فرم ورود برای شما نمایش داده نمیشود، اینجا را کلیک کنید.









اگر فرم ثبت نام برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.









اگر فرم بازیابی کلمه عبور برای شما نمایش داده نمی‌شود، اینجا را کلیک کنید.





کاربران برچسب زده شده

نمایش نتایج: از 1 به 4 از 4
  1. #1
    2010/04/20
    آذربایجان شرقی
    73
    13

    مشکل ارتباط SIM800 با پورت سریال AVR

    سلام دوستان خسته نباشید
    من برنامه رو تو Atmel Studio نوشتم و چون تو Atmel Studio نتوستم از کتابخونه stdio.h برای ارتباط با پورت سریال استفاده کنم مجبور شدم از ریجستر های USART استفاده کنم
    ولی در صورتی که پورت USART رو به کامپیوتر وصل کنم همه اطلاعات رو به درستی دریافت میکنم ولی در ارتباط با SIM800 فقط دو کارکتر اول دریافت میشه
    ایا راهی است از دستورات Sprintf و scanf تو Atmel Studio استفاده کنم؟
    در ضمن SIM800 با کامپیوتر به درستی کار میکنه
    ممنونم
    [FONT=Yekan]
    #ifdef F_CPU[/FONT]
    #define F_CPU 8000000UL
    #endif


    #define baud_rate 9600
    #define baud ((F_CPU/(16UL * baud_rate))-1)


    #include <avr/io.h>
    #include <util/delay.h>
    #include "lcd.h"
    #include <avr/interrupt.h>
    #include <string.h>


    volatile int ifg = 0, h = 0, i = 0, j = 0;
    volatile unsigned char msgc[20] , msg[100];
    volatile unsigned int g = 0;
    #define Ent 10


    void USART_Init(void){
    UCSRA = 0x00;
    UCSRB = (1<<RXEN) | (1<<TXEN);
    UCSRC = (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0);
    UBRRL = baud;
    UBRRH = (baud<<8);
    UCSRB|=(1<<RXCIE);



    }


    void USART_Transmit_Char(unsigned char data){
    while(!((UCSRA) & (1<<UDRE)));
    UDR = data;
    }


    void USART_Transmit_String(unsigned char *_string_){
    int i;
    for(i=0;i<strlen(_string_);i++){
    while (( UCSRA & (1<<UDRE)) == 0){};
    UDR = _string_[i];
    }
    }


    unsigned char USART_Recieve_Char(void){


    while (((UCSRA) & (1<<RXC))==0);
    return UDR;
    }


    unsigned char USART_Recieve_String(unsigned char *_string){
    unsigned char s = 0;
    unsigned char n = 0;
    UDR = 0;
    while (1)
    {
    s = USART_Recieve_Char();
    if (s == '\n')break;
    _string[n] = s;
    UDR = 0;
    n++;
    }
    _string[n] = 0;
    }


    ISR(USART_RXC_vect){
    UCSRB&=~(1<<RXCIE); // DISABLE INTERRUPT
    ifg=1;
    UDR =0;
    USART_Recieve_String(msgc);

    }




    int main(void)
    {
    USART_Init();
    _delay_ms(30);


    lcd_init();
    lcd_clear();
    _delay_ms(100);
    lcd_gotoxy(1,0);
    _delay_ms(1000);
    lcd_clear();
    sei();
    cheak:
    //sprintf(msg,"ATE0%c",ent);
    //USART_Transmit_String(msg);

    lcd_gotoxy(0,0);
    lcd_clear();
    lcd_puts("Connecting");
    _delay_ms(1000);
    /*if(strstr(msgc,"OK")==NULL){
    lcd_puts(msgc);
    _delay_ms(1000);
    UCSRB|=(1<<RXCIE);
    goto cheak;
    }
    else{
    lcd_clear();
    lcd_gotoxy(0,0);
    lcd_puts("OK");
    _delay_ms(1000);
    UCSRB|=(1<<RXCIE);
    //goto cheak;
    }*/
    lcd_clear();
    while (1)
    {
    if (ifg == 1){
    _delay_ms(1000);
    lcd_gotoxy(0,0);
    lcd_putsf(msgc);
    if(strstr(msgc , "RING")){
    lcd_gotoxy(1,1);
    lcd_puts("OK");
    lcd_clear();
    }

    ifg = 0;
    UCSRB|=(1<<RXCIE);
    }
    }
    [FONT=Yekan]}[/FONT]
    ویرایش توسط amin_a_y : 2018/02/05 در ساعت 20:41
  2. #2
    2010/04/20
    آذربایجان شرقی
    73
    13

    پاسخ : مشکل ارتباط SIM800 با پورت سریال AVR

    دوباره سلام
    پس از کلی کلنجار با برنامه مشکلش رو پیدا کردم
    مشکل از فرمت دیتا ارسالی توسط ماژول بود که به صورت
    <CR><LF><response><CR><LF> بود و برنامه رو به شکل زیر تغییر دادم دوستان اگه پیشنهاد بهتری دارن ممنون میشم کمک کنن ولی برنامه به خوبی کار میکنه

    unsigned char USART_Recieve_String(unsigned char *_string){
    unsigned char s = 0 , n = 0;
    UDR = 0;

    s = USART_Recieve_Char();
    s = USART_Recieve_Char();

    while (1)
    {
    s = USART_Recieve_Char();
    if (s == '\n'){
    UCSRB|=(1<<RXCIE);
    _string[n-1] = '\0';
    break;
    }
    _string[n] = s;
    UDR = 0;
    n++;
    }
    _string[n] = 0;
    [FONT=Yekan]}[/FONT][COLOR=#28282B][FONT=&quot][/FONT][/COLOR]

  3. #3
    2008/05/26
    1,044
    531

    پاسخ : مشکل ارتباط SIM800 با پورت سریال AVR

    نقل قول نوشته اصلی توسط amin_a_y

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت

    دوباره سلام
    پس از کلی کلنجار با برنامه مشکلش رو پیدا کردم
    مشکل از فرمت دیتا ارسالی توسط ماژول بود که به صورت
    <CR><LF><response><CR><LF> بود و برنامه رو به شکل زیر تغییر دادم دوستان اگه پیشنهاد بهتری دارن ممنون میشم کمک کنن ولی برنامه به خوبی کار میکنه

    unsigned char USART_Recieve_String(unsigned char *_string){
    unsigned char s = 0 , n = 0;
    UDR = 0;

    s = USART_Recieve_Char();
    s = USART_Recieve_Char();

    while (1)
    {
    s = USART_Recieve_Char();
    if (s == '\n'){
    UCSRB|=(1<<RXCIE);
    _string[n-1] = '\0';
    break;
    }
    _string[n] = s;
    UDR = 0;
    n++;
    }
    _string[n] = 0;
    [FONT=Yekan]}[/FONT][COLOR=#28282B][FONT=&quot][/FONT][/COLOR]

    سلام
    از کتابخونه ای که تو لینک زیر هست استفاده کنید:

    مهمان عزیز شما حق دیدن لینک ها را ندارید

    عضویت


    من خیلی وقته که با این کتبخونه کار میکنم و تا حالا که هیچ مشکلی نداشتم
    قابلیت بافر دریافت حلقوی هم داره
  4. #4
    2010/04/20
    آذربایجان شرقی
    73
    13

    پاسخ : مشکل ارتباط SIM800 با پورت سریال AVR

    سلام دوست عزیز
    ممنون بابت معرفی کتابخانه
    من از این کتابخونه استفاده کردم و مشکم تو مقدار برگشتی از تابع هستش که بعضی وقتی با اینکه تو خود تابع رشته رو کامل دریافت میکنم ولی موقعی که تابع را فراخوانی میکنم مقدار برگشتی همون نیست که دریافت کردم
    تابع مربوط به دریافت رشته از پورت سریال:
    char * uart_gets(void){ 
    unsigned int n = 0 , c = 0, a = 0;
    unsigned char s;
    static unsigned char _string[100];
    for (n=0;n<=100;n++){
    _string[n] = '\0';
    }
    n = 0;
    while (1){
    again:
    c = uart_getc();
    if (!(c & UART_NO_DATA)){
    s = (unsigned char)c;
    if ((s == '\r' || s == '\n') && (n == 0)) goto again;
    if ((s == '\r' || s == '\n') && (n != 0)){
    _string[n] = '\0';
    return (_string);

    }
    _string[n] = s;
    n++;
    }
    }
    }


    تابع مربوط به دریافت SMS
    const char * SIM800_SMS_Read(unsigned int _sms){ 
    unsigned char *msg_receive = NULL;
    unsigned char *read = NULL;
    unsigned q = 0, w = 0, e = 0 , c = 0 , v = 0;

    for (v=0;v<=50;v++) sms_date[v] = '\0';
    for (v=0;v<=50;v++) sms_number[v] = '\0';
    for (v=0;v<=50;v++) sms_read[v] = '\0';

    sprintf(msg,"AT+CMGR=%d%c",_sms,Ent);
    uart_puts(msg);
    msg_receive = uart_gets();
    if(strstr(msg_receive,"+CMGR:")){
    for (q=0;q<=strlen(msg_receive);q++){
    if (msg_receive[q] == Cot && e <= 2) e++;
    if ((msg_receive[q] == Cot || c == 1) && e == 3){
    c = 1;
    sms_number[w] = msg_receive[q+1];
    w++;
    if (sms_number[w-1] == Cot)
    {
    sms_number[w-1] = '\0';
    c = 0;
    e++;
    w = 0;
    }
    }if ((msg_receive[q] == Cot && e >= 4) && (msg_receive[q] == Cot && e <= 7)) e++;
    if ((msg_receive[q] == Cot || c == 1) && e == 8){
    c = 1;
    sms_date[w] = msg_receive[q+1];
    w++;
    if (sms_date[w-1] == Cot)
    {
    sms_date[w-1] = '\0';
    c = 0;
    e++;
    w = 0;
    }
    }if ((msg_receive[q] == Cot) && e == 9){
    w = 0;
    e = 0;
    read = uart_gets();
    lcd_gotoxy(0,0);
    lcd_puts(read);


    }
    }
    }else return "Er SMS";
    free(msg_receive);
    msg_receive = NULL;
    free(read);
    read = NULL;
    return (read);
    }

    بازم ممنونم
    ویرایش توسط amin_a_y : 2018/04/11 در ساعت 09:34
نمایش نتایج: از 1 به 4 از 4

موضوعات مشابه

  1. ارتباط با پورت سریال در c#
    توسط gavanbash در انجمن C , C++ , C#
    پاسخ: 8
    آخرين نوشته: 2013/08/30, 15:00
  2. ارتباط ARM , HMI با پورت سریال
    توسط leopard07 در انجمن پروسسورهای ARM
    پاسخ: 0
    آخرين نوشته: 2011/12/09, 19:49
  3. مشکل در ارتباط با پورت سریال
    توسط roze_siah در انجمن میکروکنترلرهای AVR
    پاسخ: 12
    آخرين نوشته: 2011/06/29, 09:58
  4. کمک در ارتباط از طریق پورت سریال
    توسط h_j336 در انجمن میکروکنترلرهای AVR
    پاسخ: 40
    آخرين نوشته: 2009/03/22, 07:32
  5. مشکل در ارتباط با پورت سریال
    توسط ababaei2000 در انجمن میکروکنترلرهای AVR
    پاسخ: 0
    آخرين نوشته: 2009/01/31, 20:35

کاربرانی که این تاپیک را مشاهده کرده اند: 1

کلمات کلیدی این موضوع

علاقه مندي ها (Bookmarks)

علاقه مندي ها (Bookmarks)

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •