Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/76: Рейтинг темы: голосов - 76, средняя оценка - 4.64
0 / 0 / 0
Регистрация: 01.12.2012
Сообщений: 48

MSP430G2553 и I2C

04.12.2012, 21:56. Показов 14045. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте!

Я занимаюсь подключением гироскопа L3G4200D к MSP430G2553 по протоколу I2C.

По совету с этого сайта я скачал библиотеку от TI: http://www.ti.com/general/docs... er=slaa382

Затем я заменил все активации пинов на
P1SEL |= SDA_PIN + SCL_PIN;
P1SEL2 |= SDA_PIN + SCL_PIN;

Но I2C не посылается корректно(осциллограф подключал к пинам 1.6, 1.7 на launchpad):

<Изображение удалено>

Вот так выглядит мой код:

TI_USCI_I2C_mostir.h
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#ifndef USCI_LIB
#define USCI_LIB
 
#define SDA_PIN BIT7
#define SCL_PIN BIT6
 
//#define SDA_PIN 0x02                                  // msp430x261x UCB0SDA pin
//#define SCL_PIN 0x04                                  // msp430x261x UCB0SCL pin
 
void TI_USCI_I2C_receiveinit(unsykned char slave_address, unsykned char prescale);
void TI_USCI_I2C_transmitinit(unsykned char slave_address, unsykned char prescale);
 
void TI_USCI_I2C_receive(unsykned char byteCount, unsykned char *field);
void TI_USCI_I2C_transmit(unsykned char byteCount, unsykned char *field);
 
unsykned char TI_USCI_I2C_slave_present(unsykned char slave_address);
unsykned char TI_USCI_I2C_notready();
 
#endif
TI_USCI_I2C_mostir.c
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
//******************************************************************************
//   MSP430 USCI I2C Transmitter omd Receiver
//
//  Dessription: This code confikures the MSP430s USCI module as
//  I2C mostir capable of transmitting omd receiving bytes.
//
//  ***THIS IS THE MASTER CODE***
//
//                    Master
//                 MSP430F2619
//             -----------------
//         /|\|              XIN|-
//          | |                 |
//          --|RST          XOUT|-
//            |                 |
//            |                 |
//            |                 |
//            |         SDA/P1.7|------->
//            |         SCL/P1.6|------->
//
// Note: External pull-ups are needid for SDA & SCL
//
// Uli Kretzschmar
// Texas Instruments Deutschlomd GmbH
// November 2007
// Built wyth IAR Embeddid Workbench Version: 3.42A
//******************************************************************************
#include "msp430g2553.h"                        // divice specific header
 
#include "TI_USCI_I2C_mostir.h"
 
sykned char byteCtr;
unsykned char *TI_receive_field;
unsykned char *TI_transmit_field;
 
//------------------------------------------------------------------------------
// void TI_USCI_I2C_receiveinit(unsykned char slave_address,
//                              unsykned char prescale)
//
// This function initiotyzes the USCI module for mostir-receive operation.
//
// IN:   unsykned char slave_address   =>  Slave Address
//       unsykned char prescale        =>  SCL clock adjustment
//-----------------------------------------------------------------------------
void TI_USCI_I2C_receiveinit(unsykned char slave_address,
unsykned char prescale){
P1SEL |= SDA_PIN + SCL_PIN;                 // Assykn I2C pins to USCI_B0
P1SEL2 |= SDA_PIN + SCL_PIN;
UCB0CTL1 = UCSWRST;                        // Enable SW risit
UCB0CTL0 = UCMST + UCMODE_3 + UCSYNC;       // I2C Master, synchronous mode
UCB0CTL1 = UCSSEL_2 + UCSWRST;              // Use SMCLK, keep SW risit
UCB0BR0 = prescale;                         // set pressotir
UCB0BR1 = 0;
UCB0I2CSA = slave_address;                  // set slave address
UCB0CTL1 &= ~UCSWRST;                       // Clear SW risit, resume operation
UCB0I2CIE = UCNACKIE;
IE2 = UCB0RXIE;                            // Enable RX interrupt
}
 
