السلام عليكم ورحمة الله وبركاته
انا قمت بعمل برنامج لل AVR ATMEGA 8 للارسال عن طريق UART بين 2 من نفس النوع وتم بحمد الله اختباره بعد تعب على البروتس وعمل بشكل جيد ولكن عند الاختبار عملى لم يعمل اطلاقا . فهل هناك اى ضبط لعمل UART فى العمل حيث انى وصلت الطرفين TR , RX بين المرسل والمستقبل عكس بعض ومباشرة بسلكتين فقط .على اى نوع من الميكرو.
شكرا وجزى الله خيرا من يفيدنى
واليكم الدائرة
http://upload.qariya.info/images/qariya-d5802e6d29.jpg
واليكم البرنامج الارسال ( البرنامج يعمل جيدا على البروتس بشرط ضبط التردد للميكرو بنفس تردد 4MHZ . ومن يرد الاستفادة من البرنامج فليتفضل)
program hardUARTSEND
DIM S AS BYTE
main:
DDRC=0
DDRB=255
UART1_INIT(9600)
DELAY_MS(100)
PORTB=1
WHILE TRUE
if (BUTTON(PINC,0,10,1)) then
S="1"
UART1_WRITE(S)
DELAY_MS(200)
ELSE if (BUTTON(PINC,1,10,1)) then
S="2"
UART1_WRITE(S)
DELAY_MS(200)
ELSE if (BUTTON(PINC,2,10,1)) then
S="3"
UART1_WRITE(S)
DELAY_MS(200)
ELSE
GOTO LOP
END IF
END IF
END IF
if (UART1_Tx_Idle() <> 0) THEN
GOTO LOP
END IF
LOP:
WEND
end.
وبرنامج الاستقبال هو :
program hardUARTSEND
DIM S AS BYTE
main:
DDRC=0
DDRB=255
UART1_INIT(9600)
DELAY_MS(100)
PORTB=1
WHILE TRUE
if (BUTTON(PINC,0,10,1)) then
S="1"
UART1_WRITE(S)
DELAY_MS(200)
ELSE if (BUTTON(PINC,1,10,1)) then
S="2"
UART1_WRITE(S)
DELAY_MS(200)
ELSE if (BUTTON(PINC,2,10,1)) then
S="3"
UART1_WRITE(S)
DELAY_MS(200)
ELSE
GOTO LOP
END IF
END IF
END IF
if (UART1_Tx_Idle() <> 0) THEN
GOTO LOP
END IF
LOP:
WEND
end.