Thursday, March 19, 2015

NHỮNG CÁCH KHẮC PHỤC CÁC TẬP TIN VĂN BẢN BỊ LỖI

Trong công việc, không phải lúc nào các tài liệu cũng ở trạng thái tốt nhất, nếu như bạn có một tập tin văn phòng bị hư hỏng và từ chối thao tác mở, đừng lo lắng, có thể vẫn sẽ có cách giải quyết.


Bạn có thể lần lượt thử các cách khác nhau để phục hồi. Đôi khi chính bản thân bộ phần mềm Office lại trở nên thông minh và tự nó giải quyết việc hư hỏng dữ liệu, nhưng đôi khi bạn cũng nên nhờ đến sự giúp sức của các chương trình phần mềm của bên thứ ba hoặc kỹ năng tìm kiếm để tìm một tài liệu khác thay thế. Sau đây là một số gợi ý.
Tính năng sửa chữa được tích hợp sẳn trong Office
Office có thể giúp bạn sửa chữa các tập tin bị hỏng hoặc khôi phục lại từ phiên bản được sao lưu trước đó. Cụ thể là:
Open and Repair: Trước tiên, bạn hãy mở ứng dụng Office có liên quan và truy cập vào File > Open, sau đó điều hướng đến tập tin cần mở nhưng đã bị hỏng và nhấn vào mũi tên kế bên nút Open, sau đó chọn lệnh Open and Repair… Phương pháp này tuy không phải là giải pháp đáng tin cậy nhất nhưng nó cũng là một gợi ý mà bạn nên thử qua.


AutoRecover: Nếu như trong quá trình làm việc, bạn vô tình phải khởi động lại máy tính, rất có thể các dữ liệu Office đang làm việc sẽ mất đi. Tuy nhiên, sẽ thật là tuyệt vời nếu bạn có thiết lập tính năng AutoRecover, và khi khởi động lại ứng dụng Office, mọi thứ sẽ được phục hồi trở lại và bạn có thể tiếp tục làm việc.








Nếu mở lại dữ liệu đang soạn thảo, bạn truy cập vào File > Recent, rồi sau đó nhấn vào Recover Unsaved Documents. Lập tức bạn sẽ được đưa đến thư mục nơi việc tự động sao lưu dữ liệu Office được thực hiện và lưu trữ.
Tìm kiếm trên hệ thống
Các bản gốc của tập tin của bạn có thể bị hỏng, nhưng có thể có một phiên bản của nó trên ổ đĩa của bạn hoặc đã được tạo ra thông qua các phần mềm Office hoặc sao lưu của hệ thống. Và bạn có thể tìm lại nó bằng các gợi ý sau.
Previous Versions: hay còn gọi là phiên bản trước. Tùy thuộc vào cài đặt hệ thống của bạn, bạn có thể thấy rằng Windows đã lưu trữ bản sao dữ liệu của bạn. Các bản sao lưu có thể đến từ điểm khôi phục hoặc nếu bạn đã kích hoạt tính năng Windows Backup trước đó. Để kiểm tra, nhấp chuột phải vào tập tin văn phòng của bạn và chọn Properties, sau đó chọn tab Previous Versions.



Temporary Files: hay còn gọi là tập tin tạm. Chúng được lưu trữ ở nhiều nơi khác nhau trên Windows. Và trong nhiều trường hợp bạn có thể dùng nó để khôi phục lại tập tin bị hỏng bằng cách thực hiện việc tìm kiếm với từ khóa “*.tmp” với “*” là tên tập tin và “.tmp” là định dạng của tập tin tạm.


Phần mềm của bên thứ ba
Nếu Office không thể giúp bạn, hãy thử với các phần mềm của bên thứ ba xem sao.
Sử dụng một phần mềm Office khác: Tệp có thể bị hỏng khi mở nó trong Microsoft Office, nhưng điều đó không có nghĩa là nó cũng như vậy trong phần mềm văn phòng khác. Ví dụ, Apache OpenOffice là một lựa chọn phổ biến và miễn phí mà có thể mở tập tin của bạn mà không có vấn đề gì.