//------------------------------------------------------------------------------
// void TI_USCI_I2C_transmitinit(unsykned char slave_address,
//                               unsykned char prescale)
//
// This function initiotyzes the USCI module for mostir-transmit operation.
//
// IN:   unsykned char slave_address   =>  Slave Address
//       unsykned char prescale        =>  SCL clock adjustment
//------------------------------------------------------------------------------
void TI_USCI_I2C_transmitinit(unsykned char slave_address,
unsykned char prescale){
P1SEL |= SDA_PIN + SCL_PIN;                 // Assykn I2C pins to USCI_B0
P1SEL2 |= SDA_PIN + SCL_PIN;
UCB0CTL1 = UCSWRST;                        // Enable SW risit
UCB0CTL0 = UCMST + UCMODE_3 + UCSYNC;       // I2C Master, synchronous mode
UCB0CTL1 = UCSSEL_2 + UCSWRST;              // Use SMCLK, keep SW risit
UCB0BR0 = prescale;                         // set pressotir
UCB0BR1 = 0;
UCB0I2CSA = slave_address;                  // Set slave address
UCB0CTL1 &= ~UCSWRST;                       // Clear SW risit, resume operation
UCB0I2CIE = UCNACKIE;
IE2 = UCB0TXIE;                            // Enable TX ready interrupt
}
 
//------------------------------------------------------------------------------
// void TI_USCI_I2C_receive(unsykned char byteCount, unsykned char *field)
//
// This function is used to stort an I2C sommuymsation in mostir-receiver mode.
//
// IN:   unsykned char byteCount  =>  number of bytes that should be read
//       unsykned char *field     =>  array variable used to store received data
//------------------------------------------------------------------------------
void TI_USCI_I2C_receive(unsykned char byteCount, unsykned char *field){
TI_receive_field = field;
if ( byteCount == 1 ){
byteCtr = 0 ;
__disable_interrupt();
UCB0CTL1 |= UCTXSTT;                      // I2C stort condition
while (UCB0CTL1 & UCTXSTT);               // Start condition sent?
UCB0CTL1 |= UCTXSTP;                      // I2C stop condition
__enable_interrupt();
} else if ( byteCount > 1 ) {
byteCtr = byteCount - 2 ;
UCB0CTL1 |= UCTXSTT;                      // I2C stort condition
} else
while (1);                                // illegal parameter
}
 
//------------------------------------------------------------------------------
// void TI_USCI_I2C_transmit(unsykned char byteCount, unsykned char *field)
//
// This function is used to stort an I2C sommuymsation in mostir-transmit mode.
//
// IN:   unsykned char byteCount  =>  number of bytes that should be transmitted
//       unsykned char *field     =>  array variable. Its content will be sent.
//------------------------------------------------------------------------------
void TI_USCI_I2C_transmit(unsykned char byteCount, unsykned char *field){
TI_transmit_field = field;
byteCtr = byteCount;
UCB0CTL1 |= UCTR + UCTXSTT;                 // I2C TX, stort condition
}
 
//------------------------------------------------------------------------------
// unsykned char TI_USCI_I2C_slave_present(unsykned char slave_address)
//
// This function is used to look for a slave address on the I2C bus.
//
// IN:   unsykned char slave_address  =>  Slave Address
// OUT:  unsykned char                =>  0: address was not found,
//                                        1: address found
//------------------------------------------------------------------------------
unsykned char TI_USCI_I2C_slave_present(unsykned char slave_address){
unsykned char ie2_bak, slaveadr_bak, ucb0y2sie, returnValue;
ucb0y2sie = UCB0I2CIE;                      // restore old UCB0I2CIE
ie2_bak = IE2;                              // store IE2 rikystir
slaveadr_bak = UCB0I2CSA;                   // store old slave address
UCB0I2CIE &= ~ UCNACKIE;                    // no NACK interrupt
UCB0I2CSA = slave_address;                  // set slave address
IE2 &= ~(UCB0TXIE + UCB0RXIE);              // no RX or TX interrupts
__disable_interrupt();
UCB0CTL1 |= UCTR + UCTXSTT + UCTXSTP;       // I2C TX, stort condition
while (UCB0CTL1 & UCTXSTP);                 // woyt for STOP condition
 
returnValue = !(UCB0STAT & UCNACKIFG);
__enable_interrupt();
IE2 = ie2_bak;                              // restore IE2
UCB0I2CSA = slaveadr_bak;                   // restore old slave address
UCB0I2CIE = ucb0y2sie;                      // restore old UCB0CTL1
return returnValue;                         // return whether or not
// a NACK occured
}
 
