mình mới học về AVR nên không biết nhiều nên mong cao thủ giúp đỡ, vấn đề của mình là mình dùng hai chân PA0 và PA1 làm việc ở chế độ ADC, vây trong chương trình khi đọc giá trị của PORTA vào một biến nào đó thì hai bít thứ 0 và 1 của biến đó sẽ có giá trị là bao nhiêu
Thông báo
Collapse
No announcement yet.
mọi người cho mình hỏi chút về ADC trong ATmega16
Collapse
X
-
Cái này tôi cũng đang thắc mắc đây. Hồi trước có thử mãi mà vẫn không đựoc cách vừa xuất 7 chân của PORTA và đọc chân còn lại. Cuối cùng là cứ mỗi khi xuất PORT thì lại phải tắt ADC đi. Cũng còn một cách nữa là định hướng PA0,PA1 là cổng vào. Nhưng cũng thấy cứ thế nào ấy???
-
bạn phải thiết lập pa0, pa1 là đầu vào. Rồi thiếp lập thanh ghi admux(chọn kênh adc)-nó có 8 kênh, thanh ghi j đó về adc nữa(tôi ko nhớ). Sau đó bật ngắt adc complete lên, rồi chờ. Khi chuyển đổi xong nó sẽ để giá trị vào 2 thanh ghi adch:adcl, mình sẽ đọc 2 giá trị này.
Bạn xem ở datasheet là có hết.|
Comment
-
ý của mình là mình dùng hai chân PA0 và PA1 cho chức năng ADC ( tức là hai chân này la đâu vào), sau đó mình dùng 6 chân từ PA2 đến PA7 làm đầu ra, trong chương trình mình viết co đoạn lệnh trước khi xuất dữ liệu ra các chân từ PA2 đến PA7 thì phải kiểm tra các giá trị hiện thời của các chân đó rồi mới xuất dữ liệu mới ra, bây h mình đọc kiểm tra PORTA thì lúc này hai bit mà mình làm đầu vào ADC sẽ có giá trị là bao nhiêu, vì lúc này ở hai chân này là tín hiệu analog chứ không phải là tín hiệu số
Comment
-
bạn "naruto" có thể nói rõ bài toán của bạn chi tiết hơn không?
mình chưa hiểu rõ ý của bạn. mình thử xem nếu đúng thì tốt.
ví dụ:
char Status = 0;
if(PINA.2 ==1) //kiểm tra P2 nếu mức 1
{
Status=1; //báo đang là mức 1
}
............................
if(PINA.7==1)
{
Status=1;
}
if(Status==1) // nếu trạng thái một trong các chân từ PA2 đến PA7 là mức 1
{
//giả sử xuất ra 6 chân còn lại mức 1
PORTA = 0x3F;
//xuất ra PORTA.3 đến PORTA.7 mức thấp
PORTA = 0x30;
Status=0;
}n
ĐT: 0986 492 489
Tham khảo:
Comment
-
[QUOTE=minhhieu;45049]bạn "naruto" có thể nói rõ bài toán của bạn chi tiết hơn không?
mình chưa hiểu rõ ý của bạn. mình thử xem nếu đúng thì tốt.
ví dụ:
char Status = 0;
if(PINA.2 ==1) //kiểm tra P2 nếu mức 1
{
Status=1; //báo đang là mức 1
}
............................
if(PINA.7==1)
{
Status=1;
}
đúng như bạn viết, tuy nhien minh muốn kiểm tra PORTA chỉ bằng một lệnh thôi vi dụ giả sư các chân từ 2 đến 7 đang ở mức 1 và mình muốn kiểm tra các bit đó xem có đúng bằng 1 không chỉ với một lệnh câu lênh if, tuy nhiên 2 bit PINA.0 và PINA.1 lúc này đang dùng cho ADC
nên không rõ giá trị của hai bit PINA.0 và PINA.1 khi đọc vào là 1 hay là 0 để đặt điều kiện kiểm tra
vi dụ
unsigned int kiemtra;
kiemtra=PORTA; // vậy biến Kiemtra sẽ = 0xff hay = 0x3f
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Đấu tắt điện cho máy tính bảngbởi bqvietBqv cáo lỗi vì chưa đủ khả năng diễn giải để người đọc hiểu. Người làm kỹ thuật sâu đôi khi như thế đó. Về việc nạp pin không vào dù cell mới, khả năng cái mạch quản lý đó đã hỏng - cũng chính là nguyên nhân đám cell cũ hỏng từ đầu.
-
Channel: Thiết bị điện tử cá nhân
06-12-2025, 17:17 -
-
Trả lời cho Xin hỏi về mạch thu FM/AM trong catsettebởi nguyendinhvanTheo tôi, nó chỉ là cái Tuy- ê - nơ, hoặc là khối Trung Văn Tần, nó một phần trong cái Da đì ô thôi. Vì có thấy một chỗ có ba chân hàn, giiống như chân Cờ rít sờ tăng 455 ki nô hẹc. Còn khối Tuy ê nơ thì không nhìn thây cái Di ốt Va di cáp...
-
Channel: Điện thanh
05-12-2025, 19:59 -
-
Trả lời cho Đấu tắt điện cho máy tính bảngbởi afrendlyCó vẻ ngoài hiểu biết của mình rồi. Cuối cùng mình quyết định tìm mua 2 pin trên Shopee, giá 200K thay vào. Tuy nhận pin được 1%, sạc mãi không vào nhưng cũng mở được máy lên. Vậy cũng tạm. Cảm ơn bạn đã hỗ trợ nhé....
-
Channel: Thiết bị điện tử cá nhân
04-12-2025, 01:27 -
-
Trả lời cho Máy điện châm ?bởi nick22Đúng như bạn nói, máy điện châm hiện nay trên thị trường đã khá đa dạng về mẫu mã, chức năng và giá thành.
-
Channel: Điện tử y sinh
01-12-2025, 13:23 -

Comment