اطلاعیه

Collapse
No announcement yet.

پورت سریال

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    پورت سریال

    سلام دوستان
    من با پورت مبدل USB به سریال استفاده کردم و برنامه زیر رو برای میکروم نوشتم اما مشکلی که هست پورت سریال خروجی کارکترهای نامشخص و نامفهوم رو بر روی LCD میکرو نمایش میده
    هم با MAX232 امتحان کردم هم بدون MAX در هر دو حالت دیتاهایی که از طریق سریال کدویژن برای میکرو فرستاده میشه یک کارکتر نامشخصه که برای هر کارکتر ارسالی از کامپیوتر به میکرو همونو نشون میده ممنون میشم کمکم کنید :nerd:
    کد:
    /*****************************************************
    This program was produced by the
    CodeWizardAVR V2.05.0 Professional
    Automatic Program Generator
    © Copyright 1998-2010 Pavel Haiduc, HP InfoTech s.r.l.
    http://www.hpinfotech.com
    
    Project : 
    Version : 
    Date  : 4/12/2015
    Author : 
    Company : 
    Comments: 
    
    
    Chip type        : ATmega32
    Program type      : Application
    AVR Core Clock frequency: 8.000000 MHz
    Memory model      : Small
    External RAM size    : 0
    Data Stack size     : 512
    *****************************************************/
    
    #include <mega16.h>
    
    // Alphanumeric LCD Module functions
    #include <alcd.h>
    
    // Standard Input/Output functions
    #include <stdio.h>
    #include <delay.h>
    // Declare your global variables here
    unsigned char data=0;
    void main(void)
    {
    // Declare your local variables here
    
    // Input/Output Ports initialization
    // Port A initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
    PORTA=0x00;
    DDRA=0x00;
    
    // Port B initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
    PORTB=0x00;
    DDRB=0x00;
    
    // Port C initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
    PORTC=0x00;
    DDRC=0x00;
    
    // Port D initialization
    // Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In 
    // State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T 
    PORTD=0x00;
    DDRD=0x00;
    
    // Timer/Counter 0 initialization
    // Clock source: System Clock
    // Clock value: 7.813 kHz
    // Mode: Fast PWM top=0xFF
    // OC0 output: Disconnected
    TCCR0=0x4D;
    TCNT0=0x00;
    OCR0=0x00;
    
    // Timer/Counter 1 initialization
    // Clock source: System Clock
    // Clock value: Timer1 Stopped
    // Mode: Normal top=0xFFFF
    // OC1A output: Discon.
    // OC1B output: Discon.
    // Noise Canceler: Off
    // Input Capture on Falling Edge
    // Timer1 Overflow Interrupt: Off
    // Input Capture Interrupt: Off
    // Compare A Match Interrupt: Off
    // Compare B Match Interrupt: Off
    TCCR1A=0x00;
    TCCR1B=0x00;
    TCNT1H=0x00;
    TCNT1L=0x00;
    ICR1H=0x00;
    ICR1L=0x00;
    OCR1AH=0x00;
    OCR1AL=0x00;
    OCR1BH=0x00;
    OCR1BL=0x00;
    
    // Timer/Counter 2 initialization
    // Clock source: System Clock
    // Clock value: Timer2 Stopped
    // Mode: Normal top=0xFF
    // OC2 output: Disconnected
    ASSR=0x00;
    TCCR2=0x00;
    TCNT2=0x00;
    OCR2=0x00;
    
    // External Interrupt(s) initialization
    // INT0: Off
    // INT1: Off
    // INT2: Off
    MCUCR=0x00;
    MCUCSR=0x00;
    
    // Timer(s)/Counter(s) Interrupt(s) initialization
    TIMSK=0x00;
    
    // USART initialization
    // Communication Parameters: 8 Data, 1 Stop, No Parity
    // USART Receiver: On
    // USART Transmitter: On
    // USART Mode: Asynchronous
    // USART Baud Rate: 9600
    UCSRA=0x00;
    UCSRB=0x18;
    UCSRC=0x86;
    UBRRH=0x00;
    UBRRL=0x33;
    
    // Analog Comparator initialization
    // Analog Comparator: Off
    // Analog Comparator Input Capture by Timer/Counter 1: Off
    ACSR=0x80;
    SFIOR=0x00;
    
    // ADC initialization
    // ADC disabled
    ADCSRA=0x00;
    
    // SPI initialization
    // SPI disabled
    SPCR=0x00;
    
    // TWI initialization
    // TWI disabled
    TWCR=0x00;
    
    // Alphanumeric LCD initialization
    // Connections specified in the
    // Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
    // RS - PORTB Bit 0
    // RD - PORTB Bit 2
    // EN - PORTB Bit 3
    // D4 - PORTB Bit 4
    // D5 - PORTB Bit 5
    // D6 - PORTB Bit 6
    // D7 - PORTB Bit 7
    // Characters/line: 8
    lcd_init(16);
    
    lcd_clear();
    lcd_gotoxy(0,0);
     printf("hello");
     putchar(':');
     lcd_gotoxy(0,1);  
     lcd_putsf("salam");
     lcd_gotoxy(0,1);
    while (1)
       { 
       data=getchar();
       lcd_putchar(data);
       
     
       };
    }

    #2
    پاسخ : پورت سریال

    سلام
    این مشکل زمانی رخ میده که Baud rate هر دو طرف تنظیم نباشه . اگر شما Baud rate هر دو طرف رو درست انتخاب کرده باشید پس به احتمال زیاد از کریستال خارجی برای میکرو استفاده نکردید که باید حتما از کریستال خارجی استفاده کنید و اگر کریستال ندارید باید Baud rate کامپیوتر رو کم کنید تا به حالت مطلوب برسید
    چشم ها را باید شست ، جور دیگر باید دید . . .

    دیدگاه


      #3
      پاسخ : پورت سریال

      با سلام
      نوشته اصلی توسط masror_d
      هم با MAX232 امتحان کردم هم بدون MAX
      کار اشتباهی هست، دقت کنید مبدل شما از چه نوعی هست، USB->RS232 یا USB->TTL نوع rs232 نیاز به max داره وگرنه امکان اسیب به مبکرو به خاطر ولتاژ بالا هست، نوع دوم برای کار مستقیم با میکرو ساخته شده و نیاز به ایسی واسط نداره،
      اشکال کار از دو جا میتونه باشه معمولا(با فرض پیکربندی صحیح میکرو و اجرای برنامه به غیر از اجرای صحیح سریال)
      اول اون که دوستمون گفتن، باودریت دو طرف رو یکسان بذارین، لزوما کریستال نیاز ندارین، فقط دقت کنید با توجه به کلاک میکرو، خطای باودریت از حد مجاز بالاتر نره.
      دوم در بخش سخت افزار باید گراند مبدل usb به سریال از هر نوعی که باشه با گراند میکرو به هم وصل شن.
      The healthy human mind doesn't wake up in the morning thinking this is his last day on earth.

      دیدگاه


        #4
        پاسخ : پورت سریال

        نوشته اصلی توسط hassantorabi
        سلام
        این مشکل زمانی رخ میده که Baud rate هر دو طرف تنظیم نباشه . اگر شما Baud rate هر دو طرف رو درست انتخاب کرده باشید پس به احتمال زیاد از کریستال خارجی برای میکرو استفاده نکردید که باید حتما از کریستال خارجی استفاده کنید و اگر کریستال ندارید باید Baud rate کامپیوتر رو کم کنید تا به حالت مطلوب برسید
        با تشکرمهندس
        اینکار و کردم جواب بهتر شد ولی کارکترها رو جابه جا میده مثلا به جای حروفm کارکتر h رو میزنه ولی کارکترهاش حروف انگلیسیه اما جابه جا داره جواب میده

        دیدگاه


          #5
          پاسخ : پورت سریال

          از مبدل های usb به ttl فروشگاه استفاده کنید. خیلی خیلی سادس. مثل هلو جواب میده. برای راه اندازیش هم از لینک زیر استفاده کنید.
          http://dmf313.ir/%D8%A7%D8%AA%D8%B5%D8%A7%D9%84-avr-%D8%A8%D9%87-%DA%A9%D8%A7%D9%85%D9%BE%DB%8C%D9%88%D8%AA%D8%B1-%D8%A7%D8%B2-%D8%B7%D8%B1%DB%8C%D9%82-usb-%D8%A8%D8%A7-%D9%85%D8%A7%DA%98%D9%88%D9%84-cp2102/
          www.gam-co.blogsky.com

          دیدگاه

          لطفا صبر کنید...
          X