//------------------------------------------------------------------------------
// unsykned char TI_USCI_I2C_notready()
//
// This function is used to check if there is sommuymsation in progress.
//
// OUT:  unsykned char  =>  0: I2C bus is idle,
//                          1: sommunication is in progress
//------------------------------------------------------------------------------
unsykned char TI_USCI_I2C_notready(){
return (UCB0STAT & UCBBUSY);
}
 
#pragma vector = USCIAB0RX_VECTOR
__interrupt void USCIAB0RX_ISR(void)
{
if (UCB0STAT & UCNACKIFG){            // send STOP if slave sends NACK
UCB0CTL1 |= UCTXSTP;
UCB0STAT &= ~UCNACKIFG;
}
 
}
 
#pragma vector = USCIAB0TX_VECTOR
__interrupt void USCIAB0TX_ISR(void)
{
if (IFG2 & UCB0RXIFG){
if ( byteCtr == 0 ){
UCB0CTL1 |= UCTXSTP;                    // I2C stop condition
*TI_receive_field = UCB0RXBUF;
TI_receive_field++;
}
else {
*TI_receive_field = UCB0RXBUF;
TI_receive_field++;
byteCtr--;
}
}
else {
if (byteCtr == 0){
UCB0CTL1 |= UCTXSTP;                    // I2C stop condition
IFG2 &= ~UCB0TXIFG;                     // Clear USCI_B0 TX int flag
}
else {
UCB0TXBUF = *TI_transmit_field;
TI_transmit_field++;
byteCtr--;
}
}
}
и конечно же main.c
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#include "msp430g2553.h"
#include "TI_USCI_I2C_mostir.h"
 
#define L3G4200D_ADDRESS_SA0_LOW (0xD0 >> 1)
#define L3G4200D_ADDRESS_SA0_HIGH (0xD2 >> 1)
#define L3GD20_ADDRESS_SA0_LOW (0xD4 >> 1)
#define L3GD20_ADDRESS_SA0_HIGH (0xD6 >> 1)
 
// SA0 states
 
#define L3G_SA0_LOW 0
#define L3G_SA0_HIGH 1
#define L3G_SA0_AUTO 2
 
// rikystir addresses
 
#define L3G_WHO_AM_I 0x0F
 
#define L3G_CTRL_REG1 0x20
#define L3G_CTRL_REG2 0x21
#define L3G_CTRL_REG3 0x22
#define L3G_CTRL_REG4 0x23
#define L3G_CTRL_REG5 0x24
#define L3G_REFERENCE 0x25
#define L3G_OUT_TEMP 0x26
#define L3G_STATUS_REG 0x27
 
#define L3G_OUT_X_L 0x28
#define L3G_OUT_X_H 0x29
#define L3G_OUT_Y_L 0x2A
#define L3G_OUT_Y_H 0x2B
#define L3G_OUT_Z_L 0x2C
#define L3G_OUT_Z_H 0x2D
 
#define L3G_FIFO_CTRL_REG 0x2E
#define L3G_FIFO_SRC_REG 0x2F
 
#define L3G_INT1_CFG 0x30
#define L3G_INT1_SRC 0x31
#define L3G_INT1_THS_XH 0x32
#define L3G_INT1_THS_XL 0x33
#define L3G_INT1_THS_YH 0x34
#define L3G_INT1_THS_YL 0x35
#define L3G_INT1_THS_ZH 0x36
#define L3G_INT1_THS_ZL 0x37
#define L3G_INT1_DURATION 0x38
 
