Thứ Hai, 27 tháng 5, 2019

Chia sẻ - Sử dụng Watchdog cho AVR với codevision (ATmega16)

Vừa mới trầy trật với cái vụ mò mẫm về watchdog này xong .nên làm luôn bài chia sẻ cho những anh em cần dùng đến . Lưu ý đây là chia sẻ cá nhân ,nên viết dựa theo hiểu biết cá nhân, ai thấy đúng sai hay cần bổ sung gì cứ tự nhiên nhá . Bài viết này dành cho những người chưa biết gì về Watchdog

+Định nghĩa : Hiểu nôm na 1 cách dân dã là nếu chúng ta bật chức năng Watchdog này lên thì sẽ có 1 timer chạy ngầm .đến 1 khoảng thời gian đã cài đặt nó sẽ tràn ( hoặc có thể 1 vòng lặp vô hạn nào đó của bạn tạo nên hiện tượng này,hay vdk bị treo vì lý do gì đó ) thì nó sẽ giúp Vi điều khiển tự động reset lại giống như chúng ta nhấn nút reset cứng ở ngoài mạch vậy.

+ Ứng dụng : bạn vẫn chưa hiểu dùng nó để làm gì ??? hãy tưởng tượng chương trình của bạn đang chạy ngon ơ..tự nhiên bị lỗi..treo đứng luôn...chẳng nhẽ cứ chờ mà căn chạy lại nhấn nút reset à..hiện tượng này rất dễ xảy ra khi bạn thiết kế mạch công nghiệp( thường thì chương trình nào chạy công nghiệp cũng hay thấy có Watchdog ,và chẳng thấy cái nút nhấn reset mạch như KIT thực hành của các bạn ở đâu cả ), hoặc đơn giản bạn muốn lâu lâu chương trình lại refresh lại để cập nhật thông tin gì đó..cần các thanh ghi,các biến ,các mảng,giá trị..v..v..trở lại trạng thái ban đầu...thì lúc này watchdog rất hữu dụng đó

+ Khai báo WD với codevision

bảng trên lấy từ datasheet của Atmega16 .ở đây bạn sẽ thấy mức thời gian mà Watchdog(WD) của chúng ta tràn. trên khai báo bạn có thể chọn mức tùy theo ý của bạn.

Ví dụ : ở trên tôi chọn OSC/16k thì code sinh ra sẽ như dưới đây:

// Watchdog Timer initialization
// Watchdog Timer Prescaler: OSC/16k
#pragma optsize-
WDTCR=0x18;
WDTCR=0x08;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif


Thanh ghi WDTCR chính là để khai báo bật WD theo giá trị của bản trên hoặc tắt nó cũng bằng cái đó luôn.

+ Sử Dụng :

rồi sau khi khai báo như trên thì trong chương trình của của bạn cứ sau 16.3 ms VDK sẽ tự động reset1 lần
nếu bạn muốn ko cho WD tràn thì hãy dùng câu lệnh #asm("WDR") trong chương trình của mình ( thời gian gọi cái này phải nhỏ hơn thời gian tràn của WD)

1 chú ý nữa nhá.. cái này mình mò mãi mới biết nguyên nhân..nếu bạn dùng hàm delay_ms () trong chương trình thì WD không reset VDK của bạn được vì trong thư viện của codevision ,hàm này đã chứa câu lệnh reset WD làm cho nó ko thể tràn được...vì vậy nếu trong chương trình của bạn muốn delay thì hãy dùng hàm delay_us() hoặc bạn tự viết lấy nhá ^^...

hoặc nếu vẫn muốn delay_ms() bình thường thì bạn có thể dùng câu vòng lặp vô hạn ở bất cứ chỗ nào .thì nó vẫn reset bình thường . VD ở đây :


// Watchdog Timer initialization
// Watchdog Timer Prescaler: OSC/1024k
#pragma optsize-
WDTCR=0x1E;
WDTCR=0x0E;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif

// Global enable interrupts
#asm("sei")
n=1;
lcd_clear();
void main (void)
{
while (1)
{

itoa(n,xuat);
lcd_puts(xuat);
PORTC.1=1;
PORTC.2=1;
PORTC.3=1;
delay_ms(100);
while(1);

}
}

tôi đã khai báo cho 3 chân của PORTC có giá trị bằng 1. nếu bạn mắc led vào những chân này thì bình thường led sẽ sáng mãi..nhưng bạn có thấy câu lệnh while(1) của tôi ở dưới ko.. vì nó là vòng lặp vô hạn nên nó cứ chạy mãi ( ko biết có treo ko ^^) nên WD sẽ tràn và reset VDK nên tất cả các chân PORTC ở trên sẽ lại trở lại trạng thái ban đầu bằng 0.. vì thế bạn sẽ nhìn thấy cái led cứ chớp sáng chớp sáng chứ ko sáng hoàn toàn..
trên đây chỉ là ví dụ cho bạn hiểu ,hãy thật cẩn thận với những vòng lặp vô hạn để tránh những lỗi phát sinh không thể ngờ nhé ^^

