Nếu đây là lần đầu tiên đến với Điện Tử Việt Nam, bạn có thể đọc phần Hỏi đáp bằng cách nhấn vào liên kết. Có thể bạn cần đăng kí trước khi có thể gửi bài . Để bắt đầu xem bài viết, chọn diễn đàn bạn muốn thăm dưới đây.
Thông báo
Collapse
No announcement yet.
Đố vui về PIC, các câu đố cực vui và cực hay... hehe..
Gửi 4MD: câu đố của bác tại chân RA4 có thêm 1 tính năng đặc biệt nữa mà có khi bác ko nghĩ ra cũng nên... he he...
Bác CHIBANG làm khó em rồi!
Có phải ý bác là: Chân RA4 có chức năng khác nữa là lối vào cho một timer ngoài nên cần một điện trở PULL-UP kéo lên khoảng 10k ?
Em sẽ trả lời câu đố trên sau 1 tuần nữa, hi hi.... Và thêm 1 câu đố hay nữa cho các bác đê...cac cao thủ về vi điều khiển nhào dô đê. Câu hỏi này ko chỉ áp dụng cho PIC mà còn ap dụng cho mọi loại vi dieu khien.
Trong C, nếu khi khai báo biến. Ví dụ:
unsigned char a,b,....;
Lỡ may nó báo là hết RAM cho việc khai báo biến. Vậy giải pháp nào để có thể khai báo thêm một số biến kiểu unsigned char mà bộ dịch ko báo lỗi và hệ thống vẫn chạy đúng? khà khà
Em sẽ trả lời câu đố trên sau 1 tuần nữa, hi hi....
Và thêm 1 câu đố hay nữa cho các bác đê...cac cao thủ về vi điều khiển nhào dô đê. Câu hỏi này ko chỉ áp dụng cho PIC mà còn ap dụng cho mọi loại vi dieu khien.
Trong C, nếu khi khai báo biến. Ví dụ:
unsigned char a,b,....;
Lỡ may nó báo là hết RAM cho việc khai báo biến. Vậy giải pháp nào để có thể khai báo thêm một số biến kiểu unsigned char mà bộ dịch ko báo lỗi và hệ thống vẫn chạy đúng? khà khà
bác có thể truy cập external data memory ,dòng 51 đều có vùng XRAM để truy cập
có thể dùng khai báo unsigned char xdata để khai báo các mảng lớn
Các giải pháp như: ghép thêm bộ nhớ ngoài, tối ưu phần mềm để giảm biến đều ko được chấp nhận. Giải pháp dùng EEPROM, FLASH cũng đương nhiên ko được châp nhận bởi liên quan tới tốc độ và số lần ghi xóa...
Thấy bác Falleaf cứ để ở mục chú ý nên tui trả lời vậy. Chi Bang xem có đúng ko nhé.
Lúc đó huy động các thanh ghi chức năng đặc biệt và coi đó như một biến ta lưu trữ, tất nhiên thanh ghi đó phải đảm bảo các yếu tố như:
+Có thể ghi/đọc.
+Ko dùng đến module chức năng liên quan đến thanh ghi đó.
Ví dụ: nếu ta ko sử dụng đến tính năng ghi/đọc EEPROM của PIC thì có thể coi các thanh ghi như: EEADR,EEADRH,EEDATA coi như là biên lưu trữ
Ví dụ: nếu ta ko sử dụng đến tính năng của timer1 của PIC hay 89(TMR1ON=0), thì có thể sử dụng các thanh ghi TMR1H,TMR1L coi như là biên lưu trữ
...
Cái này thú thực falleaf đầu hàng bác CB. Một là Falleaf chưa bao giờ dùng hết RAM theo cái kiểu thiếu vài thanh ghi. Hai là falleaf chưa bao giờ xài HT PIC... thế nên chịu chết, không biết đó có phải là thủ thuật của HT PIC chăng, chứ nếu hết RAM thì đúng là chịu.
Cách của bác BA thì falleaf không cho rằng đó là ý định đố của CB, nếu mà CB định đố vậy thì rõ ràng là cù nhầy rùi ... hehehe... vì nếu chỉ cần thêm vài thanh RAM, thì vẫn dùng các thanh RAM tương tác không đồng thời để sử dụng được. Thực tế thì sẽ chẳng ai làm kiểu vậy, chỉ cần cải tiến cái này cái kia một tí thì sẽ tiết kiệm được vài thanh RAM đó.
Các giải pháp như: ghép thêm bộ nhớ ngoài, tối ưu phần mềm để giảm biến đều ko được chấp nhận. Giải pháp dùng EEPROM, FLASH cũng đương nhiên ko được châp nhận bởi liên quan tới tốc độ và số lần ghi xóa...
Vì em đã chú thích ở trên rồi.
Ví dụ khi khai báo hết cả RAM mất rồi, người ta thường nghĩ đến chuyện:
-Tối ưu thuật toán để giảm RAM, thường thì tăng khả năng tính toán để giảm RAM.
-Ghép RAM ngoài.
-Chọn con uC khác nhiều RAM.
-Dùng giải pháp Flash/EEPROM để thay thế....
Lối mòn là như vậy... và như vậy rất mất nhiều máu... Bởi vậy có một cách khác thường mà ít ai để ý đến là chẳng đi đâu xa là dùng ngay các thanh ghi chức năng để làm RAM vì thực chất nó cũng là RAM mà.Thường thì một ứng dụng ta ko thể sử dụng tất cả các chức năng của vi điều khiển, bởi thế thừa rất nhiều chức năng ko dùng tới, vậy tại sao ta ko tận dụng nó vào việc lưu trữ biến???
Ví dụ PIC chẳng hạn: module timer1, timer2, I2C, chức năng ghi/đọc EEPROM, rs232, compare/pwm,adc.... rất rất nhiều. Một ứng dụng thường thì cũng chỉ khai thác một phần nào đó nên ---> thừa nhiều module chưa đụng tới. Trong khi ứng dụng của ta thiếu một vài ô RAM để lưu trữ, ví dụ vài biến: unsigned char, vậy ta dại gì mà ko cù nhầy... tận dụng tài nguyên đó.
Tuy nhiên để tận dụng tài nguyên này thì cần phải cẩn thận, đọc kỹ datasheet:
-Thanh ghi đó có thể ghi/đọc(vì một số thanh ghi chỉ cho ghi hoặc chỉ cho đọc...)
-Module của thanh ghi đó thường disable. Ví dụ timer1 thì phải tắt module timer1 đi mới có thể sử dụng các thanh ghi như TMR1H/L chẳng hạn
-Và cách trên nên chỉ áp dụng khi bí, nghĩa là chương trình chỉ thiếu một lượng RAM nho nhỏ để khai báo biến thôi.
He he.. và cách trên đã làm cho em 01 lần thành công, do dùng con 16F877A thiếu vài biến, ngại chuyển sang dùng 18F nên tương kế tựu kế.. khà khà...
Bác Binh Anh đã có đáp án đúng rồi, khà khà, lần sau bác Binh Anh khoan hãy trả lời nhanh vậy, để các cao nhân khác có hứng thú thì suy nghĩ, thê mới thú vị.
Mà sao luồng này chỉ em độc diễn mãi vậy? có ai có câu đố hay ko nào?
Một con uC ko có EEPROM (ko có chức năng tự ghi vào Flash, ko dùng chế độ sleep mode) và vì một số lý do nào đó nên thỉnh thoảng bị reset do WATCHDOG gây ra, do đó các nội dung tại các biến bị xóa về mặc định hết. Thế là công cốc. Trong khi yêu cầu bài toán cần lưu trữ một số biến để tiếp tục chạy cho lần sau. Vậy có thể ko dùng EEPROM mà vẫn giải quyết tốt bài toán này ko?
Giả thiết là nguồn rất ổn định và ko bao giờ bị mất điện. Và đương nhiên luôn phải enable WD, và ko được thêm linh kiện phụ.
Cấm kích động vì câu đố của tui... khà khà..
Last edited by CHIBANG; 27-11-2005, 00:09.
Lý do: Thêm một câu đố dễ làm các cao nhân kích động
Có một số thanh ghi không bị thay đổi trạng thái ghi reset bởi watchdog timer, phải chăng CB muốn dùng những thanh ghi này?
Thú thực rất khó khi trả lời cho câu hỏi bất kỳ một con uC nào, nhưng nếu con PIC, thì chúng ta hoàn toàn có thể chỉ ra một số thanh ghi không bị thay đổi giá trị do reset bởi WDT. (Xem tài liệu phần RESET)
Cái này là dựa vào câu hỏi "cù nhầy" của CB lần trước mà thử trả lời thôi.. hehehe.. bác CB chơi mấy quả này đúng là falleaf cũng đành bó tay.
Có lẽ bác F nói đúng rồi. Một số con uC khi bị reset của WD hoặc một số nguyên nhân reset khác thì một số thanh ghi ko đổi nội dung.Tính năng này tui đã thử nhưng ko áp dụng vì ko an tâm lắm. Bởi nguồn điện chập chờn xuống quá thấp thì nó ko còn đúng nữa.
Có lẽ đây cũng là câu trả lời mà CB đố lại 4MD là chân RA4 có tính năng này. Bị reset do WD nhưng ko thay đổi nội dung chân RA4(nêu gán TRISA4=0).
Khà khà, thôi, ta lại hành hạ các cao thủ một câu đố nữa.
Giả sử tất cả khởi tạo đều đúng, trình dịch báo dịch thành công. Các cao thủ xem đoạn code sau sai ở đâu?
//code khởi tạo...
//--------------------------Hàm main
main()
{
while(1)
{
if(P0_0==0) thu();
//code...
}
}
//--------------------------Hàm ngắt:
{
//code...
thu();
}
//--------------------------Hàm con
thu()
{
char i;
for(i=0;i++;i<100)
{
//Lam mot viec gi do....
}
}
//--------------------------
Em đang tìm hiểu cách xây dựng chương trình điều khiển động cơ Servo Yaskawa bằng máy tính tuy nhiên khi tìm kiếm trên mạng các hướng dẫn thì thường là điều khiển bằng vi điều khiển hoặc điều khiển bằng PLC hay điều khiển động cơ...
Hai lớp dán mặt trước và mặt sau, gọi là film phân cực. Muốn hiểu rõ về nó thì chịu khó search nhé. Ở đây có rất nhiều chó cứ ngửi thấy phân là sủa nhặng, nên không giải thích nhiều....
Mọi người ơi cho em hỏi cái này ạ, hiện tại em đang làm btl về hiển thị giá trị nhiệt độ trên led 7 thanh sử dụng atmega16, code em chạy trên mô phỏng rất oke nhưng khi lắp qua mạch thực thì bị lỗi ở led đầu tiên bị lỗi như thế này...
Nhờ cả nhà tìm giúp mình thông tin IC này với, thấy ghi 943B W58BAL mà mình tìm mấy ngày nay không được, nó được đóng gói dạng TSSOP 8. Cám ơn cả nhà....
Cảm ơn bạn đã chia sẻ câu chuyện và quá trình phát triển sản phẩm của mình. Trước tiên, thật may mắn khi bạn vượt qua tai nạn và vẫn giữ được niềm đam mê cũng như khả năng sáng tạo trong lĩnh vực kỹ thuật. Việc bạn tiếp tục...
Bạn nên nghiên cứu cái chấn lưu đèn ống Compact fluorescent lamp hay đèn compact trước đã. Nó rẻ đỡ tốn kém.
Sau khi hiểu rõ rồi thì chuyển sang cái mạch này.
Ở cái chấn lưu, tần số của nó linh tinh lắm, tùy điện áp nguồn, tùy...
E có 1 laptop bị hỏng màn hình, e tháo ra thì thấy nó có 4 lớp , lớp ngoài cùng là 1 lớp nhựa rất mỏng màu hơi đen ( chắc là 1 loại film dán), tiếp theo là 1 lớp thủy tinh bị vỡ (màu đen) , đến 1 lớp thủy tinh trắng ( lớp này có...
Comment