à, 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
-
Trả lời cho Tiếng Anh cho người Việtbởi tuyennhanCái thư sai ngay câu chào Dear sir mới đúng Hi chỉ dùng cho người quen , các vấn đề về kỹ thuật nó không trả lời hoặc nói loanh quanh tránh ảnh hưởng đến công ty .
Giup1 người cần không giúp người không cần với lại văn mình vợ người nha đừng quên .-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 07:44 -
-
Trả lời cho Tiếng Anh cho người Việtbởi vi van phamCám ơn những lời chúc tốt đẹp của em.
Việc em làm giống như chê sếp dốt, chẳng những không có miếng xôi nào để ăn mà còn chịu nhiều trù dập lên bờ , xuống ruộng.
Hãy tránh vết xe đổ của tui đi. Dành thời gian lo cho gia đình....-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 02:00 -
-
Trả lời cho Tiếng Anh cho người Việtbởi nhathung1101Ngoại ngữ là không thể thiếu, nhất là làm việc với công nghệ.
Nhưng học để tán gái hay để đọc datasheet, manual là chuyện cần quan tâm.
Và đọc ở nguồn nào đáng tin cậy, chứ cứ lên tictok hay facebook học lỏm thì...-
Channel: Tâm tình dân kỹ thuật
22-02-2025, 22:18 -
-
Trả lời cho Tiếng Anh cho người Việtbởi dinhthuong80Bác nói rất khách quan và chính xác. Ngoại ngữ là chìa khóa thăng tiến dù làm gì. Chả thế mà nay nước mình dạy tiếng Anh từ tiểu học.
Nhớ hồi năm 2006 em ra Hải Phòng, Hải Dương tìm việc, thời đó ở Bình Dương lương công...-
Channel: Tâm tình dân kỹ thuật
22-02-2025, 14:51 -
-
Trả lời cho Tiếng Anh cho người Việtbởi dinhthuong80Cảm ơn bạn, ĐT cũng có ý nghĩ như vậy.
Thực ra, lỗi của hãng đó ( gọi là hãng vì không chỉ một model sản phẩm) là về phần cứng, ĐT tuy không biết về lập trình phần mềm nhưng cũng thấy rằng sẽ chẳng khó khăn gì đáng...-
Channel: Tâm tình dân kỹ thuật
22-02-2025, 14:39 -
-
Trả lời cho Tiếng Anh cho người Việtbởi dinhthuong80Dạ, bác bảy mấy tuổi đời rồi cũng không kém bố cháu bao nhiêu. Tuổi nghề thì bác cũng đáng tuổi cha chú.
Nhưng 2 điều trên thì chưa hẳn đã đáng quí và đáng tôn trọng bằng việc bác rất nhiệt tình chia sẻ kinh nghiệm chuyên...-
Channel: Tâm tình dân kỹ thuật
22-02-2025, 14:28 -
-
Trả lời cho Tiếng Anh cho người Việtbởi bqvietĐúng, nếu chú tâm thì chỉ cần mỗi tiếng Việt là đã khá đủ để làm đa số công việc thông thường, ở thời đại ngày nay khi tài liệu sách vở phương tiện thông tin liên lạc đã nhiều. Nhưng cũng chính ở thời nay giao lưu các nước nhiều...
-
Channel: Tâm tình dân kỹ thuật
21-02-2025, 20:26 -
-
Trả lời cho Tiếng Anh cho người Việtbởi mèomướpDạ cháu nghĩ chú dinh... cứ mạnh dạn gửi thư đi ạ, chú có thể gửi bằng văn bản in chuyển phát nhanh sẽ có giá trị hơn. Vấn đề chưa hẳn là cần hãng làm gì đó, mà chỉ đơn giản là mình cảm thấy nhẹ lòng vì đã làm những việc bản...
-
Channel: Tâm tình dân kỹ thuật
21-02-2025, 12:32 -
-
Trả lời cho Tiếng Anh cho người Việtbởi vi van phamNhững lần hắt hơi sổ mũi làm tôi mệt lã, phải dùng rượu uống để ngũ. Tôi cũng đang uống rượu 1 mình, viết vài dòng này cho em ( có lẽ dt chỉ bằng tuổi em tôi).
Dinh thuong dang đi vào vết xe đổ của tôi. Càng chứng minh, có...-
Channel: Tâm tình dân kỹ thuật
20-02-2025, 21:31 -
-
Trả lời cho Hỏi về cách hàn linh kiện ( giúp tớ với )bởi bqvietThiết nghĩ thi thoảng bác lên đây chia xẻ ít kinh nghiệm cũng vui rồi. Còn chuyện con người sinh lão bệnh tử là thường, sống cùng với quy luật đó thôi. Bqv nhớ trước đây bác từng kể về chuyện rang chì ô-xít bằng chảo để phục hồi bình điện, đấy cũng là thành quả đáng nể phục ở thời kỳ thiếu thốn đó.20-02-2025, 17:22
Comment