<< Folder tổng hợp tài liệu cho C8 >> (nội dung update đến 14-05-2013)
mirror link: https://www.dropbox.com/sh/55s1lfi8wgyd2fe/exzxWn30SU
Code mẫu của bạn zbloodelfz cho các bạn nào còn chưa chạy thành công:
+ Xuất PWM duty 10/100 tại chân TA0.1 (P1.2, P1.6)
+ Capture thời gian kích cạnh lên tại chân P2.1
Bài tập phát triển code PWM:
- Đưa thử xung PWM vào 2 ngõ vào của module BJT, thay đổi duty và quan sát (chú ý để buzzer hoạt động cần cấp nguồn 5V cho main)
- Dùng cả CCR1 và CCR2 của TimerA0 để tạo 2 xung PWM cho 2 LED.
- Thay thế TimerA0 bằng TimerA1 khi xuất PWM.
- Dùng TimerA0 để xuất PWM trên LED, TimerA1 tăng giảm duty theo chu kỳ.
- Tạo 3 xung PWM cấp cho Led 3 màu, làm thay đổi màu sắc tùy ý theo bảng màu R-G-B. Led 3 màu thường bán 3k/con tại tiệm Led 158LTK; gồm 4 chân theo thứ tự: R-Anot-G-B, Anot là chân dài nhất. Có thể kết hợp TimerA0 và TimerA1 tạo 3 xung PWM; hoặc có thể chỉ dùng 1 TimerA (Max duty khi tràn Timer, 3 duty ứng với CCR0-1-2).
---
mirror link: https://www.dropbox.com/sh/55s1lfi8wgyd2fe/exzxWn30SU
Code mẫu của bạn zbloodelfz cho các bạn nào còn chưa chạy thành công:
+ Xuất PWM duty 10/100 tại chân TA0.1 (P1.2, P1.6)
Code:
/*
* main.c
*
* Created on: May 5, 2013
* Author: BloodElf
*/
#include <msp430g2553.h>
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; //Tat watchdog timer
TA0CTL = TASSEL_2 +MC_1; //Timer Clock = SMCLK = 1Mhz, Mode Up
TA0CCTL1 = OUTMOD_3; // CCR1 : xuat xung theo mode 3
P1SEL |= BIT2+BIT6; //Port 1.2 và 1.6 cung co the xung theo CCR1(TA0.1)
P1SEL2 &=~(BIT2+BIT6); // Xem data sheet de biet pin nao co chuc nang nay
TA0CCR0 = 100; //Chon CCR0 lam chu ky và CCR1 la nguong de thay
TA0CCR1=10; //doi gia tri OUT theo mode
_BIS_SR(LPM0_bits + GIE); //Low-power mode
}
Code:
/*
* main.c
*
* Created on: May 12, 2013
* Author: BloodElf
*/
#include <msp430.h>
int cap_value;
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; //Tat watchdogtimer
TA1CTL = TASSEL_2 + MC_2; //Chon clocktimer = 1Mhz, Cont.up mode
TA1CCTL1 |= CM_1+CCIS_0+CAP+CCIE; // Config CCR1 la capture : kich canh len
//Channel A, capture mode, enable ngat
TA1R =0;
P2SEL |= BIT1; //Config pin thanh chan capture theo ccr1
P2SEL2 &=~BIT1; //Xem datasheet de biet pin nao co kha nang
P2DIR &=~BIT1; //capture
_BIS_SR(LPM0_bits + GIE); //Low-power mode + enable ngat toan cuc
}
#pragma vector=TIMER1_A1_VECTOR
__interrupt void TA1IV_Interrupt (void)
{
{
case TA1IV_TACCR1:
{
cap_value = TA1CCR1; //Lay gia tri capture vo bien cap_value
TA1R =0; //Reset bo dem timer
//CCR1+=31250;
break;
}
case TA1IV_TA1CCR2:
{
}
case TA1IV_TAIFG :
{
}
}
}
- Đưa thử xung PWM vào 2 ngõ vào của module BJT, thay đổi duty và quan sát (chú ý để buzzer hoạt động cần cấp nguồn 5V cho main)
- Dùng cả CCR1 và CCR2 của TimerA0 để tạo 2 xung PWM cho 2 LED.
- Thay thế TimerA0 bằng TimerA1 khi xuất PWM.
- Dùng TimerA0 để xuất PWM trên LED, TimerA1 tăng giảm duty theo chu kỳ.
- Tạo 3 xung PWM cấp cho Led 3 màu, làm thay đổi màu sắc tùy ý theo bảng màu R-G-B. Led 3 màu thường bán 3k/con tại tiệm Led 158LTK; gồm 4 chân theo thứ tự: R-Anot-G-B, Anot là chân dài nhất. Có thể kết hợp TimerA0 và TimerA1 tạo 3 xung PWM; hoặc có thể chỉ dùng 1 TimerA (Max duty khi tràn Timer, 3 duty ứng với CCR0-1-2).
---