Nguyễn Hữu Sang
Thành Viên PIF
Tình hình là em viết code để 2 con G2553 giao tiếp vs nhau = i2c, master truyền 1 số i(tăng sau mỗi giây) cho slave, slave hiện số đó lên LCD. Nhưng không hiểu sau PC của master dừng ở dòng "while(UCB0CTL1 & UCTXSTT);" không thoát được. Nhờ mấy anh chị xem giúp :(
Ps: mạch cắm testboard , trở kéo 10k, không biết có ảnh hưởng j ko???
Code:
#include "STE2007.h"
#include <msp430.h>
//Transmitter
unsigned char i=10;
void i2c_initiate(){
P1SEL |= BIT6 + BIT7;
P1SEL2 |= BIT6 + BIT7;
//P1REN |= BIT6 + BIT7;
//P1OUT |= BIT6 + BIT7;
UCB0CTL1 |= UCSWRST;
UCB0CTL0 = UCMST + UCMODE_3 + UCSYNC;
UCB0CTL1 = UCSSEL_2 + UCSWRST;
UCB0BR0 = 12;
UCB0BR1 = 0;
UCB0I2CSA = 0x05;
UCB0CTL1 &= ~UCSWRST;
}
int main(void){
WDTCTL = WDTPW + WDTHOLD;
i2c_initiate();
IE2 |= UCB0TXIE;
UCB0CTL1 |= UCTR + UCTXSTT;
while(UCB0CTL1 & UCTXSTT);
UCB0TXBUF = i;
while(1){
__bis_SR_register(CPUOFF + GIE);
}
}
#pragma vector = USCIAB0TX_VECTOR
__interrupt void USCI_ISR(void){
__delay_cycles(1000000);
UCB0TXBUF = i++;
__bic_SR_register_on_exit(CPUOFF);
}
//Receiver
/*
unsigned char i;
void lcd_put_num(unsigned char c, unsigned char a, unsigned char b){
unsigned char x,y,z;
x=c-c%100;
y=c%100-c%10;
z=c%10;
lcd_gotoxy(a,b);
lcd_putc(x);
lcd_putc(y);
lcd_putc(z);
}
void i2c_initiate(){
P1SEL |= BIT6 + BIT7;
P1SEL2 |= BIT6 + BIT7;
//P1REN |= BIT6 + BIT7;
//P1OUT |= BIT6 + BIT7;
UCB0CTL1 |= UCSWRST;
UCB0CTL0 = UCMODE_3 + UCSYNC;
UCB0CTL1 = UCSSEL_2 + UCSWRST;
UCB0BR0 = 12;
UCB0BR1 = 0;
UCB0I2COA = 0x05;
UCB0CTL1 &= ~UCSWRST;
}
int main(void){
WDTCTL = WDTPW + WDTHOLD;
lcd_init();
lcd_clear();
i2c_initiate();
IE2 |= UCB0RXIE;
UCB0I2CIE |= UCSTTIE;
while(1){
__bis_SR_register(GIE + CPUOFF);
lcd_put_num(i,20,4);
}
}
#pragma vector = USCIAB0RX_VECTOR
__interrupt void USCI_ISR(void){
UCB0STAT &= ~UCSTTIFG;
i = UCB0RXBUF;
__bic_SR_register_on_exit(CPUOFF);
}
*/