trên đây là những hướng dẫn cơ bản ,cũng như những ví dụ đơn giản nhất để bạn có thể hiểu phần nào về cách sử dụng Watchdog .Ai có thắc mắc hay bổ sung gì cứ trao đổi tự nhiên nhé..cùng học hỏi để phát triển !


Chú ý:    OSC/16k mau reset nhất

OSC/2048k, lâu reset nhất


Nguồn: codientu.org

Thứ Ba, 7 tháng 5, 2019

8 ĐIỀU BẠN HÃY NGHĨ ĐẾN KHI GẶP BẾ TẮC.

8 ĐIỀU BẠN HÃY NGHĨ ĐẾN KHI GẶP BẾ TẮC.

1. Không ai khôn lớn mà chưa từng trải qua nỗi đau

Đôi khi cuộc sống đóng một cánh cửa lại vì đó là lúc để cho bạn tiến về phía trước. Gặp khó khăn không có nghĩa là bạn đang thất bại. Hãy nhớ rằng nỗi đau có hai loại: loại làm bạn tổn thương và loại khiến bạn thay đổi. Thay vì kháng cự hai loại nỗi đau này, hãy chấp nhận chúng vì chúng đều khiến bạn trưởng thành hơn.

2. Tất cả mọi thứ trong cuộc sống chỉ là tạm thời 

Trời mưa rồi cũng sẽ tạnh. Vết thương rồi cũng sẽ được chữa lành. Sau màn đêm tăm tối là ánh sáng của buổi bình minh. Không có gì kéo dài mãi mãi cả. Mỗi khoảnh khắc đều mang lại cho bạn một khởi đầu mới và một kết thúc mới. Mỗi giây trôi qua bạn lại có một cơ hội mới. Bạn chỉ cần nắm bắt cơ hội đó và tận dụng nó.

3. Lo lắng và phàn nàn cũng không thay đổi được gì 

Những người hay phàn nàn là những người ít được việc nhất. Bạn có dành cả ngày hôm nay để than vãn về ngày hôm qua thì ngày mai của bạn cũng không khởi sắc được. Thay vào đó hãy bắt tay hành động.



4. Vết sẹo của bạn là biểu tượng của sức mạnh 

Một vết sẹo có nghĩa là một nỗi đau qua đi và vết thương đã lành. Nó có nghĩa là bạn đã chinh phục nỗi đau, đã học được một bài học, lớn mạnh hơn, và tiến về phía trước. Hãy bắt đầu xem những vết sẹo của bạn như là một dấu hiệu của sức mạnh chứ không phải là dấu vết của những nỗi đau.

5. Cuộc đời là một chuỗi những cuộc đấu tranh 

Kiên nhẫn không phải là chờ đợi mà là khả năng duy trì một thái độ tích cực trong khi theo đuổi giấc mơ. Bạn có thể mất đi sự ổn định và thoải mái trong một thời gian dài, thậm chí là “ăn không ngon, ngủ không yên ”. Bạn có thể phải hy sinh các mối quan hệ và tất cả những gì thân thuộc. Đôi khi bạn phải chấp nhận sự chế giễu từ người khác. Nhưng rồi bạn sẽ nhận ra rằng con đường của bạn được xây dựng nên từ những cuộc đấu tranh với những điều nhỏ nhặt nhất.

6. Bạn không cần phải để tâm đến sự tiêu cực của người khác 

Khi xung quanh bạn tràn ngập sự tiêu cực, thì bạn hãy tỏ ra tích cực. Mỉm cười khi ai đó cố tình dìm bạn xuống. Hãy luôn là chính mình dù ai đó đối xử với bạn tồi tệ. Đừng bao giờ để cho sự cay nghiệt của người khác thay đổi con người bạn. Người ta vẫn sẽ xì xầm về bạn cho dù bạn đã làm tốt như thế nào. Vì vậy, hãy nghĩ về bản thân trước khi nghĩ về những gì đang diễn ra trong đầu người khác. Hãy làm những gì khiến bạn hạnh phúc và ở bên cạnh bất cứ ai làm cho bạn thường xuyên mỉm cười.

7. Chuyện gì cần đến sẽ đến 

Hãy tận hưởng cuộc sống đang mở ra trước mắt bạn. Bạn có thể không đến được nơi mà bạn muốn, nhưng cuối cùng bạn sẽ chắc chắn đến được nơi mà bạn cần.

8. Điều tốt nhất bạn có thể làm là tiếp tục bước đi 

Đừng ngần ngại nhận sự giúp đỡ từ ai đó. Đừng ngần ngại yêu thêm một lần nữa. Hãy tìm thấy động lực để cười mỗi ngày và làm cho người khác mỉm cười theo. Hãy nhớ rằng bạn không cần nhiều người trong cuộc sống, mà chỉ cần một vài người thật sự quan trọng với bạn mà thôi. Chấp nhận khi bạn sai và học hỏi từ nó. Luôn luôn nhìn lại và xem bạn đã trưởng thành được bao nhiêu, và tự hào về chính mình.