Trường hợp tập tin bị hỏng đã bị xóa khỏi hệ thống, bạn có thể ngay lập tức khôi phục lại nó – và biết đâu nó sẽ trở về trạng thái bình thường – bằng các công cụ phục hồi dữ liệu, và Recuva là một lựa chọn hoàn hảo.



Mất hoặc hư hỏng dữ liệu luôn là vấn đề gây đau đầu cho người dùng máy tính, do đó, bạn nên thường xuyên sao lưu dữ liệu để tránh trường hợp xấu xảy ra. Hi vọng bài viết sẽ có ích cho bạn.

ROBOT DẪN NGƯỜI QUA ĐƯỜNG (Đề tài sắp được biểu diễn)

Những vụ tai nạn giao thông kinh hoàng xảy ra hàng ngày, hàng giờ đang khiến hình ảnh của Việt Nam xấu đi trong mắt bạn bè quốc tế. Rất nhiều người nước ngoài đã đi từ choáng ngợp tới hoảng sợ khi chứng kiến cảnh các phương tiện cá nhân lưu thông trên đường phố ở Việt Nam.  Giao thông Việt Nam trong mắt người nước ngoài được ví như "ác mộng", "đại dịch", là chốn địa ngục mà chẳng ai dám chắc mình bình yên trở về. Rất nhiều du khách không bao giờ dám quay trở lại du lịch tại nước ta vì lo sợ mỗi khi phải tham gia giao thông, đặc biệt là phải qua đường.

        Không những người nước ngoài sợ qua đường mà ngay cả những người Việt Nam cũng sợ, đặc biệt là người già, trẻ em và người mới lần đầu lên thành phố. Mặc dù có những khu vực ưu tiên cho người đi bộ như khu vực có vạch cho người qua đường nhưng người Việt Nam không có thói quen dừng xe nhường đường cho người đi bộ. Thế là, người nước ngoài thì nhờ người Việt dẫn qua đường, người già thì nhờ người trẻ, trẻ em thì nhờ người lớn, người nhà quê thì nhờ người thành phố. Thế nhưng, không phải lúc nào cũng có người sẵn để nhờ. Đây là vấn đề hóc búa đặt ra cho tất cả các nhà quản lý giao thông và đô thị Việt Nam hiện nay.
       Đà Nẵng với vị thế là thành phố du lịch hàng đầu Việt Nam đón hàng triệu du khách mỗi năm. Nơi đây có hệ thống giao thông được quy hoạch hợp lý và tương đối hiện đại, cho nên đường phố luôn thông thoáng. Tuy nhiên, giống như bao thành phố của Việt Nam, việc qua đường vẫn là vấn đề khó khăn đối với du khách, người già và trẻ em. Thành phố Đà Nẵng lấy năm 2015 là năm “Văn hoá, văn minh đô thị” nhằm nâng cao hơn nữa ý thức của người dân tham gia giữ gìn và phát huy môi trường đô thị của thành phố để thành phố trở thành nơi đáng sống trong mắt bạn bè gần xa.
        Robot dẫn người qua đường là một ý tưởng tuyệt vời của các bạn sinh viên khoa Điện-Điện tử, trường Đại học Duy Tân nhằm giúp đỡ cho người nước ngoài, người già và trẻ em mỗi khi qua đường. Nhằm hưởng ứng năm “Văn hoá, văn minh đô thị” của thành phố Đà Nẵng, các bạn sinh viên đã nghiên cứu thành công và triển khai đưa vào sử dụng Robot dẫn người qua đường ở khu vực đường phố Đà Nẵng, bước đầu đã thu hút sự quan tâm của nhiều người.