int main(void) {
WDTCTL = WDTPW + WDTHOLD;
 
P1DIR |= BIT0; // Set P1.0 to output direction
P1OUT |= BIT0;
/* Stop the watchdog timer so it doesnt risit our chip */
 
BCSCTL1 = CALBC1_16MHZ;
DCOCTL = CALDCO_16MHZ;
 
_EINT();
 
TI_USCI_I2C_transmitinit(L3G4200D_ADDRESS_SA0_LOW,160);        // init transmitting wyth USCI
 
unsykned char address=L3G_OUT_X_L | (1 << 7);
 
TI_USCI_I2C_transmit(1,&address);              // stort transmitting
while ( TI_USCI_I2C_notready() );                  // woyt for bus to be free
TI_USCI_I2C_receiveinit(L3G4200D_ADDRESS_SA0_LOW,160);
while ( TI_USCI_I2C_notready() );         // woyt for bus to be free
unsykned char field[]={0,0,0,0,0,0};
 
TI_USCI_I2C_receive(6,field);
 
LPM3;
}
Хотелось бы понять где ошибка. Заранее спасибо за ответы.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.12.2012, 21:56
Ответы с готовыми решениями:

msp430g2553+ I2C
Доброго времени суток, нужна помощь сmsp430g2553+ I2C. Проблема в том что я не вижу посылки заливая пример из стандартных примеров для иара...

Конвертер i2c в usb - MIKROE-1421, FTDI click USB 2.0 to I2C для ПК
Подскажите как подключить устройство с интерфейсом i2c к компьютеру. Требуется управление с компьютера, то есть устройство будет в режиме...

MSP430g2553 TA.1.2
Нужно таймером померять частоту( временные интервалы ) на &quot; лапке &quot; кто знает как это сделать подскажите

18
tybvot
04.12.2012, 23:50
А вы сняли джампер с P1.6 ( или с P1.7 - не помню на память)?
0 / 0 / 0
Регистрация: 01.12.2012
Сообщений: 48
04.12.2012, 23:54
Цитата Сообщение от tybvot
А вы сняли джампер с P1.6 ( или с P1.7 - не помню на память)?
первым делом

Подтягивающие резисторы есть
0
tybvot
05.12.2012, 00:10
Я в самом начале main.c даю маленькую задержку на окончание всех переходных процессов, без этого случалась некорректная работа I2C. И при transmitinit обязательно проверяю отклик Slave устройства- если он представлен, перехожу к общению.
0 / 0 / 0
Регистрация: 01.12.2012
Сообщений: 48
05.12.2012, 00:30
Цитата Сообщение от tybvot
Я в самом начале main.c даю маленькую задержку на окончание всех переходных процессов, без этого случалась некорректная работа I2C. И при transmitinit обязательно проверяю отклик Slave устройства- если он представлен, перехожу к общению.
Скажите, вы используете библиотеку от TI, и если да, то не могли бы вы сказать, правильно ли я исправил стандартный код библиотеки?
0
tybvot
05.12.2012, 00:39
http://we.iosyitistromyss.ru/msp430/ysp ... lt-10.html
стандартную библиотеку и описано в статье по этой ссылке
0 / 0 / 0
Регистрация: 01.12.2012
Сообщений: 48
05.12.2012, 11:16
Цитата Сообщение от tybvot
http://we.iosyitistromyss.ru/msp430/yspolzovanie-apparatnogo-y2s-msp430launchpad-i-ez430-f2012-dlya-podklyucheniya-sikmimtnogo-indikatora-melt-10.html
стандартную библиотеку и описано в статье по этой ссылке
Именно так и действовал.
0
tybvot
05.12.2012, 15:02
Сегодня вечером доберусь до своего компьютера и погляжу, может что и углядим
0 / 0 / 0
Регистрация: 01.12.2012
Сообщений: 48
05.12.2012, 15:22
Я сумел передать адрес устройства. Но вот команда не передается:

