à, 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 Cần Cao Thủ Giải Bài Tập Lý Thuyết Mạchbởi SangchunhatAi tốt môn này không ạ, hỗ trợ e phát
-
Channel: Hỗ trợ học tập
hôm nay, 09:51 -
-
bởi SangchunhatEm cần cao thủ giỏi giải bài tập đề thi Lý Thuyết Mạch
Bác nào làm được inboxx em với
Có gửi cafe cảm ơn
Xin cảm ơn ạ-
Channel: Hỗ trợ học tập
hôm nay, 08:56 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi vi van phamSai bét. Bà í không biết cầm mỏ hàn điện (phải viết to chữ điện), nên tui ra chơi với diễn đàn . Chớ thấy vậy mà chê bai tui.
...
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 20:54 -
-
Trả lời cho Biết gì nói nấy, cãi chửi thoải máibởi nhathung1101Và mai tôi lại phải bay...
Chỉ mong muốn anh em hiểu: Là đừng làm dối lòng, khiến đàn em nức nở..
Cứ cãi nhau, ra việc lớn. Chứ đừng vì cái "tôi" rồi làm hỏng bọn chúng..
Ai hiểu cứ nói. Ai thấy sai cứ cãi. Kỹ thuật là vậy. Chỉ đúng khi có kết quả.-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 20:37 -
-
Trả lời cho Biết gì nói nấy, cãi chửi thoải máibởi nhathung1101Xin thưa là tôi rất dốt món Ing Lịch. Chỉ là các bạn đưa lên những từ không ai hiểu, nên tôi phải theo.
Chứ ngày xưa được huấn luyện, cũng không như bạn nói đâu, và bạn Mỹ của tôi, hiểu như người nhà.
Bạn học giỏi thì đưa mấy từ lên đây đi, về điện tử thuần túy để anh em nghiên cứu....-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 19:59 -
-
Trả lời cho Biết gì nói nấy, cãi chửi thoải máibởi nhathung1101Tôi "cũng tưởng thế". Nhưng giờ tôi sẽ để họ hiểu "Phổ biến kiến thức đường phố" nó khác thế nào.
Mời bạn theo dõi tiếp....-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 19:53 -
-
Trả lời cho Biết gì nói nấy, cãi chửi thoải máibởi nhathung1101Lão lại quên: Nhất Thủy nhì Hỏa
Hà Nội lụt thì toi cả quần chip....-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 19:49 -
-
Trả lời cho Biết gì nói nấy, cãi chửi thoải máibởi nhathung1101Cứ cãi chửi nhau đi mà...
Nhưng nhớ là vào đây cãi chửi nhau, chứ mấy luồng kỹ thuật bên ngoài thì làm cho đúng.
Ai thích cãi chửi nhau cứ vào đây gặp tôi!-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 19:45 -
-
Trả lời cho Hàn chì thiếc lên nhôm.bởi nhathung1101
Lão lại bị bà í bắt ngủ riêng rồi....
...
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 19:38 -
-
Trả lời cho Sạc bình acquy 30ahbởi nhathung11014r có luồng "Đánh giá...." sao không đăng???
Đề nghị bqv chuyển luôn. Và xóa bài của tôi luôn cho gọn....-
Channel: Điện tử dành cho người mới bắt đầu
Hôm qua, 19:32 -
Comment