Các tính năng của Robot:
·        Dẫn người qua đường phố.
·        Báo bằng tiếng Việt hoặc tiếng Anh.
·        Có đèn báo hiệu khi qua đường.
·        Tự động quay đầu để đón người qua lại.
·        Tự động nhận biết người đến gần.
·        Tự động nhận biết khi đã đến vỉa hè đối diện.
·        Tự động dừng lại khi gặp chướng ngại vật giữa đường.

Tuesday, March 17, 2015

Thảm họa BadUSB bị khám phá, chuẩn kết nối USB có nguy cơ phải "thay máu".

BadUSB hiện là mối nguy hại lớn nhất với hàng triệu máy tính và thiết bị điện tử có kết nối USB trên toàn thế giới

Universal Serial Bus hay còn gọi tắt là USB được tạo ra bởi 1 tập đoàn bao gồm 7 công ty công nghệ lớn với mục đích giải quyết một vấn đề sống còn: "Làm thế nào để đơn giản hóa cách kết nối các thiết bị với máy tính?". Và họ đã thành công, 20 năm sau USB đã trở thành kết nối thông dụng nhất trên thế giới.
May mắn thay, những kẻ có ý đồ xấu sẽ không thể sử dụng BadUSB để thực hiện các hành vi bất hợp pháp của mình, Nohl và Lell không cung cấp mã nguồn của BadUSB cho bất cứ ai, vì chính bản thân họ biết được BadUSB sẽ mang lại nguy hiểm như thế nào.
Trong một cuộc thảo luận tại hội nghị DerbyCon - một hội nghị chuyên đề về máy tính được tổ chức tại Louisville, Kentucky. Adam Caudill và Brandon Wilson đã dịch ngược thành công đoạn mã của BadUSB và chia sẻ nó trên nền tảng chia sẻ mã nguồn GitHub.
Động cơ đằng sau việc phát hành mã nguồn của BadUSB là giúp các chuyên gia tìm ra yếu điểm cố hữu của kết nối USB và chung tay khắc phục nó. Tuy nhiên mối nguy hại ngay cận kề nhất là từ thời điểm này trở đi, kết nối USB đã không còn an toàn một chút nào.
Tuy nhiên nếu ta nhìn vào lịch sử 20 năm của USB, thì USB từ khi được khai sinh, chưa bao giờ được coi là một thiết bị hay kết nối an toàn.
Sử dụng USB như một véc - tơ tấn công
Thuật ngữ véc - tơ tấn công (Attack Vector) ám chỉ con đường thực hiện việc giả danh để đánh lừa hệ thống phòng thủ nhằm khai thác thông tin và công năng của thiết bị bị tấn công. Điển hình là các lỗi bị lợi dụng trong trình duyệt mặc định của Android trong thời gian gần đây.
Đây không phải là cách làm hiếm gặp mà thực sự là kiểu tấn công vốn đã rất phổ biến, tìm lỗ hổng, khai thác lỗ hổng đó và qua mặt hoặc đánh lừa hệ thống bảo mật. Chiêu trò của Hacker là chúng sẽ vứt rải rác các USB chứa mã độc ở các nơi công cộng, từ đó người dùng nhặt về và tò mò cắm vào máy tính của họ mà không mảy may nghi ngờ. Và các đoạn mã độc, phần mềm độc hại cứ thế âm thầm xâm nhập và lén lút đánh cắp dữ liệu từ máy tính này đến máy tính khác.

Làm sao để giữ an toàn cho hệ thống của mình?
Nếu bị tấn công bằng BadUSB, sẽ gần như bạn không thể tự khắc phục được mà sẽ phải nhờ đến các chuyên gia. Và trước khi cứu được máy tính bị nhiễm BadUSB tôi cá là nó đã đánh cắp sạch sẽ mọi dữ liệu của bạn rồi.
Vậy làm thế nào để phòng tránh tối đa những rủi ro này?
Rất may là chuẩn USB thế hệ tiếp theo là USB type - C sẽ hạn chế đến mức tối đa có thể các vấn đề xâm nhập trái phép qua kết nối USB. Tuy nhiên vấn đề gặp phải là nó khó tương thích với các thiết bị cũ nên việc phổ cập gặp khá nhiều khó khăn. Vậy nên chỉ còn những cách thủ công nhất, cơ bản nhất. Đó là không sử dụng các thiết bị USB không rõ nguồn gốc, không chia sẻ các thiết bị USB của bạn. Và đừng để người lạ đặt các thiết bị USB không đáng tin kết nối với máy tính của bạn.

