à, cảm ơn bạn nhiều lắm, mình làm dc rồi.
Thông báo
Collapse
No announcement yet.
a USART trong AVR
Collapse
X
-
Nguyên văn bởi Le Thi Bich Xem bài viếtchắc kết nối trong mô phỏng có vấn đề j đó anh ạ hoặc USART có vấn đề vì làm LCD thì em test trên mạch thật chuẩn rồi mà, chỉ có cái mất điện em thay bằng xung vào chân int1 thôi, nhưng em thấy trong code của anh vẫn có khai báo lcd đấy thôi
"#asm
.equ __lcd_port=0x18 ;PORTB"
nếu không cần LCD thì không cần khai báo đến nó nữa.
chắc vụ này phải nhờ mấy anh Pro rồi
một việc nữa, nếu eeprom chưa ghi vào lần nào thì nó sẽ mặc định giá trị là 0xff vậy anh thử sửa thế này xem sao:
trước lệnh i=eeprom_doc(0x00) dòng 173 anh chèn thêm:
if (EEPROM_doc(0x00)==0xff)
{EEPROM_viet(0x00,0)};
if (EEPROM_doc(0x01)==0xff)
{EEPROM_viet(0x01,0)};
chúc anh thành công
Comment
-
Mình gửi kèm lại bài của Bích, mìn thử bằng LCD thì thấy không dc, không biết mô phỏng sai ở đâu, còn phần code của mình , mình đã sửa nhưng khi cho ra theo USART thì nếu cho thẳng lối ra bằng 1 số nào đó thì ra được nhưng thử lối ra =j thì không ra dc kết quả, chỉ có 1 bit stop đầu còn các bit khác đều bằng 0Attached Files
Comment
-
Nguyên văn bởi hoangsonk49 Xem bài viếtMình thấy như vậy không dc Bích à. nếu mà sau lệnh này mà mình gán i và j cho giá trị ở địa chỉ 0x00 và0x01 thì mặc nhiên là nó sẽ bằng 0 khi chưa mất điện
dùng lệnh if mà anh
hihi khổ anh...
vì kết nối LCD bằng cổng B nên anh đổi lại PORTB=out đi là được đấyLast edited by Le Thi Bich; 23-10-2008, 17:00.Thiết kế chế tạo các loại máy xoáy nắp, chiết rót định lượng dùng trong dược phẩm và thực phẩm.
Comment
-
Nguyên văn bởi AVR_VN Xem bài viết@: Le thi bich: Em cứ đọc đi, em lập trình dùng bằng C, nhất là dùng Codevision thì cái này dễ lắm , cứ tự mò đi cho biết
em gặp vấn đề nữa:
em có một con mater và 3 con slaver nhưng em chưa biêt nên chọn phương án nào để kết nối cho từng con slaver nhận dữ liệu dùng thêm chân hay phát một đoạn mã lệnh địa chỉ trước khi phát dữ liệu, chíp nhận có cần phát thông báo lại không (theo kiểu bắt tay) vì em không phải dân viễn thông nên không hiểu nguyên tắc thu phát lắm, các anh cho em lời khuyên về nguyên tắc cũng được
em cảm ơnThiết kế chế tạo các loại máy xoáy nắp, chiết rót định lượng dùng trong dược phẩm và thực phẩm.
Comment
-
Nên dùng kiểu kết nối RS485 và sử dụng giao thức modbus để truyền dữ liệu. Đây là link để tìm hiểu về giao thức này:
http://cars9.uchicago.edu/software/e...ocol_V1_1b.pdf
http://www.modbus.org/docs/Modbus_over_serial_line_V1_02. pdf
http://www.eecs.umich.edu/~modbus/documents/PI_MBUS_300.pdf
Comment
-
Nguyên văn bởi Le Thi Bich Xem bài viếtem đọc và mò mãi dùng cả từ điển lẫn avtran để dịch mất một ngày mà làm cứ lỗi, xem ví dụ của anh Hiếu 5phút sau em làm được luôn"đúng là học thây không tày học bạn"
em gặp vấn đề nữa:
em có một con mater và 3 con slaver nhưng em chưa biêt nên chọn phương án nào để kết nối cho từng con slaver nhận dữ liệu dùng thêm chân hay phát một đoạn mã lệnh địa chỉ trước khi phát dữ liệu, chíp nhận có cần phát thông báo lại không (theo kiểu bắt tay) vì em không phải dân viễn thông nên không hiểu nguyên tắc thu phát lắm, các anh cho em lời khuyên về nguyên tắc cũng được
em cảm ơn*** Thành viên không biết gì về điện ***
Comment
-
Mọi người xem hộ đoạn code này, chỉ là khi lối vào có ngắt INT0 thì cho j=10; và xuất ra USART mà sao mô phỏng nó toàn ra 0. Nếu cho j=10 vào chỗ while (1)... thì dc, nhưng để ở interupt thì không ra gì, thảo nào mấy cái mô phỏng trc toàn sai:
/************************************************** ***
This program was produced by the
CodeWizardAVR V1.25.9 Professional
Automatic Program Generator
© Copyright 1998-2008 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com
Project :
Version :
Date : 10/23/2008
Author : gh
Company : ghjghj
Comments:
Chip type : ATmega8
Program type : Application
Clock frequency : 1.000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
************************************************** ***/
#include <mega8.h>
int i,j;
// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
// Place your code here
j=10;
}
// Standard Input/Output functions
#include <stdio.h>
// Declare your global variables here
void main(void)
{
// Declare your local variables here
// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTB=0x00;
DDRB=0x00;
// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTC=0x00;
DDRC=0x00;
// Port D initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=T State0=T
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
TCCR0=0x00;
TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Rising Edge
// INT1: Off
GICR|=0x40;
MCUCR=0x03;
GIFR=0x40;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// USART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// USART Receiver: Off
// USART Transmitter: On
// USART Mode: Asynchronous
// USART Baud Rate: 9600
UCSRA=0x00;
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x06;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;
// Global enable interrupts
#asm("sei")
while (1)
{
// Place your code here
UDR= j;
};
}
Comment
-
Nguyên văn bởi hoangsonk49 Xem bài viếtối, vẫn không ăn thua, Lối ra mô phỏng vẫn chỉ có một giá trị 100101000. Không thay đổi gì cả
anh nhấn ngắt đi xem nào, nếu có ngắt thì trình ngắt mới thực hiện và lúc đó mới được j=10; còn không là nó chỉ bằng một giá trị mặc định bất kỳ nào đóThiết kế chế tạo các loại máy xoáy nắp, chiết rót định lượng dùng trong dược phẩm và thực phẩm.
Comment
-
Nguyên văn bởi AVR_VN Xem bài viếtEm dùng I2C đi em ơi, I2C tương rất thuận tiện để giao tiếp nhiều CHIP
em học maĩ mới biết cách dùng cái món USART các bác đã bảo em làm ngay cái món RS232, 485 hay I2C
em chỉ muốn làm một ứng dụng phát triển món usart mà.
thôi em không phân định mater hay slaver làm gì cả , cứ nối luôn 3 chân TXD và RXD của 3 chíp với nhau rồi đặt cho mỗi chíp một mã địa chỉ riêng, thi cần phát dữ liệu thì phát đoạn mã địa chỉ trước đúng của chíp nào chíp đó sẽ phát một doạn mã báo nhận lệnh và sắn sàng đợi nhận dữ liêu. chíp phát mã địa chỉ liên tục cho đến khi nào có tín hiệu báo nhận lệnh thì phát dữ liệu đi.
không biết có được không vì e thấy như thế có hạn chế là chỉ cần một chíp phát tín hiệu là cả 3 chíp phải dừng (chuyển sang trình ngắt USART). liệu có được không các anhThiết kế chế tạo các loại máy xoáy nắp, chiết rót định lượng dùng trong dược phẩm và thực phẩm.
Comment
-
USART làm sao giao tiếp thế được, đây là một trong những tác hại của Codevision, em chưa hiểu bản chất của nó, loại giao tiếp này trong 1 khung truyền làm gì có bit địa chỉ đâu, người ta chỉ dủng để giao tiếp 2 chip với nhau, hoặc cùng lắm là giao tiếp kiểu vòng tròn ( nếu hơn 2 chíp ), nhưng đại khái là củ chuối, thế mới sinh ra các chuẩn giao tiếp khác, I2C or CAN ...*** Thành viên không biết gì về điện ***
Comment
-
Nguyên văn bởi AVR_VN Xem bài viếtUSART làm sao giao tiếp thế được, đây là một trong những tác hại của Codevision, em chưa hiểu bản chất của nó, loại giao tiếp này trong 1 khung truyền làm gì có bit địa chỉ đâu, người ta chỉ dủng để giao tiếp 2 chip với nhau, hoặc cùng lắm là giao tiếp kiểu vòng tròn ( nếu hơn 2 chíp ), nhưng đại khái là củ chuối, thế mới sinh ra các chuẩn giao tiếp khác, I2C or CAN ...Thiết kế chế tạo các loại máy xoáy nắp, chiết rót định lượng dùng trong dược phẩm và thực phẩm.
Comment
Bài viết mới nhất
Collapse
-
bởi thanghiCùng với sự bùng nổ của công nghệ và xu hướng chuyển đổi số, ngành điện tử đang trở thành một trong những lĩnh vực thu hút nhiều doanh nhân và nhà đầu tư. Việc thành lập công ty trong ngành này không chỉ giúi hạn ở việc sản xuất phần cứng mà còn mở rộng sang các dịch vụ...
-
Channel: Xu hướng, nhu cầu và thị trường
hôm nay, 21:02 -
-
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 -
Comment