[C11] Thông báo buổi học ngày 3/8/2014

honghiep

Cố Vấn CLB
Staff member
Chào các bạn!
Tuần này chúng ta sẽ học bài I2C.
- Thời gian: 9h sáng chủ nhật, 3/8/2014
- Địa điểm: Phòng chuyên đề 104B1
- Chuẩn bị: Các bạn xem trước bài ở link này
Trong folder trên có sơ đồ nguyên lí và layout mạch ds1307. Các bạn làm mạch trước để chuẩn bị cho bài học nhé!
 

Fujiko

Thành Viên PIF
e có vài thắc mắc
1. 74HC595 và DS1307 đều là châm cắm hết phải không a?
2. Cái LED 7 đoạn, e thấy trong tme có nhiều loại quá không biết mua loại nào?
3. Battery, mình mua loại j?
4. mấy con điện trở nối từ 74HC595 qua led 7 đoạn là bn ôm v a?
p/s: sorry vì e hỏi hơi nhiều :D
 

honghiep

Cố Vấn CLB
Staff member
Đã update BOM list và hình board trong link trên. Các bạn hàn giống trong hình.
Lưu ý: Board hơi xấu, chỉ dùng để tham khảo cách hàn các linh kiện :gach
 

honghiep

Cố Vấn CLB
Staff member
Sửa mạch :gach
Xin lỗi các bạn là mạch có 1 lỗi cũng hơi nhỏ, các bạn cố gắng sửa nhé. Ai đọc được thông báo này nhắc các bạn khác nếu có thể :D
Các bạn sửa lại đường cấp nguồn cho ds1307. Vì ds1307 hoạt động ở điện áp 5V (trong mạch đang cấp 3v3 nên ds1307 không chạy) :2cool_after_boom:
Các bạn cắt dây nối chân số 8 của ds1307 đến nguồn 3v3, sau đó dùng dây nối chân này đến nguồn 5V như trong hình
 

Fujiko

Thành Viên PIF
đây là code e dùng SPI để con led 7 đoạn thứ nhất nhảy số từ 0-->9. mà nó không chạy đc. a xem dùm e với!!!:-s

#include <msp430.h>
void Config_SPI_A(void);
void Send_byte_A(int data, int time_ms);
void Config_SPI_A(void) // Config module SPI USCIA
{
//Config PIN
P1SEL |= BIT2;
P1SEL2 |= BIT2;
//Config SPI
UCA0CTL0 |= UCCKPL + UCMSB + UCMST + UCSYNC;
UCA0CTL1 |= UCSSEL_2; // SMCLK

UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine**

UCA0BR0 |= 0x02; // f/2 for your choice
UCA0BR1 = 0; //

UCA0MCTL = 0; // No modulation

IE2 |= UCA0TXIE; // Enable USCI0 RX interrupt
__delay_cycles(75); // Wait for slave to initialize
}
void Send_byte_A(int data, int time_ms) // Send 1 byte for module SPI USCIA
{
int i_delay;
while (!(IFG2 & UCA0TXIFG)); // USCI_A0 TX buffer ready?
UCA0TXBUF = data; // Send next value
for (i_delay = 0; i_delay<time_ms; i_delay++ )
{
_delay_cycles(1000);
}
}
/*
* main.c
*/
void main(void)
{
WDTCTL = WDTPW | WDTHOLD;// Stop watchdog timer
P2DIR=BIT0; P2SEL=0; P2SEL2=0; P2OUT=~BIT0;
int i=0;
int b[10]={0x14,0xD7,0x4C,0x2C,0x8D,0x25,0x24,0x57,0x04,0x05};
Config_SPI_A();
P1DIR |= BIT4;
while(1)
{
Send_byte_A(b, 1000);
P1OUT &= ~BIT4;
__delay_cycles(2000);
P1OUT |= BIT4;
i++;
if(i==10)
{
i = 0;
}
}
}
 

honghiep

Cố Vấn CLB
Staff member
Bạn lưu ý là SPI đang sử dụng là module USCIA, chân P1.4 là chân CLK. P1.5 mới là chân chốt của 595
 

Fujiko

Thành Viên PIF
em đã sửa lại những chỗ sau:
P1SEL |= BIT1+ BIT2 +BIT4;
P1SEL2 |= BIT1+ BIT2 BIT4;

P1DIR|=BIT5;
P1OUT&=~BIT5; P1OUT|=BIT5;
nhưng vẫn không chay đc. a có thể post cho e code mẫu để e test thử mạch đc không a. :-s
 

honghiep

Cố Vấn CLB
Staff member
Bạn xem lại cách sử dụng hàm Send_byte_A(); nhé!
 

Fujiko

Thành Viên PIF
a hiệp ơi, khi e cắm nguồn 5V để debug thì con ds1307 rất nóng. đc một lúc thì nó die luôn :-s
e ra tme mua một con khác về thay thì nó cũng nóng rồi die nữa :gach:gach double kill!!!!
 

MMKC

Thành Viên PIF
Em check lại GND với VCC nha em. Nóng thường 2 chân này nó thông nhau đó :v
 
Top