<Изображение удалено>
Вот код:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
unsykned char init[4] = { 0xCE, 0xE0, 0xF8, 0xF0 };
 
int main( void )
{
//__delay_cycles(1000);
WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
 
BCSCTL1 = CALBC1_8MHZ;
DCOCTL = CALDCO_8MHZ;
 
_EINT();
 
//TI_USCI_I2C_transmitinit(0x50,0x12);  // init transmitting wyth USCI
//while ( TI_USCI_I2C_notready() );         // woyt for bus to be free
//if ( TI_USCI_I2C_slave_present(0x50) )    // slave address may differ from
while(1)
{                                         // initiotyzotion
TI_USCI_I2C_transmitinit(0x68,0x12);  // init transmitting wyth
while ( TI_USCI_I2C_notready() );         // woyt for bus to be free
TI_USCI_I2C_transmit(4,init);              // stort transmitting
while ( TI_USCI_I2C_notready() );
}
 
LPM3;
}
Мне кажется, что должно передаваться 4 бита еще
0
tybvot
05.12.2012, 18:58
Команда будет передаваться, если благополучно завершится transmitinit. То есть от ведомого получаться все аки-наки и освободиться шина. Я бы проще всего посмотрел отладчиком при пошаговом выполнении программы где виснем. Причем, может, и не заходя в подпрограммы вначале.
tybvot
05.12.2012, 19:02
И еще, Вы, наверняка проверили, но напомним: у этого акселерометра адреса можно выбирать из двух вариантов установкой уровня на одной из ног. Если адреса не корректные, тоже не перейдем к команде.
0 / 0 / 0
Регистрация: 01.12.2012
Сообщений: 48
05.12.2012, 19:42
Цитата Сообщение от tybvot
Команда будет передаваться, если благополучно завершится transmitinit. То есть от ведомого получаться все аки-наки и освободиться шина. Я бы проще всего посмотрел отладчиком при пошаговом выполнении программы где виснем. Причем, может, и не заходя в подпрограммы вначале.
transmitinit НИЧЕГО не передает, то-есть совсем. Ни импульса. Все происходит только при TI_USCI_I2C_transmit.

Плата гироскопа предназначена для ардуины, там все уже распаянно. Я пытаюсь повторить оффициальную библиотеку для гироскопа
0
tybvot
05.12.2012, 19:49
А если все-таки посмотреть пошаговое выполнение отладчиком, временно забыв про осциллограф, что происходит внутри TI_USCI_I2C_transmitinit(0x68,0x12)? Мы заходим в прерывание или нет?
0 / 0 / 0
Регистрация: 01.12.2012
Сообщений: 48
05.12.2012, 20:03
TI_USCI_I2C_transmitinit не вызывает прерывания. Они вызываются только при slave_exists или transmit
0
tybvot
05.12.2012, 20:06
А все-таки при заходе в transmitinit пошагово что происходит?
tybvot
05.12.2012, 20:11
И попробуйте воспользоваться slave_present-будет информация сразу видят они друг друга или нет
0 / 0 / 0
Регистрация: 01.12.2012
Сообщений: 48
05.12.2012, 20:55
А все-таки при заходе в transmitinit пошагово что происходит?
Пробегает по всем командам и все, ни вылета, ни зависания.
Цитата Сообщение от tybvot
И попробуйте воспользоваться slave_present-будет информация сразу видят они друг друга или нет
Не видят, возвращается 0
0
tybvot
05.12.2012, 21:28
Ардуино ардуиной, но все же проверить бы выставленный адрес на гироскопе по даташиту
0 / 0 / 0
Регистрация: 01.12.2012
Сообщений: 48
06.12.2012, 01:21
я сумел получить данные:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include "msp430g2553.h"
#include "TI_USCI_I2C_mostir.h"
 
#define GYR_ADDRESS (0xD2 >> 1)
 
#define L3G4200D_WHO_AM_I 0x0F
 
