Mình cũng gặp rắc rối với vấn đề này. Code cho Atmega16 mình dùng wizard của CodeVisionAVR, PC thì dùng C#. Atmega16 chỉ làm mỗi nhiệm vụ là nhận được byte nào thì forward nó ra TxD luôn. Mạch nối ghép dùng MAX-232, mình lắp theo datasheet của nó. Nhưng không hiểu sao PC gửi hàng chục ký tự thì VDK mới gửi lại một ký tự, và ký tự đó cũng không chính xác là ký tự mà PC đã gửi. Baudrate và format mình đã chọn giống hệt nhau rùi: 9600, 8, non-pairity , 1 bit stop . Có bạn nào giải thích cho mình lý do tại sao với.
Thông báo
Collapse
No announcement yet.
Giao tiep ATmega16 với PC bằng Max232
Collapse
X
-
Giúp em với!Em cũng đang gặp vấn đề rắc rối về việc chuyển dữ liệu từ ATmega16 lên máy tính
đồ án của em thì AVR chỉ làm nhiệm vụ chuyển dữ liệu lên máy tính, còn mọi việc tính toán là bọn em phải xử lý trên máy tính hết. Nhưng khó ở chỗ là tín hiệu đầu vào VĐK của bọn em là dữ liệu 16bit, theo em được biết thì dữ liệu đầu vào máy tính chỉ là 8bit. Máy tính chỉ truyền nhận dữ liệu 8bit.Vì thế mà bọn em ko biết phải xử lý tình huống này như thế nào. Mong các bác chỉ bảo giùm tụi em với.
Comment
-
Cảm ơn bác apple! bác có thể nói rõ hơn cho em được không ạ?:
- code viết cho AVR để "cắt 16bit ra làm đôi rồi truyền" như bác nói (em dùng C viết cho AVR) như thế nào ạ? Vì em cũng mới làm quen với AVR thôi nên còn hạn chế rất nhiều
- bác có thể nói rõ hơn về "Lập trình cho chương trình nhận trên PC trigger sau khi nhận 2byte" được không? em chưa hiểu lắm ý của bác
thanks!
Comment
-
Nguyên văn bởi miss_yen Xem bài viếtCảm ơn bác apple! bác có thể nói rõ hơn cho em được không ạ?:
- code viết cho AVR để "cắt 16bit ra làm đôi rồi truyền" như bác nói (em dùng C viết cho AVR) như thế nào ạ? Vì em cũng mới làm quen với AVR thôi nên còn hạn chế rất nhiều
- bác có thể nói rõ hơn về "Lập trình cho chương trình nhận trên PC trigger sau khi nhận 2byte" được không? em chưa hiểu lắm ý của bác
thanks!
-Phần lập trình trên PC, nếu bạn dùng VB thì trong điều khiển MSOCX sẽ có thuộc tính trigger. Thuộc tính này quy định sẽ xuất dữ liệu ra ngoài sau khi PC nhận được bao nhiêu byte. Bạn tham khảo bên phần lập trình giao tiếp PC bằng VB của bác Ngo Hai Bac sẽ rõ, mình nói lại sẽ thành ăn cắp bản quyền của các bậc tiền bối.Mấy ai định nghĩa được tình yêu.
Có gì đâu một buổi chiều.
Kề dao lên cổ yêu hay chết .
Gật đầu cái rụp thế là yêu.
--------
Apple
Comment
-
Nguyên văn bởi thangktvta Xem bài viếtTôi cũng đã thực hiện như bác. Nhưng viết bằng C trên Code Vision. Dùng Winzard trong Code vision thì đỡ phần UART_init. Bác chỉ cần viết hai hàm Truyền và Nhận, tương dữ liệu vào là Truyền lên PC được thôi. Tiếc là tôi không mang theo Code ở đây. Hẹn hôm sau nhé.
Bác có gì post bài lên em tham khảo với
nich của em conan8620042002@yahoo.com
Comment
-
Atmega16 - RS232
Doạn code sau tôi viết cho vi điều khiển Atmega16 để truyền dữ liệu lên máy tính theo chuẩn giao tiếp RS232 nhưng không chạy, không biết tại sao. Mong mọi người chỉ giùm!
Truyền dữ liệu 8 bit, 2 bit stop, 9200bps.
# include <iom16v.h>
void CPU_init(void)
{
asm("CLI");
MCUCR = 0x00;
GICR = 0x00;
TIMSK = 0x00;
asm("SEI");
}
void PORT_init(void)
{
DDRA=0x00;
DDRB=0xFF;
DDRC=0xFF;
DDRD=0x00;
}
void usart_init()
{
UCSRA=0x00;
UCSRB=0x00;
UBRRH=0x00;
UBRRL=0x33;
UCSRC=(1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
UCSRB=(1<<RXEN)|(1<<TXEN);
}
void USART_Transmit( unsigned char data )
{
while ( !( UCSRA & (1<<UDRE)))
{}
UDR = data;
}
void main(void)
{
CPU_init();
PORT_init();
usart_init();
while(1)
{
USART_Transmit(65);
}
}
Comment
-
Nguyên văn bởi P511 Xem bài viếtDoạn code sau tôi viết cho vi điều khiển Atmega16 để truyền dữ liệu lên máy tính theo chuẩn giao tiếp RS232 nhưng không chạy, không biết tại sao. Mong mọi người chỉ giùm!
Truyền dữ liệu 8 bit, 2 bit stop, 9200bps.
# include <iom16v.h>
void CPU_init(void)
{
asm("CLI");
MCUCR = 0x00;
GICR = 0x00;
TIMSK = 0x00;
asm("SEI");
}
void PORT_init(void)
{
DDRA=0x00;
DDRB=0xFF;
DDRC=0xFF;
//DDRD=0x00;
DDRD.0=0;
PORTD.0=1;
DDRD.1=1;
}
void usart_init()
{
UCSRA=0x00;
UCSRB=0x00;
UBRRH=0x00;
UBRRL=0x33;
UCSRC=(1<<URSEL)|(1<<USBS)|(3<<UCSZ0);
UCSRB=(1<<RXEN)|(1<<TXEN);
}
void USART_Transmit( unsigned char data )
{
while ( !( UCSRA & (1<<UDRE)))
{}
UDR = data;
}
void main(void)
{
CPU_init();
PORT_init();
usart_init();
while(1)
{
USART_Transmit(65);
}
}
bạn thử truyền thử nha.
DDRD.0=0;
PORTD.0=1;
DDRD.1=1;Phone: 0909319477
Email:
Comment
-
Nguyên văn bởi viewerbk Xem bài viếtputchar("Hello");//kiem tra xem cong com co hoat dong khong
Code:putchar('Hello');//kiem tra xem cong com co hoat dong khong
Nói chung là thay dấu (") bằng (')
Comment
Bài viết mới nhất
Collapse
-
bởi yname11 E có 1 laptop bị hỏng màn hình, e tháo ra thì thấy nó có 4 lớp , lớp ngoài cùng là 1 lớp nhựa rất mỏng màu hơi đen ( chắc là 1 loại film dán), tiếp theo là 1 lớp thủy tinh bị vỡ (màu đen) , đến 1 lớp thủy tinh trắng ( lớp này có...
-
Channel: Thiết bị điện tử cá nhân
Hôm qua, 19:12 -
-
Trả lời cho Mua anten ở đâu?bởi tmcodonAnten bạn thu nguồn sóng nào vậy? Nếu xem truyền hình thì giờ k làm đc anten nữa rồi
-
Channel: Ăng ten và truyền sóng
16-11-2024, 15:34 -
-
Trả lời cho Mạch nguồn đôi dùng 7812 và 7912bởi tmcodonThank bác nhá. Tìm mãi mới thấy. Giờ vọc đã xem sao...
-
Channel: Hỗ trợ học tập
16-11-2024, 10:39 -
-
bởi tungdqEm cần tìm sơ đồ mạch một số Main máy tính đời cao như Asrock B560M-HDV, các cao nhân chỉ giúp với. Thank!
-
Channel: Các mạch điện ứng dụng
15-11-2024, 08:27 -
-
Trả lời cho Kiểm tra biến ápbởi lamvu0677nhân tiện cho mình hỏi thêm về cái phần test hipot (cao áp),là để kiểm tra độ bền cách điện giưa các cuộn dây,mà thấy thông số test thường ở mức 4kvac,vậy nếu mấy con fail đó xài bình thường vẫn dduocj phải không ạ,vì điện mình làm gì lên tới mức đó
-
Channel: Điện tử dành cho người mới bắt đầu
10-11-2024, 08:52 -
-
Trả lời cho Kiểm tra biến ápbởi lamvu0677máy đo số vòng thì cty có ,mà nó to quá,tưởng có máy nào gọn gọn bỏ túi được thì tiện hơn,vì đi lại nhiều...
-
Channel: Điện tử dành cho người mới bắt đầu
10-11-2024, 08:47 -
-
bởi tmcodonMình thấy diễn đàn có chuyên mục quảng cáo rồi mà. Bạn đóng góp để mở luồng riêng
-
Channel: Hướng dẫn sử dụng diễn đàn
09-11-2024, 13:36 -
-
bởi Nicole08Xin chào mọi người, tôi đã sử dụng Flashforge Inventor 2 được gần 5 năm và rất hài lòng với nó, nhưng tuần trước đã xảy ra sự cố. Có vẻ như động cơ bước đưa sợi in vào đầu nóng đã bị hỏng. Mọi thứ khác có vẻ ổn trên máy...
-
Channel: Điện tử dành cho người mới bắt đầu
09-11-2024, 12:55 -
Comment