( Sưu tầm )

Thứ Bảy, 4 tháng 5, 2019

Cấp cứu người bị điện giật: 5 sai lầm tai hại

Cấp cứu người bị điện giật: 5 sai lầm tai hại


Ths. Nguyễn Danh Khoa - Giám đốc đào tạo Trung tâm Khoa học kỹ thuật an toàn Việt Nam cho biết, rất nhiều người không hiểu rõ bản chất và tác hại của dòng điện đối với con người, nên cấp cứu người bị điện giật sai cách, không những không cứu được nạn nhân mà có trường hợp còn nguy hiểm đến tính mạng bản thân mình.
1. Không xem xét nguồn điện đã ngắt hay chưa:
Đó là sai lầm lớn nhất và cũng nguy hiểm nhất. Người cứu quá vội vàng, mất bình tĩnh dùng tay kéo nạn nhân khỏi nguồn điện. Nhưng nếu nguồn điện chưa ngắt, người cứu cũng bị điện giật do cơ thể nạn nhân dẫn điện.

2. Vội vàng đưa nạn nhân đi cấp cứu:
Lúc này, người cứu đã bỏ lỡ mất 3 phút ép tim, thổi ngạt để cứu sống nạn nhân. Thống kê cho thấy, hô hấp nhân tạo kịp thời, đúng cách ở những phút đầu tiên có khả năng 98% cứu được nạn nhân bị ngưng thở khi điện giật. Ngược lại, nếu không được hô hấp nhân tạo kịp thời, nạn nhân có thể chết trên đường đi cấp cứu.

3. Đổ nước muối vào người, hoặc chôn nạn nhân dưới đất:
Hiện vẫn còn một số người cho rằng, bị điện giật là tích lũy điện trong người, nên cần phải đổ nước muối vào người hoặc chôn nạn nhân dưới đất thì dòng điện sẽ chạy qua người xuống đất. Phương pháp này không những không hiệu quả mà cũng bỏ lỡ mất 3 phút ép tim thổi ngạt quan trọng, đồng thời làm hạ thân nhiệt gây nguy hiểm cho tính mạng nạn nhân.
CBCNV Công ty Điện lực Hưng Yên hướng dẫn cách cấp cứu người khi bị điện giật - Ảnh: PC Hưng Yên
4. Để nạn nhân nằm nguyên tư thế khi thấy có dấu hiệu tỉnh lại:
Lúc đó, người cấp cứu cần phải chuyển nạn nhân sang tư thế hồi phục (nằm nghiêng sang phải), giúp nạn nhân dễ thở, không gây chèn ép tim phổi hay hít phải dịch nôn của chính họ. Mắc sai lầm này sẽ dẫn đến hậu quả nạn nhân có thể chết trong khi chờ xe cấp cứu.

5. Hô hấp nhân tạo sai kỹ thuật.
Nếu đặt tay sai vị trí, có thể gây nguy hiểm cho nạn nhân. Ví dụ, tay đặt không đúng vị trí tim để ép lồng ngực mà đặt lệch xuống phần bụng. Lúc này, mỗi khi ép xuống sẽ đẩy hơi lên tim, gây nguy hiểm cho nạn nhân. Bên cạnh đó, nếu ép không đủ độ sâu và tốc độ (5 cm đối với người lớn, với tốc độ 100 nhịp/phút), cũng không có tác dụng cứu sống nạn nhân.
Theo Cục An toàn Kỹ thuật và Môi trường Công nghiệp (Bộ Công Thương), hàng năm, cả nước xảy ra từ 400-500 vụ tai nạn điện, chủ yếu do bất cẩn và thiếu kiến thức trong sử dụng điện. Chính vì vậy, việc sơ cứu đúng cách có ý nghĩa rất lớn trong việc cứu sống nạn nhân.
 
Những lưu ý khi cấp cứu người bị điện giật
- Bình tĩnh, quan sát xác định nguyên nhân và nhanh chóng tách nạn nhân khỏi nguồn điện. Tuyệt đối không được chạm trực tiếp vào người nạn nhân.
- Đặt nạn nhân nằm ở nơi thoáng mát.
- Kiểm tra xem nạn nhân còn thở hay không bằng cách, áp má vào mũi nạn nhân và xem lồng ngực có di động hay không, hoặc dùng tay đặt vào động mạch hai bên cổ. Với nạn nhân không có dấu hiệu thở, cần tiến hành hô hấp nhân tạo bằng cách hà hơi thổi ngạt và ép tim ngoài lồng ngực.
- Khi nạn nhân có dấu hiệu tỉnh lại, cần chuyển nạn nhân sang tư thế hồi phục (nằm nghiêng sang phải) trong khi chờ xe cấp cứu.

Theo Tạp chí Điện lực chuyên đề Thế giới điện