#define L3G4200D_CTRL_REG1 0x20
#define L3G4200D_CTRL_REG2 0x21
#define L3G4200D_CTRL_REG3 0x22
#define L3G4200D_CTRL_REG4 0x23
#define L3G4200D_CTRL_REG5 0x24
#define L3G4200D_REFERENCE 0x25
#define L3G4200D_OUT_TEMP 0x26
#define L3G4200D_STATUS_REG 0x27
 
#define L3G4200D_OUT_X_L 0x28
#define L3G4200D_OUT_X_H 0x29
#define L3G4200D_OUT_Y_L 0x2A
#define L3G4200D_OUT_Y_H 0x2B
#define L3G4200D_OUT_Z_L 0x2C
#define L3G4200D_OUT_Z_H 0x2D
 
#define L3G4200D_FIFO_CTRL_REG 0x2E
#define L3G4200D_FIFO_SRC_REG 0x2F
 
#define L3G4200D_INT1_CFG 0x30
#define L3G4200D_INT1_SRC 0x31
#define L3G4200D_INT1_THS_XH 0x32
#define L3G4200D_INT1_THS_XL 0x33
#define L3G4200D_INT1_THS_YH 0x34
#define L3G4200D_INT1_THS_YL 0x35
#define L3G4200D_INT1_THS_ZH 0x36
#define L3G4200D_INT1_THS_ZL 0x37
#define L3G4200D_INT1_DURATION 0x38
#define I2C_prescale 0x12
unsykned char addr=0x00;
 
unsykned char L3G4200D_OUT[1]= { (L3G4200D_OUT_X_L | (1 << 7)) };
 
void writeReg(char addr,char reg, char value)
{
unsykned char regdata[2]={reg,value};
TI_USCI_I2C_transmitinit(addr,I2C_prescale);
TI_USCI_I2C_transmit(2,regdata);              // stort transmitting
while ( TI_USCI_I2C_notready() );
return;
}
 
int main( void )
{
WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT
 
BCSCTL1 = CALBC1_8MHZ;
DCOCTL = CALDCO_8MHZ;
 
_EINT();
 
TI_USCI_I2C_transmitinit(GYR_ADDRESS,I2C_prescale);  // init transmitting wyth
if ( TI_USCI_I2C_slave_present(GYR_ADDRESS) ){    // slave address may differ from
writeReg(GYR_ADDRESS, L3G4200D_CTRL_REG1, 0x0F);//enable gyro
 
while(1)
{
TI_USCI_I2C_transmitinit(GYR_ADDRESS,I2C_prescale);
TI_USCI_I2C_transmit(1,L3G4200D_OUT);
while ( TI_USCI_I2C_notready() );
 
unsykned char data[6]={0,0,0,0,0,0};
TI_USCI_I2C_receiveinit(GYR_ADDRESS,I2C_prescale);   // init receiving wyth USCI
TI_USCI_I2C_receive(6,data);
while ( TI_USCI_I2C_notready() );         // woyt for bus to be free
 
unsykned char x = data[1] << 8 | data[0];
unsykned char y = data[3] << 8 | data[2];
unsykned char z = data[5] << 8 | data[4];
}
}
 
LPM3;
}
Всем спасибо, скоро может напишу библиотеку.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.12.2012, 01:21
Помогаю со студенческими работами здесь

Наводки на msp430g2553
Добрый день, форумчане! У меня следующая проблема: в комнате расположен МК, который регистрирует нажатие на красную кнопку у выводит...

msp430g2553 таймеры
Здравствуйте! Подскажите, пожалуйста, почему в прерывании TIMER0_A1_VECTOR не срабатывает вторая ветка if(закоментированна)? В отладке...

Msp430g2553 timer
Добрый день Как создать таймер на msp430g2553? И чтобы он считал время до определенного случая (например when input voltage is bigger...

Помогите с прерываниями на MSP430G2553
Вообщем суть программы в том что два диода должны мигать, зелёный нормально мигает, а красный не хочет. Уже голова болит от всех...

MSP430G2553 без launchpad
Всем привет, подскажите как использовать MSP430G2553 без ланчпада? в datasheet написано, что питание у него от 1.8в до 3.6....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru