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
-
Trả lời cho Xin hỏi về màn hình laptopbởi yname11vg, cám ơn bác...........
-
Channel: Thiết bị điện tử cá nhân
Hôm qua, 14:37 -
-
bởi khoine9899
Em chào các anh và mọi người.
Hiện em đang có 1 con bơm màng trong thiết bị y tế đang gặp tình trạng yếu dần hoặc ngừng hoạt động sau thời gian sử dụng
Sau khi tìm hiểu về thông tin của bơm trên mạng thì em được biết...-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 11:22 -
-
Trả lời cho Cần mọi người giúp mạch tạo sóng siêu âm máy rửabởi bqviet
-
Channel: Điện tử công suất
27-11-2024, 20:26 -
-
bởi Minhdai95Em chào mọi người, e đang sửa mạch tạo sóng siêu âm cho máy rửa mà chưa có tài liệu để tham khảo sửa, mọi người cho e xin tài liệu ạ...
-
Channel: Điện tử công suất
27-11-2024, 11:37 -
-
bởi pia2k1Cùng câu hỏi và cần được giải đáp thêm ạ...
-
Channel: Hướng dẫn sử dụng diễn đàn
27-11-2024, 11:28 -
-
Trả lời cho Công thức điện tửbởi mèomướpDạ thời thế giờ thay đổi theo hướng tích cực hơn rồi chú trung sĩ ạ. Kiến thức được chia sẻ ngày càng nhìu nên làm ăn gian dối ko còn dễ dàng như trước đâu ạ. Những thợ nhỏ rồi sẽ thành công nhân sản xuất đồ mới hết thay vì sửa chữa lặt vặt...
-
Channel: Tâm tình dân kỹ thuật
26-11-2024, 21:21 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi mèomướpDạ cùng chuẩn tín hiệu thì chắc chắn là nhận ạ. Vì bản chất oled hay lcd thì đều phải có mạch chuyển đổi trên thanh gỗ rồi chuyển sang những chip xử lý hàng nghìn chân gắn trên những tab mỏng dính rồi mới ra các điểm ảnh theo hàng...
-
Channel: Thiết bị điện tử cá nhân
26-11-2024, 20:31 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi yname11Ok , thanks bác đã chỉ...
-
Channel: Thiết bị điện tử cá nhân
26-11-2024, 15:06 -
-
bởi nguyendinhvanSau bao năm nghiên cứu cái dtvn. Tôi phát hiện công thức này. Các anh em xem đúng bao nhiêu phần trăm nhé !
Chập thì thay. Cháy thì tháo
Làm thì láo. Báo thì hay
May thì khoe. Rủi thì bỏ
Thành tích nhỏ. Báo thành to
Làm cho có. Báo chi li
Sai cả li. Báo...-
Channel: Tâm tình dân kỹ thuật
26-11-2024, 00:35 -
-
Trả lời cho Xin hỏi về màn hình laptopbởi yname11có chắc ko b, màn lcd phải có cao áp mới sáng, màn led thì ko có, ko có cáp chuyển đổi thì lắp thế nào đc ??...
-
Channel: Thiết bị điện tử cá nhân
25-11-2024, 22:31 -
Comment