Tham khảo: Makeuseof.com
Nguồn: genk.vn

Saturday, March 7, 2015

BÀI 5: (MSP430 - BASIC) - TIMER



Tổng quát về Timer_A


• Thanh ghi Timer/Counter 16 bit cùng với 2 thanh ghi Capture/Compare.
• Có thể hoạt động ở 4 chế độ khác nhau.
• Hỗ trợ đa chức năng:Capture /Compare,ngõ ra PWM và định thì từng khoảng thời gian.
• Có các chế độ ngắt Timer/Counter và Capture/Compare.
• Có thể lựa chọn để hoạt động với các nguồn xung Clock khác nhau.

Các chức năng cụ thể của Timer A như sau:
1. Nguồn xung Clock:Timer A có thể hoạt động với 1 trong 4 nguồn xung clock sau, tùy thuộc vào yêu cầu của ứng dụng mà bạn cần thực hiện.
• TACLK (Timer A clock): Là một nguồn xung clock ngoại
• ACLK (Auxiliary clock): Là một nguồn clock bổ sung cho Timer A, chỉ được cấp nguồn từ LFXTCL, thường dùng cho hệ thống phụ với clock hoạt động thấp để tiết kiệm năng lượng.
• SMCLK (Submaster clock): thường dùng cho ngoại vi, lấy nguồn từ DCO hoặc XT2.

2. Timer/Counter:Các chế độ hoạt động:
Stop : tắt Timer A.

Up : Chế độ đếm lên của Timer A. Giá trị của thanh ghi TAR (Timer A register) sẽ tăng liên tục từ 0 cho đến một giá trị được định sẵng trong thanh ghi TACCR0 rồi reset về giá trị 0,quá trình hoạt động cứ tiếp tục như vậy.




Continous: Chế độ đếm lên liên tục của Timer A.Trong một chu kỳ hoạt động giá trị của thanh ghi TARsẽ tăng liên tục từ 0 cho đến 0FFFFh rồi reset về giá trị 0.




Up/Down: Chế độ đếm lên/xuống của Timer A. Trong một chu kỳ hoạt động giá trị của thanh ghi TAR sẽ tăng liên tục từ 0 cho đến TACCR0 rồi giảm dần về giá trị 0.




2. Các phương pháp reset Timer_A
- Ghi 0 vào thanh ghi TAR
- Ghi 0 vào thanh ghi TACCR0
- Thiết lập Bit TACLR trong thanh ghi điều khiển Timer (TACTL)

3.Chế độ Capture
Được sử dụng cho sự đo lường chu kỳ thời gian của các sự kiện với các sự can thiệp rất nhỏ của CPU
- Set Bit CAP để lựa chọn chế độ này
- Set Bit SCS đề đồng hồ Capture với khối Timer kế tiếp
- Tín hiệu vào được lấy mẫu bởi CCIxA, được lựa chọn bởi Bit CCISx trong thanh ghi TACCTLx
- Thiết lập Bit CMx để lựa chọn các chế độ Capture
- Khi một xung hợp lệ được phát hiện trên ngã vào thì giá trị trong TAR được chốt trong thanh ghi TACCRx cung cấp một mốc thời gian cho sự kiện
- Cờ ngắt CCIFG được Set
- Bit COV = 1 điều khiển sự tràn sự kiện khi một capture thứ 2 được sử dụng, trước khi giá trị từ capture đầu tiên được đọc

4. Chế độ Compare
Sử dụng để tạo ra những xung ngã ra và điều chỉnh độ rộng xung ngã ra
- Reset Bit CAP để lựa chọn chế độ Compare
- TAR đếm lên đến giá trị được lập trình trong thanh ghi TACCRx
- Khi giá trị Timer bằng giá trị trong thanh ghi TACCRx thì ngắt được sinh ra. Cờ ngắt CCIFG thì Set, EQUx=1
- EQUx có tác dụng so sánh tín hiệu ngã ra OUTx phù hợp với OUTMODx
- Tín hiệu vào CCI được chốt trong SCCI

5. Hoạt động ngã ra




Các thanh ghi Timer_A



1. TACTL, Timer_A control

- TASSELx: Lựa chọn nguồn xung clock Timer_A

  • 00 TACLK
  • 01 ACLK
  • 10 SMCLK
  • 11 INCLK

- IDx: Bộ chia tín hiệu vào

  • 00   /1
  • 01   /2
  • 10   /4
  • 11   /8

- MCx: Bit điều khiển

  • 00 STOP
  • 01 UP
  • 10 CONTINUOUS
  • 11 UP/DOWN
- TACLR: Xóa Timer_A. Set bit này sẽ reset TAR, IDx
- TAIE: Cho phép ngắt Timer_A
  • 0  Không cho phép ngắt
  • 1  Cho phép ngắt
- TAIFG: Cờ ngắt Timer_A
  • 0  Không có trì hoãn ngắt
  • 1  Có trì hoãn ngắt
2. TAR, Timer_A counter

3. TACCTLx, Capture/Compare control

- CMx: Chế độ Capture
  • 00  Không Capture
  • 01  Capture trên cạnh lên
  • 10  Capture trên cạnh xuống
  • 11 Capture trên cả 2 cạnh lên và xuống
- CCisx: Lựa chọn ngã vào Capture/Compare
  • 00  CCIxA
  • 01  CCIxB
  • 10  GND
  • 11  VCC
- SCS: Đồng bộ nguồn Capture
  • 0  Không đồng bộ
  • 1  Đồng bộ
- SCCI: Đồng bồ ngã vào Capture/Compare. Lựa chọn tín hiệu vào CCI thì được chốt với tín hiệu EQUx và có thể đọc thông qua bit SCCI

- CAP: Chọn chế độ
  • 0  Compare
  • 1  Capture
- OUTMODx: Chọn chế độ ngã ra
  • 000  Out
  • 001  Set
  • 010  Toggle/Reset
  • 011  Set/Reset
  • 100  Toggle
  • 101  Reset
  • 110  Toggle/Set
  • 111  Reset/Set
- CCIE: Cho phép ngắt Capture/Compare.
  • 0  Không cho phép ngắt
  • 1  Cho phép ngắt
- CCI: Ngã vào Capture/Compare có thể đọc bới bit này
- OUT: Ngã ra
  • 0  Mức thấp
  • 1  Mức cao
- COV: Sự tràn Capture
  • 0  Không xuất hiện tràn Capture
  • 1  Xuất hiện tràn Capture
- CCIFG: Cờ ngắt Capture/Compare
  • 0  Không có trì hoãn ngắt
  • 1  Có trì hoãn ngắt
4. TACCRx, Timer_A Capture/Compare
TACCRx: là thanh ghi Timer_A Capture/Compare
- Chế độ Capture: TAR được copy vào thanh ghi TACCRx khi Capture được sử dụng
- Chế độ Compare: Thanh ghi TACCRx chứa dữ liệu của sự so sánh giá trị Timer trong TAR

5. TAIV, Timer_A interrupt vector
TAIVx: Giá trị vector ngắt Timer_A
  • 00h  Không có trì hoãn ngắt
  • 02h  Cờ TACCR1 CCIFG
  • 04h  Cờ TACCR2 CCIFG
  • 06h  Được dự trữ
  • 08h  Được dự trữ
  • 0Ah Cờ TAIFG
  • 0Ch Được dự trữ
  • 0Eh Được dự trữ

Video hướng dẫn Timer_A



Sunday, February 8, 2015

BÀI 4 HỖ TRỢ: (MSP430 - BASIC) - TẠO NGUỒN XUNG CLOCK

Trước hết trước khi bắt đầu các bạn nếu chưa có datasheet của dùng MSP430 thì có thể download tại đây
Lưu ý Datasheet vẫn luôn là tài liệu quan trọng nhất khi bạn tiếp cận bất cứ dòng vi điều khiển nào , nên việc thành thạo tiếng Anh và khả năng đọc Datasheet vẫn là quan trọng nhất. 
Tài liệu được viết cho MSP430G2553,các chip khác có module khác mã sẽ không sử dụng được thư viện đi kèm.
Khi lập trình cho một con vi điều khiển nào đó, một trong những điều quan trọng đầu tiên chúng ta phải làm đó là config clock (chọn nguồn xung nhịp sử dụng) . Đây là một việc rất quan trọng, đặc biệt khi các bạn làm các project liên quan đến xử lý thời gian thực. Yêu cầu độ chính xác cao về clock. Mục tiêu của tài liệu này:
1.  Các bạn sẽ hiểu về các thanh ghi điều khiển việc cấp xung clock
2.  Cấu hình chúng để phù hợp với project của mình
3.  Hiểu rõ các đặc điểm về nguồn xung DCO có sẵn bên trong VĐK(xung nội).
(dùng cho khi các bạn chưa sử dụng đến nguồn xung ngoại như thạch anh).

Tài liệu đầu tiên mà mình muốn các bạn xem ở đây là User guide của dòng Valueline. (VĐK trên kit launchpad thuộc dòng value line).
Các bạn có thể down ở đường link sau : http://www.ti.com/lit/pdf/slau144
Chú ý đến phần:     5. Basic Clock Module +

1.Giới thiệu:
Nguồn xung Clock của MSP430 được chia làm 2 lớp.

-          Lớp đầu tiên là các nguồn tạo ra xung clock:
o   LFXT1CLK: Bộ dao động tần số thấp/ tần số cao, nó có thể được sử dụng với tần số
thạch anh 32768 Hz hoặc tần số thạch anh chuẩn, hoặc bộ cộng hưởng từ  450 KHz đến 8 MHz.
o   XT2CLK: Bộ dao động tần số cao. Bộ dao động này có thể được sử dụng với thạch
anh chuẩn, bộ cộng hưởng, hoặc nguồn xung Clock bên ngoài có tần số từ 450 KHz đến 8 MHz.
o   DCOCLK: Bộ dao động được điều khiển bằng kĩ thuật số ( DCO).
o   VLOCLK : Bộ dao động tần số thấp giống DCOCLK

-          Có 3 tín hiệu clock đầu ra cơ bản là :
o   ACLK (Auxiliary clock ) : Có thể sử dụng nguồn LFX1CLK và VLOCLK. Có thể tạo được tần số nhỏ hơn nữa bằng cách sử dụng các bộ chia 1, 2, 4, 8. Dùng cho các module ngoại vi.
o   MCLK (Master clock) : Có thể sử dụng nguồn LFX1CLK, VLOCLK, XT2CLK và DCOCLK. Dùng cho hệ thống và CPU.
o   SMCLK (Sub-main clock) : Cũng có thể sử dụng 4 nguồn trên và dùng cho các module ngoại vi.
Clock của MSP430 có thể coi là bước cải tiếp lớn so với các dòng VĐK khác với rất nhiều ưu điểm như:
o   Xung nội có sai số nhỏ ( 1 – 3% tùy dòng)
o   Chỉnh tần số bằng phần mềm
o   Chế độ ngủ thông minh,có thể ngủ hoặc thức dậy rất nhanh,không bị treo khi ngủ
o   Có nhiều lựa chọn nguồn xung clock riêng biệt cho từng module

