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 Hỏi cách điều chế xungbởi thetungBạn cho qua cái Tờ ri gơ Sờ mít ấy ......
-
Channel: Kỹ thuật điện tử tương tự
16-12-2024, 11:26 -
-
Trả lời cho Hỏi cách điều chế xungbởi nguyendinhvanCó gì mà khó ?
Răn cưa vuông đây
...-
Channel: Kỹ thuật điện tử tương tự
15-12-2024, 23:36 -
-
Trả lời cho hỏi về tụ điệnbởi ndp62Chữ " VENT" không phải là tên hãng sx tụ đâu ,vó thế là 1 ký hiệu liên quan tụ lowesr ?
-
Channel: Điện thanh
15-12-2024, 18:24 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi bqvietTrừ trường hợp công suất (rất) thấp, hầu như tất cả các loại nguồn xung thông thường đều có tụ nhỏ 1 - 10nF nối giữa sơ cấp và thứ cấp, để thoát nhiễu và để chống hiện tượng tương tự tĩnh điện. Vụ này đã thảo luận vài...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 22:02 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi namlangnhoE thử 3 cái nguồn nó đều giống nhau. Nên e làm tiếp địa luôn.
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 19:58 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi mèomướpDạ chú sắm con át chống giật và thay nguồn tổ ong khác cho an toàn ạ. Đa phần nguồn xung đều xả nhiễu của bên thứ cấp về điện lưới qua 1 con tụ nên cảm giác tê sẽ khó xác định rõ ràng là do rò điện hay là nó vốn vậy...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 18:51 -
-
bởi namlangnhoXin chào mọi người. E có sử dụng 1 cục nguồn tổ ong 12v-30A chạy đèn led xe trà sữa. Mà thợ thi công bị rò điện nên điện rò ra khung xe. E dùng đồng hồ đo điện ở khung xe và cả output thì thấy có dòng điện xoay chiều hơn 100v. Nên chạm...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 00:12 -
-
bởi Manh.n.trCác bác cho em hỏi cách điều chế xung răng cưa sang xung vuông với ạ. Em đang thấy khó ạ...
-
Channel: Kỹ thuật điện tử tương tự
13-12-2024, 20:46 -
-
Trả lời cho hỏi về thiết kế mạch tuần tự trên proteusbởi Hatruong1309
-
Channel: Hỗ trợ học tập
12-12-2024, 00:33 -
-
bởi Hatruong1309Cho e hỏi là phần chân X thì nối cái j thì mạch mới chạy được ạ và kiểm tra đúng sai kiểu j ạ
Đề bài thiết kế mạch dãy đồng bộ nhận biết dãy tín hiệu vào ở dạng nhị phân được đưa liên tiếp ở đầu vào X và được đồng...-
Channel: Hỗ trợ học tập
12-12-2024, 00:33 -
Comment