اطلاعیه

Collapse
No announcement yet.

اتصال micro به پورت سریال با ماژول آماده FTDI

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

    اتصال micro به پورت سریال با ماژول آماده FTDI

    سلام خدمت اساتید عزیز....
    من میخوام ATMEGA16A رو با یه ماژول آماده FTDI وصل کنم به پورت سریال ، این تصویر مدارم هستش:
    http://s6.picofile.com/file/8198579426/madar.jpg
    این هم کد پروژم:
    کد:
    #define F_CPU 8000000
    
    #include <avr/io.h>
    #include <util/delay.h>
    #include <Angel/UARTMethods.h>
    #include <avr/interrupt.h>
    
    int main(void)
    {
    	InitializeUART(9600, 0, 8, NONE, 1, TRUE);
      while(1)
      {
    		_delay_ms(100);
    		TransmitUART('a');
      }
    }
    اینم کتاب خانه ای که ساختم برای UART:
    کد:
    #ifndef UARTInit
    #define UARTInit
    
    #define EVEN 0
    #define ODD 1
    #define NONE 2
    #define FALSE 0
    #define TRUE 1
    
    #include <math.h>
    #include <avr/io.h>
    
    unsigned char ReceiveUART(void)
    {
    	while (! (UCSRA & (1 << RXC)) );
    	return UDR;
    }
    
    void TransmitUART(unsigned char data)
    {
    	//Wait until the Transmitter is ready
    	while (! (UCSRA & (1 << UDRE)) );
    	//Get that data outa here!
    	UDR = data;
    }
    
    void InitializeUART(int baud, char AsyncDoubleSpeed, char DataSizeInBits, char ParityEVENorODD, char StopBits, char USARTInterruptEnable)
    {
    	uint16_t UBBRValue = lrint(( F_CPU / (16L * baud) ) - 1);
    	if (AsyncDoubleSpeed == 1) UCSRA = (1 << U2X); //setting the U2X bit to 1 for double speed asynchronous
    	//Put the upper part of the baud number here (bits 8 to 11)
    	UBRRH = (unsigned char) (UBBRValue >> 8);
    	//Put the remaining part of the baud number here
    	UBRRL = (unsigned char) UBBRValue;
    	//Enable the receiver and transmitter
    	UCSRB = (1 << RXEN) | (1 << TXEN);
    	
    	if (USARTInterruptEnable) UCSRB |= (1 << RXCIE);
    	
    	//Set 2 stop bits
    	if (StopBits == 2) UCSRC = (1 << USBS);
    	
    	if (ParityEVENorODD == EVEN) UCSRC |= (1 << UPM1); //Sets parity to EVEN
    	if (ParityEVENorODD == ODD) UCSRC |= (3 << UPM0); //Alternative way to set parity to ODD
    	if (DataSizeInBits == 6) UCSRC |= (1 << UCSZ0); //6-bit data length
    	if (DataSizeInBits == 7) UCSRC |= (2 << UCSZ0); //7-bit data length
    	if (DataSizeInBits == 8) UCSRC |= (3 << UCSZ0); //8-bit data length
    	if (DataSizeInBits == 9) UCSRC |= (7 << UCSZ0); //9-bit data length
    }
    
    #endif

    #2
    پاسخ : اتصال micro به پورت سریال با ماژول آماده FTDI

    ببخشید که سوالم رو توی همون پست نپرسیدم فکر کردم طولانی میشه
    حالا مشکل من اینه که وقتی مدار رو راه اندازی میکنم با Putty یا با hyper serial port وصل میشم به پورت سریالی که FTDI من میسازه ولی متاسفانه هیچ دریافتی رو روی putty نمیبینم در صورتی که باید حرف a رو برای من توی یه بازه ی زمانی هی چاپ کنه.
    روی این ماژولی که خریدم دو تا چراغ ریز هم برای Receive و Transmit داره که وقتی مدار رو راه میندازم چراغ Receive ماژولم که پایینش نوشته IRX طبق همون delay من هی روشن خاموش میشه (از اینجا میفهمم که میکرو داره طبق بازه ی زمانی هی data میفرسته به ماژول یعنی داره کار میکنه) ولی نمیدونم چرا من هیچی روی Putty نمیبینم ، از طرفی میخوام وقتی هر کلیدی فشار داده شد PINB0 ال ای دی رو برای من روشن کنه ولی اینم کار نمیکنه (البته کدش رو نذاشتم که شلوغ نشه) اساتید لطف کنند راهنمایی کنند مشکل اولم برطرف شه بعد کد قسمت دوم رو قرار میدم ببینید شاید جایی اشتباه میکنم ، وقتی کلیدی رو هم روی کیبرد فشار میدم روی ماژل با هر بار کلید یه چراغ ITX روشن میشه (که از روی این میفهمم درواقع data از پی سی به ماژول وارد میشه)
    چون تصویر واضح نیست یه توضیحی بدم که Transmit ماژول رو به Receive میکرو و Recieve ماژول رو به Transmit میکرو وصل کردم (یعنی اتصال ها همه درست هستش)
    لطفا راهنمایی کنید
    بنده آماتور هستم خیلی از مفاهیم رو بلد نیستم و یک هفته ای هست وارد مبحث الکترونیک شدم و احتیاج دارم اتصال PC به میکرو یاد بگیرم ، ممنون میشم راهنمایی کنید

    دیدگاه


      #3
      پاسخ : اتصال micro به پورت سریال با ماژول آماده FTDI

      دوستان لطفا کمک کنید

      دیدگاه

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