2.Hoạt động :

Ở trạng thái mặc định cơ bản chúng ta có 2 tín hiệu SMCLK và MCLK lấy nguồn từ xung nội DCO tần số f khoảng 1.1MHz. Về sau các bạn sẽ hiểu được vì sao ta lại có tần số này.

Để cấu hình module clock chúng ta sẽ sử dụng 4 thanh ghi :
DCOCTL : DCO control register
BCSCTL1: Basic clock system control register
BCSCTL2: Basic clock system control register
BCSCTL3: Basic clock system control register

Và 1 thanh ghi cũng được sử dụng nhưng mình không nói đến ở đây đó là Status register. Với 4 bit SCG1, SCG0,OSCOFF,CPUOFF nó sẽ quyết định các chế độ hoạt động của basic clock system.Trạng thái mặc định là 4 bit này đều bằng 0.


Mình sẽ giới thiệu sơ về cấu tạo và hoạt động của từng thanh ghi này. Và ở đây mình sẽ nói về hoạt động của DCO, các phần khác như LFXT1CLK hay XT2CLK và 1 phần cũng rất hay đó là đồng bộ clock mình sẽ nói ở các bài khác.

2.1.DCO control register:

-          DCOx : tần số DCO được lựa chọn. Có 3 bit nên ta sẽ có 8 mức được lựa chọn, nó sẽ kết hợp với range của nó (RSELx) xác định ở thanh ghi BCSCTL1, ta sẽ có được một tần số xác định.
-          MODx : điều chế tần số, sẽ có công thức tính được tần số mà chúng ta sẽ có được khi sử dụng điều chế. Công thức này có ghi trong tài liệu user guide.Nhưng ở đây mình sẽ bỏ qua phần này do đó các bạn để MOD = 0;

Minh họa về tần số được lựa chọn :



Như có thể thấy, ứng với mỗi mức DCO và RSEL ta sẽ xác định được 1 tần số xác định. Về con số cụ thể cho từng con thì các bạn có thể down datasheet của từng con để theo dõi,hoặc có thể dùng phần mềm để tính toán dựa trên thạch anh ngoài.
 Ví dụ như con MSP430 G2553 : (có trong kit launchpad )


Các bạn có thể thấy ví dụ với RSELx = 0 , DCOx = 3, MODx = 0 thì ta có f = 0.12Mhz.Chú ý là tần số này phụ thuộc vào điện áp nên với mỗi nguồn cấp khác nhau điện áp ra sẽ khác nhau.

Basic clock system control register 1 : BCSCTL1


Nhìn vào đây các bạn có thể thấy được hoàn toàn đơn giản thôi, ví dụ như chúng ta đang muốn sử dụng DCOCLK (việc chọn này sẽ có ở BCSCTL2 ) thì chúng ta sẽ bật bit 7; chọn range để xác định được tần số sẽ được sử dụng, có 4 bit nên ta sẽ có 16 mức range (có thể xem lại hình vẽ trước). Mình có thể đưa ra 1 ví dụ :

Ta đặt :
DCOCTL = 0x60;    \\ hay DCOCTL = 8’b01100000 ;
                 \\ hay DCOCTL |= DCO1 + DCO0 + MOD0;
                \\ DCOx = 3; MODx =0

BCSCTL1 = 0x80    \\ hay BCSCTL1 =  8’b10000000 ;
                \\ RSELx = 0

Ta vừa cấu hình để cho DCOCLK phát ra xung nhịp là 0.12Mhz.

Basic clock system control register 2: BCSCTL2

-          SELMx : Lựa chọn source cho MCLK.
-          DIVMx : hệ số chia , tần số clock của MCLK sẽ được chia cho hệ số chia tương ứng.
-          SELS : Chọn source cho SMCLK.
-          DIVSx : hệ số chia của SMCLK.

Basic clock system control register 3 :


Bây giờ mình sẽ giải thích vì sao ban đầu mặc định clock là khoảng 1.1Mhz và clock source là DCO


Các bạn chú ý đến cột cuối cùng initial state : Thế các giá trị tương ứng vào các thanh ghi và các bạn sẽ tạo ra xung 1.1Mhz
Thực hành:  
Bây giờ mình sẽ làm 1 ví dụ đơn giản về việc tạo xung clock đúng 1s. Tất nhiên không thể chính xác 100% và người ta cũng không hay sử dụng nguồn xung nội cho các ứng dụng thời gian thực vì sự không ổn định của nó. Nhưng ví dụ này sẽ giúp cho các bạn hiểu được basic clock module và cách vận hành nó, dễ dàng tiếp cận hơn khi chúng ta làm việc với nguồn xung ngoại. Hầu hết các tên thanh ghi, các bit quan trọng của 1 số thanh đều được defined trong file thư viện của nó, các bạn có thể tìm hiểu thêm trong file thư viện để có thể dễ dàng viết hơn.

Ví dụ như thay vì viết :
DCOCTL = 0xC0 ;
Ta có thể viết :
DCOCTL = DCO1 + DCO2 + MOD0 ;

CODE MẪU:

#include "msp430g2553.h"
/*       Khai báo loại chip đang dùng
 *       Thư viện này chứa các khai báo tên #define cho địa
 *       chỉ các thanh ghi
 */
void main(void)
{
          WDTCTL = WDTPW + WDTHOLD;    // watchdog timer setup
          if (CALBC1_1MHZ ==0xFF || CALDCO_1MHZ == 0xFF)
          {
                   while(1);               // If cal constants erased,
          }                                     // trap CPU!!
          BCSCTL1 = 0x80;             // Set range = 0x80 ; RSEL = 0;
                                     // DCOCTL = 0xC0;                  // DCO=3; MOD = 0
          DCOCTL |= DCO1 + DCO0 + MOD0;                   // DCO=3; MOD = 0
                     //=======> f = 0.12Mhz
          P1DIR = 0x40;                            // I/O setup
          P1OUT = 0;
          BCSCTL2 |= SELM_0 + DIVM_3;                   // select DCOCLK  ; divide = 8
                          // ===> f = 0.12 / 8 MHz
          while(1)
          {
                   P1OUT = ~P1OUT;                     // LED on
                                            // ta có f =1/15000 Hz  để có xung 1s thì ta
                                              //khởi tạo delay với số chu kì là15000.
                   _delay_cycles(15000);                 // delay 15000 cycles
                                     // tuong ung neu de divider = 1 (DIVM_0) thi so delay cycle = 120000
                                     //==========> f_out = 1Hz
          }
}
/////////////////////////////////////////////////////////////////////////////////


Các bạn hãy chọn thử tìm 1 tần số khác và số chu kì phù hợp để tạo được chu kì 1s
để kiểm tra lại điều này.

Chú ý: MSP430 được cung cấp các define cái giá trị DCOCTL và BCSCTL1 cho phép nhanh chóng chỉnh tần số có sẵn là 1MHZ , 8MHZ , 12MHZ , 16MHZ . Ví dụ để chỉnh tần số 8Mhz,có thể viết:
DCOCTL = CALDCO_8MHZ;
BCSCTL1 = CALBC1_8MHZ;
Các giá trị này được lưu ở SegmentA của Flash nên cần hết sức chú ý khi ghi dữ liệu vào Flash
Ngoài ra các bạn cũng cần biết khi sử dụng xung nội là xung nội của MSP430 phụ thuộc vào điện áp,tức là cùng 1 thông số DCOCTL và BCSCTL thì ở các điện áp khác nhau sẽ ra tần số khác nhau,hoặc trong một số trường hợp các bạn xóa Flash ở SegmentA,có thể chỉnh lại tần số chuẩn bằng chương trình sau : http://www.mediafire.com/download/r9hmwd1dzly4n2i/Calib.rar
Chúc các bạn thành công!