ThanhNT Blog's

Computer, Networking, Embedded Systems, PCB Design

Cách ly nguồn và tín hiệu - Signal and Power Isolation

Khái niệm “cách ly” Khái niệm “Cách ly” trong mạch điện và trong 1 hệ thống về bản chất đó là không có 1 đường dẫn điện giữa đầu vào và đầu ra. Hầu hết các kỹ sư đều biết sử dụng biến áp để cách ly điện xoay chiều. Đây cũng là 1 tiêu chuẩn của nhiều thiết kế về nguồn AC. Khái niệm “Cách ly” cũng thường dùng cho tín hiệu và các sub-circuit.

Giải phẫu một viên pin sạc Lithium-Ion có mạch bảo vệ

Mạch bảo vệ pin sạc Li-ion Bài viết mô tả quá trình giải phẫu rất chi tiết một viên pin sạc có mạch bảo vệ được dịch từ trang Lygate-info Cấu trúc 1 viên pin sạc Một viên pin có mạch bảo vệ (hi vọng là thế) gồm những thành phần bảo vệ như sau: PTC, bảo vệ chống quá nhiệt, gián tiếp bảo vệ chống quá dòng và sẽ tự động reset.

Cách hiểu đơn giản về Logic Mờ (Fuzzy Logic)

Logic mờ (Fuzzy Logic) Thực sự mà nói, khái niệm này đối với chúng ta (những người không am hiểu sâu về điều khiển tự động) thì quả là cao siêu. (Nghe rất “Mờ” đúng không? :D) Sau bài viết này tôi nghĩ bạn cũng sẽ đỡ mờ hơn giống như tôi. Bài viết này tôi note lại từ một bài viết của 1 thầy bên Đại học Sư Phạm Kỹ Thuật.

[C/C++] Include guard trong C và C++

Khi làm quen với C hoặc C++ chắc bạn sẽ rất quen với mấy dòng kiểu như sau ở đầu và cuối mỗi file thư viện .h #ifndef _file_name_h #define _file_name_h /* file content */ #endif Những dòng trên được gọi là Include Guard (thực ra chính xác hơn là #include guard), đến đây thì bạn cũng lờ mờ đoán ra mớ code nhiều dấu thăng ở trên để làm cái gì rồi.

[Dev] Hàm đếm bit nhanh - Fast bit counter

Fast bit counter Mở đầu Bạn đang chăm chú ngắm nghía 1 đoạn code, bỗng nhiên bạn gặp một hàm trông có vẻ rất nguy hiểm như sau: int fbc(unsigned int data) { data = (data & 0x55555555) + ((data >> 1) & 0x55555555); data = (data & 0x33333333) + ((data >> 2) & 0x33333333); data = (data & 0x0F0F0F0F) + ((data >> 4) & 0x0F0F0F0F); data = (data & 0x00FF00FF) + ((data >> 8) & 0x00FF00FF); data = (data & 0x0000FFFF) + ((data >> 16) & 0x0000FFFF); return data; } Một đoạn hàm rất bí ẩn với một loạt các phép toán logic >>, &, +.

Một số con số về độ trễ mà lập trình viên cần biết

Trong một hệ thống, khi chúng có trao đổi thông tin với nhau thì chắc chắn rằng việc trao đổi thông tin đó có gây ra một khoảng thời gian trễ, tùy vào từng hệ thống và cách thức giao tiếp mà thời gian trễ này ít hay nhiều. Như trong bảng dưới đây, người ta đã liệt kê độ trễ trung bình khi tương tác dữ liệu giữa chúng. Ví dụ như cache L1 và L2 là 2 bộ nhớ đệm chính khi đưa dữ liệu vào ra CPU, do vậy cần có tốc độ rất cao -> yêu cầu độ trễ là cực kỳ thấp (chỉ vài nano giây).

Lập trình STM32 - Cài đặt IDE và chương trình đầu tiên BlinkLed

Chương trình đầu tiên với STM32 Phần mềm Để bắt đầu vào làm việc với dòng STM32, ngoài công cụ hỗ trợ cấu hình là STM32CubeMX thì còn có phần mềm lập trình và biên dịch nữa. Các phần mềm hỗ trợ viết code và biên dịch nổi tiếng như Keil C, IAR, Cocos Code IDE… (Các bạn có thể dễ dàng tìm và tải về các phiên bản cũ mới của các phần mềm này trên Internet - Hiện tôi dùng Keil C ver 5).

Lập trình STM32 - Tạo Project mới với STM32CubeMX

Tạo Project với STM32CubeMX Như bài trước đã giới thiệu, STM32CubeMX là công cụ giúp khởi tạo phần cứng, ngoại vi, xung nhịp… cho vi điều khiển (MCU) STM32 một cách nhanh chóng. Sử dụng phần mềm này đã giúp mình có tốc độ tiếp cận với dòng vi điều khiển này phải nói là rất nhanh. Hầu như mình không cần phải nhớ bất cứ thanh ghi hay thiết lập từng bit, các API được hỗ trợ sẵn từ nhà sản xuất thực sự dễ dùng, và dễ tiếp cận.

STM32CubeMX - Công cụ hỗ trợ cấu hình MCU STM32

STM32CubeMX Khi bước đầu chuyển sang làm quen với dòng vi điều khiển ARM từ các dòng vi điều khiển truyền thống như AVR, PIC… chúng ta sẽ dễ cảm thấy bị choáng ngợp vì sự phức tạp và khổng lồ của nó. Nếu học ARM bằng tư duy của AVR hay PIC, nhớ từng register, từng công dụng của từng bit chắc chúng ta sẽ bỏ cuộc sớm. Thay vì phải nhớ từng bit buồn tẻ nhàm chán đó, các nhà sản xuất đã phát triển các thư viện/driver chuẩn cho các con chip của họ.

Xem Size code nạp vào VĐK trên CCS

Dung lượng code trên CCS Vi điều khiển là đơn vị xử lý cỡ nhỏ, có tài nguyên giới hạn. Vì vậy khi lập trình cho vi điều khiển, việc kiểm soát mức độ sử dụng tài nguyên là khá quan trọng. Xem dung lượng code nạp vào VDK trên IAR Với các dòng vi điều khiển chung của TI (Texas Instruments), nhà sản xuất có hỗ trợ luôn cả môi trường lập trình (IDE) là Code Composer Studio (CCS).