реклама на сайте
подробности

 
 
5 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> MSP-GCC 4. Кто-нибудь пробовал?, Случайно наткнулся:)
AHTOXA
сообщение Oct 6 2009, 11:27
Сообщение #1


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



http://mspgcc4.sourceforge.net/

Пишут, что
Цитата
GCC 4.x has several advantages over the old 3.2.3 branch. Here are the most important:

  • Better optimization. The generated code is typically 7%-10% smaller than code generated by MSPGCC-3.2.3
  • Better debug info support. The objdump utility displays the mixed assembly/code correctly.
  • Better C++ and inlining support. Unused local variables are automatically filtered out. Inline functions are implemented in a much more compact way.
  • Support for various handy features. For example, gcc 4.3 correctly handles the #pragma once statements.
  • Additionally, the MSPGCC4 port fixes the data-sections bug present in all original MSPGCC versions, allowing using -ffunction-sections and -fdata-sections switches.


Насчёт -ffunction-sections and -fdata-sections врут похоже, у меня и с ними и в текущем msp-gcc нет проблем.

Короче, если кто-то пробовал, поделитесь пожалуйста впечатлениями.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
Ko4egap
сообщение Oct 11 2009, 08:23
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 17-09-09
Пользователь №: 52 434



Отличная новость! Завтра буду пробовать. Надеюсь в нём реализована полноценная поддержка 5й серии

Сообщение отредактировал Ko4egap - Oct 11 2009, 08:36
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Oct 11 2009, 19:02
Сообщение #3


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(Ko4egap @ Oct 11 2009, 12:23) *
Отличная новость! Завтра буду пробовать. Надеюсь в нём реализована полноценная поддержка 5й серии

Ваши надежды преждевременны. rolleyes.gif Вся аппаратная часть для 54xx закомментирована.Мне не удалось собрать проект для 5437.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Nov 1 2009, 13:32
Сообщение #4


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Выкачал, стал запускать - пишет, мол, файл исполняемый, но не для этой системы (у меня дома ради изврата XP64 стоит).
Завтра на работе попробую.

Радует хотя бы, что что-то шевелится, а не заглохло, как на исходном mspgcc.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
AHTOXA
сообщение Nov 1 2009, 21:27
Сообщение #5


фанат дивана
******

Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684



Цитата(MrYuran @ Nov 1 2009, 18:32) *
Радует хотя бы, что что-то шевелится, а не заглохло, как на исходном mspgcc.

Насколько я понял, там "шевелится" только в одном направлении - адаптация под GCC 4. Никаких изменений в плане поддержки новых чипов не наблюдается.
Но в любом случае, лучше хоть такое движение, чем никакого.


--------------------
Если бы я знал, что такое электричество...
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Nov 2 2009, 06:07
Сообщение #6


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(AHTOXA @ Nov 2 2009, 00:27) *
Насколько я понял, там "шевелится" только в одном направлении - адаптация под GCC 4. Никаких изменений в плане поддержки новых чипов не наблюдается.

Мне новые чипы пока неактуальны, а вот некоторые глюки слегка напрягают (например, проблемы с выровненными структурами и юнионами)
Может, в новом GCC это уже пофиксено?
Кстати, а в чём заключается поддержка новых чипов? Неужто там настолько всё по-другому?
Запустил... smile3046.gif
Цитата
D:\Program Files>F:\NEW\msp430-gcc-4.4.2-gdb-7.0-insight-6.8.exe
Программа не умещается в памяти
D:\PROGRA~1>

Ныпонил... 07.gif


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Nov 2 2009, 12:22
Сообщение #7


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(MrYuran @ Nov 2 2009, 09:07) *
Кстати, а в чём заключается поддержка новых чипов? Неужто там настолько всё по-другому?

Описание периферии (специальные регистры). В GCC часто заголовочный файл один на группу периферии, а в 54xx периферия изменена и ее больше. Уже дополнительный файл для GPIO 54xx создан. Существующая система заголовочных файлов, похоже (IMHO), плохо стыкуется с новыми контроллерами в плане совместимости. У IAR и CCE один большой файл на конкретный микроконтроллер.
Цитата
Мне новые чипы пока неактуальны...

Для меня, к сожалению, актуальна только серия 54xx.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Nov 2 2009, 12:39
Сообщение #8


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(mdmitry @ Nov 2 2009, 15:22) *
У IAR и CCE один большой файл на конкретный микроконтроллер.

Ну так и что мешает вместо <io.h> подключить готовый файл от ИАРа?
Другое дело, когда несовместимость на уровне процессорного ядра и надо править бэкэнд компилятора (вроде не перепутал biggrin.gif )


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Nov 2 2009, 16:29
Сообщение #9


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(MrYuran @ Nov 2 2009, 15:39) *
Ну так и что мешает вместо <io.h> подключить готовый файл от ИАРа?
Другое дело, когда несовместимость на уровне процессорного ядра и надо править бэкэнд компилятора

IAR и ССЕ потянет за собой ещё свои файлы (например, in430.h, intrinsics.h) со своими pragma. Разбираться в этом большого желания нет.
Про кодогенерацию не знаю, особенно при объеме кода более 64к.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Nov 6 2009, 10:14
Сообщение #10


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Таки распаковал... Йошкин кот!
265 МЕТРОВ!!!
Чего туда понапихали?!!
Вроде всё то же...

Кстати, для 54хх хедеры лежат без комментиариев, может уже и работают...
CODE
#if !defined(__msp430x54xx)
#define __msp430x54xx

/* msp430x54xx.h
*
* mspgcc project: MSP430 device headers
* MSP430x54xx family header
*
* © 2006 by Steve Underwood <steveu@coppice.org>
* Originally based in part on work by Texas Instruments Inc.
*
* 2008-10-08 - sb-sf (sb-sf@users.sf.net)
* - created, based on msp430xG461x.h
*
* $Id: msp430x54xx.h,v 1.5 2009/06/04 21:55:18 cliechti Exp $
*/

#include <iomacros.h>

#define __MSP430_HAS_T0A5__
#define __MSP430_HAS_T1A3__
#define __MSP430_HAS_UCS__
#define __MSP430_HAS_USCI0_5__
#define __MSP430_HAS_USCI1_5__
#define __MSP430_HAS_USCI2_5__
#define __MSP430_HAS_USCI2_5__
#define __MSP430_SYS_BASE__ 0x180
#define __MSP430_WDT_A_BASE__ 0x150
#define __MSP430_PORT1_BASE__ 0x200
#define __MSP430_PORT2_BASE__ 0x200
#define __MSP430_PORT3_BASE__ 0x220
#define __MSP430_PORT4_BASE__ 0x220
#define __MSP430_PORT5_BASE__ 0x240
#define __MSP430_PORT6_BASE__ 0x240
#define __MSP430_PORT7_BASE__ 0x260
#define __MSP430_PORT8_BASE__ 0x260
#define __MSP430_PORT9_BASE__ 0x280
#define __MSP430_PORT10_BASE__ 0x280
#define __MSP430_PORT11_BASE__ 0x2A0
#define __MSP430_PORTJ_BASE__ 0x320

#define __MSP430_MPY32_BASE__ 0x4C0


#include <msp430/wdt_a.h>
#include <msp430/sys.h>
#include <msp430/gpio_5xxx.h>
#include <msp430/mpy32.h>
#include <msp430/timera.h>
#include <msp430/unified_clock_system.h>
#include <msp430/usci.h>

/*

Empty yet sad.gif

*/
#define GIE 0x0008

#define SFRIE1_ 0x0100 /* Interrupt Enable 1 */
#define SFRIE1_L_ SFRIE1_
#define SFRIE1_H_ SFRIE1_ + 0x01
sfrw(SFRIE1, SFRIE1_);
sfrb(SFRIE1_L, SFRIE1_L_);
sfrb(IE1, SFRIE1_L_);
sfrb(SFRIE1_H, SFRIE1_H_);
sfrb(IE2, SFRIE1_H_);
#define WDTIE (1<<0)
#define OFIE (1<<1)
/* RESERVED (1<<2)*/
#define VMAIE (1<<3)
#define NMIIE (1<<4)
#define ACCVIE (1<<5)
#define JMBINIE (1<<6)
#define JMBOUTIE (1<<7)

#define SFRIFG1_ 0x0102 /* Interrupt Flag 1 */
#define SFRIFG1_L_ SFRIFG1_
#define SFRIFG1_H_ SFRIFG1_ + 0x01
sfrw(SFRIFG1, SFRIFG1_);
sfrb(SFRIFG1_L, SFRIFG1_L_);
sfrb(IFG1, SFRIFG1_L_);
sfrb(SFRIFG1_H, SFRIFG1_H_);
sfrb(IFG2, SFRIFG1_H_);
#define WDTIFG (1<<0)
#define OFIFG (1<<1)
/* RESERVED (1<<2)*/
#define VMAIFG (1<<3)
#define NMIIFG (1<<4)
/* RESERVED (1<<5)*/
#define JMBINIFG (1<<6)
#define JMBOUTIFG (1<<7)

#define SFRRPCR_ 0x0104 /* Reset pin control */
sfrw(SFRRPCR, SFRRPCR_);
#define SFRRPCR_L_ SFRRPCR_
#define SFRRPCR_H_ SFRRPCR_ + 0x01
sfrb(SFRRPCR_L, SFRRPCR_L_);
sfrb(SFRRPCR_H, SFRRPCR_H_);
#define SYSNMI (1<<0) /* RST/NMI pin (0:Reset, 1: NMI) */
#define SYSNMIIES (1<<1) /* NMI edge select (0:rising edge). Can trigger NMI */
#define SYSRSTUP (1<<2) /* Reset resistor pin pullup (0: pulldown, 1: pullup) */
#define SYSRSTRE (1<<3) /* Reset pin resistor enable (0: disabled, 1: enabled) */


#define RTC_A_VECTOR 0x52 /* 0xFFD2 Basic Timer / RTC */
#define PORT2_VECTOR 0x54 /* 0xFFD4 Port 2 */
#define USCIB3_RXTX_VECTOR 0x56 /* 0xFFD6 USCI B3 RX/TX */
#define USCIA3_RXTX_VECTOR 0x58 /* 0xFFD8 USCI A3 RX/TX */
#define USCIB1_RXTX_VECTOR 0x5A /* 0xFFDA USCI B1 RX/TX */
#define USCIA1_RXTX_VECTOR 0x5C /* 0xFFDC USCI A1 RX/TX */
#define PORT1_VECTOR 0x5E /* 0xFFDE Port 1 */
#define TIMER1_A1_VECTOR 0x60 /* 0xFFE0 Timer1_A3 CC1-2, TA1 */
#define TIMER1_A0_VECTOR 0x62 /* 0xFFE2 Timer1_A3 CC0 */
#define DMA_VECTOR 0x64 /* 0xFFE4 DMA */
#define USCIB2_RXTX_VECTOR 0x66 /* 0xFFE6 USCI B2 RX/TX */
#define USCIA2_RXTX_VECTOR 0x68 /* 0xFFE8 USCI A2 RX/TX */
#define TIMER0_A1_VECTOR 0x6A /* 0xFFEA Timer0_A5 CC1-4, TA0 */
#define TIMER0_A0_VECTOR 0x6C /* 0xFFEC Timer0_A5 CC0 */
#define AD12_A_VECTOR 0x6E /* 0xFFEE ADC */
#define USCIB0_RXTX_VECTOR 0x70 /* 0xFFF0 USCI B0 RX/TX */
#define USCIA0_RXTX_VECTOR 0x72 /* 0xFFF2 USCI A0 RX/TX */
#define WDT_VECTOR 0x74 /* 0xFFF4 Watchdog Timer */
#define TIMER0_B1_VECTOR 0x76 /* 0xFFF6 Timer_B7 CC1-6, TB */
#define TIMER0_B0_VECTOR 0x78 /* 0xFFF8 Timer_B7 CC0 */
#define USER_NMI_VECTOR 0x7A /* 0xFFFA Non-maskable */
#define NMI_VECTOR 0x7C /* 0xFFFC Non-maskable */

#endif /* #ifndef __msp430x54xx */


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Nov 6 2009, 12:45
Сообщение #11


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(MrYuran @ Nov 6 2009, 13:14) *
Кстати, для 54хх хедеры лежат без комментиариев, может уже и работают...

Вы посмотрите у себя файл ...\mspgcc\msp430\include\msp430\usci.h. В моей версии все регистры для старших номеров портов закомментированы. crying.gif И это для mspgcc3 и 4. (смотрю на оба варианта)


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Nov 6 2009, 12:49
Сообщение #12


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



CODE
#if !defined(__msp430_headers_usci_h__)
#define __msp430_headers_usci_h__

/* usi.h
*
* mspgcc project: MSP430 device headers
* USCI module header
*
* © 2006 by Steve Underwood <steveu@coppice.org>
* Originally based in part on work by Texas Instruments Inc.
*
* $Id: usci.h,v 1.7 2009/06/04 21:55:18 cliechti Exp $
*
* 2008-02-05 - modifications by G.Lemm <msp430@daqtix.com>
* - added UC1IE and UC1IFG registers
* - added UC*1*IE and UC*1*IFG bit definitions
* 2009-05-19 - modifications by S. Balling <praktikum@innoventis.de>
* - added switch for USCI0
* - added USCI0_5
* - added USCI1_5
* - added USCI2_5
* - added USCI3_5
*/

/* Switches:
__MSP430_HAS_USCI0__ - if device has USCI0
__MSP430_HAS_USCI1__ - if device has USCI1
__MSP430_HAS_USCI0_5__ - if device has USCI0 and is part of family 5
__MSP430_HAS_USCI1_5__ - if device has USCI1 and is part of family 5
__MSP430_HAS_USCI2_5__ - if device has USCI2 and is part of family 5
__MSP430_HAS_USCI3_5__ - if device has USCI3 and is part of family 5

*/

#define USIPE7 (0x80) /* USI Port Enable Px.7 */
#define USIPE6 (0x40) /* USI Port Enable Px.6 */
#define USIPE5 (0x20) /* USI Port Enable Px.5 */
#define USILSB (0x10) /* USI LSB first 1:LSB / 0:MSB */
#define USIMST (0x08) /* USI Master Select 0:Slave / 1:Master */
#define USIGE (0x04) /* USI General Output Enable Latch */
#define USIOE (0x02) /* USI Output Enable */
#define USISWRST (0x01) /* USI Software Reset */

#define USICKPH (0x80) /* USI Sync. Mode: Clock Phase */
#define USII2C (0x40) /* USI I2C Mode */
#define USISTTIE (0x20) /* USI START Condition interrupt enable */
#define USIIE (0x10) /* USI Counter Interrupt enable */
#define USIAL (0x08) /* USI Arbitration Lost */
#define USISTP (0x04) /* USI STOP Condition received */
#define USISTTIFG (0x02) /* USI START Condition interrupt Flag */
#define USIIFG (0x01) /* USI Counter Interrupt Flag */

#define USIDIV2 (0x80) /* USI Clock Divider 2 */
#define USIDIV1 (0x40) /* USI Clock Divider 1 */
#define USIDIV0 (0x20) /* USI Clock Divider 0 */
#define USISSEL2 (0x10) /* USI Clock Source Select 2 */
#define USISSEL1 (0x08) /* USI Clock Source Select 1 */
#define USISSEL0 (0x04) /* USI Clock Source Select 0 */
#define USICKPL (0x02) /* USI Clock Polarity 0:Inactive=Low / 1:Inactive=High */
#define USISWCLK (0x01) /* USI Software Clock */

#define USIDIV_0 (0x00) /* USI Clock Divider: 0 */
#define USIDIV_1 (0x20) /* USI Clock Divider: 1 */
#define USIDIV_2 (0x40) /* USI Clock Divider: 2 */
#define USIDIV_3 (0x60) /* USI Clock Divider: 3 */
#define USIDIV_4 (0x80) /* USI Clock Divider: 4 */
#define USIDIV_5 (0xA0) /* USI Clock Divider: 5 */
#define USIDIV_6 (0xC0) /* USI Clock Divider: 6 */
#define USIDIV_7 (0xE0) /* USI Clock Divider: 7 */

#define USISSEL_0 (0x00) /* USI Clock Source: 0 */
#define USISSEL_1 (0x04) /* USI Clock Source: 1 */
#define USISSEL_2 (0x08) /* USI Clock Source: 2 */
#define USISSEL_3 (0x0C) /* USI Clock Source: 3 */
#define USISSEL_4 (0x10) /* USI Clock Source: 4 */
#define USISSEL_5 (0x14) /* USI Clock Source: 5 */
#define USISSEL_6 (0x18) /* USI Clock Source: 6 */
#define USISSEL_7 (0x1C) /* USI Clock Source: 7 */

#define USISCLREL (0x80) /* USI SCL Released */
#define USI16B (0x40) /* USI 16 Bit Shift Register Enable */
#define USIFGDC (0x20) /* USI Interrupt Flag don't clear */
#define USICNT4 (0x10) /* USI Bit Count 4 */
#define USICNT3 (0x08) /* USI Bit Count 3 */
#define USICNT2 (0x04) /* USI Bit Count 2 */
#define USICNT1 (0x02) /* USI Bit Count 1 */
#define USICNT0 (0x01) /* USI Bit Count 0 */

// UART-Mode Bits
#define UCPEN (0x80) /* Async. Mode: Parity enable */
#define UCPAR (0x40) /* Async. Mode: Parity 0:odd / 1:even */
#define UCMSB (0x20) /* Async. Mode: MSB first 0:LSB / 1:MSB */
#define UC7BIT (0x10) /* Async. Mode: Data Bits 0:8-bits / 1:7-bits */
#define UCSPB (0x08) /* Async. Mode: Stop Bits 0:one / 1: two */
#define UCMODE1 (0x04) /* Async. Mode: USCI Mode 1 */
#define UCMODE0 (0x02) /* Async. Mode: USCI Mode 0 */
#define UCSYNC (0x01) /* Sync-Mode 0:UART-Mode / 1:SPI-Mode */

// SPI-Mode Bits
#define UCCKPH (0x80) /* Sync. Mode: Clock Phase */
#define UCCKPL (0x40) /* Sync. Mode: Clock Polarity */
#define UCMST (0x08) /* Sync. Mode: Master Select */

// I2C-Mode Bits
#define UCA10 (0x80) /* 10-bit Address Mode */
#define UCSLA10 (0x40) /* 10-bit Slave Address Mode */
#define UCMM (0x20) /* Multi-Master Environment */
//#define res (0x10) /* reserved */
#define UCMODE_0 (0<<1) /* Sync. Mode: USCI Mode: 0 */
#define UCMODE_1 (1<<1) /* Sync. Mode: USCI Mode: 1 */
#define UCMODE_2 (2<<1) /* Sync. Mode: USCI Mode: 2 */
#define UCMODE_3 (3<<1) /* Sync. Mode: USCI Mode: 3 */

// UART-Mode Bits
#define UCSSEL1 (0x80) /* USCI 0 Clock Source Select 1 */
#define UCSSEL0 (0x40) /* USCI 0 Clock Source Select 0 */
#define UCRXEIE (0x20) /* RX Error interrupt enable */
#define UCBRKIE (0x10) /* Break interrupt enable */
#define UCDORM (0x08) /* Dormant (Sleep) Mode */
#define UCTXADDR (0x04) /* Send next Data as Address */
#define UCTXBRK (0x02) /* Send next Data as Break */
#define UCSWRST (0x01) /* USCI Software Reset */

// SPI-Mode Bits
//#define res (0x20) /* reserved */
//#define res (0x10) /* reserved */
//#define res (0x08) /* reserved */
//#define res (0x04) /* reserved */
//#define res (0x02) /* reserved */

// I2C-Mode Bits
//#define res (0x20) /* reserved */
#define UCTR (0x10) /* Transmit/Receive Select/Flag */
#define UCTXNACK (0x08) /* Transmit NACK */
#define UCTXSTP (0x04) /* Transmit STOP */
#define UCTXSTT (0x02) /* Transmit START */
#define UCSSEL_0 (0<<6) /* USCI 0 Clock Source: 0 */
#define UCSSEL_1 (1<<6) /* USCI 0 Clock Source: 1 */
#define UCSSEL_2 (2<<6) /* USCI 0 Clock Source: 2 */
#define UCSSEL_3 (3<<6) /* USCI 0 Clock Source: 3 */

#define UCBRF3 (0x80) /* USCI First Stage Modulation Select 3 */
#define UCBRF2 (0x40) /* USCI First Stage Modulation Select 2 */
#define UCBRF1 (0x20) /* USCI First Stage Modulation Select 1 */
#define UCBRF0 (0x10) /* USCI First Stage Modulation Select 0 */
#define UCBRS2 (0x08) /* USCI Second Stage Modulation Select 2 */
#define UCBRS1 (0x04) /* USCI Second Stage Modulation Select 1 */
#define UCBRS0 (0x02) /* USCI Second Stage Modulation Select 0 */
#define UCOS16 (0x01) /* USCI 16-times Oversampling enable */

#define UCBRF_0 (0x0<<4) /* USCI First Stage Modulation: 0 */
#define UCBRF_1 (0x1<<4) /* USCI First Stage Modulation: 1 */
#define UCBRF_2 (0x2<<4) /* USCI First Stage Modulation: 2 */
#define UCBRF_3 (0x3<<4) /* USCI First Stage Modulation: 3 */
#define UCBRF_4 (0x4<<4) /* USCI First Stage Modulation: 4 */
#define UCBRF_5 (0x5<<4) /* USCI First Stage Modulation: 5 */
#define UCBRF_6 (0x6<<4) /* USCI First Stage Modulation: 6 */
#define UCBRF_7 (0x7<<4) /* USCI First Stage Modulation: 7 */
#define UCBRF_8 (0x8<<4) /* USCI First Stage Modulation: 8 */
#define UCBRF_9 (0x9<<4) /* USCI First Stage Modulation: 9 */
#define UCBRF_10 (0xA<<4) /* USCI First Stage Modulation: A */
#define UCBRF_11 (0xB<<4) /* USCI First Stage Modulation: B */
#define UCBRF_12 (0xC<<4) /* USCI First Stage Modulation: C */
#define UCBRF_13 (0xD<<4) /* USCI First Stage Modulation: D */
#define UCBRF_14 (0xE<<4) /* USCI First Stage Modulation: E */
#define UCBRF_15 (0xF<<4) /* USCI First Stage Modulation: F */

#define UCBRS_0 (0<<1) /* USCI Second Stage Modulation: 0 */
#define UCBRS_1 (1<<1) /* USCI Second Stage Modulation: 1 */
#define UCBRS_2 (2<<1) /* USCI Second Stage Modulation: 2 */
#define UCBRS_3 (3<<1) /* USCI Second Stage Modulation: 3 */
#define UCBRS_4 (4<<1) /* USCI Second Stage Modulation: 4 */
#define UCBRS_5 (5<<1) /* USCI Second Stage Modulation: 5 */
#define UCBRS_6 (6<<1) /* USCI Second Stage Modulation: 6 */
#define UCBRS_7 (7<<1) /* USCI Second Stage Modulation: 7 */

#define UCLISTEN (0x80) /* USCI Listen mode */
#define UCFE (0x40) /* USCI Frame Error Flag */
#define UCOE (0x20) /* USCI Overrun Error Flag */
#define UCPE (0x10) /* USCI Parity Error Flag */
#define UCBRK (0x08) /* USCI Break received */
#define UCRXERR (0x04) /* USCI RX Error Flag */
#define UCADDR (0x02) /* USCI Address received Flag */
#define UCBUSY (0x01) /* USCI Busy Flag */
#define UCIDLE (0x02) /* USCI Idle line detected Flag */

//#define res (0x80) /* reserved */
//#define res (0x40) /* reserved */
//#define res (0x20) /* reserved */
//#define res (0x10) /* reserved */
#define UCNACKIE (0x08) /* NACK Condition interrupt enable */
#define UCSTPIE (0x04) /* STOP Condition interrupt enable */
#define UCSTTIE (0x02) /* START Condition interrupt enable */
#define UCALIE (0x01) /* Arbitration Lost interrupt enable */

#define UCSCLLOW (0x40) /* SCL low */
#define UCGC (0x20) /* General Call address received Flag */
#define UCBBUSY (0x10) /* Bus Busy Flag */
#define UCNACKIFG (0x08) /* NAK Condition interrupt Flag */
#define UCSTPIFG (0x04) /* STOP Condition interrupt Flag */
#define UCSTTIFG (0x02) /* START Condition interrupt Flag */
#define UCALIFG (0x01) /* Arbitration Lost interrupt Flag */

#define UCIRTXPL5 (0x80) /* IRDA Transmit Pulse Length 5 */
#define UCIRTXPL4 (0x40) /* IRDA Transmit Pulse Length 4 */
#define UCIRTXPL3 (0x20) /* IRDA Transmit Pulse Length 3 */
#define UCIRTXPL2 (0x10) /* IRDA Transmit Pulse Length 2 */
#define UCIRTXPL1 (0x08) /* IRDA Transmit Pulse Length 1 */
#define UCIRTXPL0 (0x04) /* IRDA Transmit Pulse Length 0 */
#define UCIRTXCLK (0x02) /* IRDA Transmit Pulse Clock Select */
#define UCIREN (0x01) /* IRDA Encoder/Decoder enable */

#define UCIRRXFL5 (0x80) /* IRDA Receive Filter Length 5 */
#define UCIRRXFL4 (0x40) /* IRDA Receive Filter Length 4 */
#define UCIRRXFL3 (0x20) /* IRDA Receive Filter Length 3 */
#define UCIRRXFL2 (0x10) /* IRDA Receive Filter Length 2 */
#define UCIRRXFL1 (0x08) /* IRDA Receive Filter Length 1 */
#define UCIRRXFL0 (0x04) /* IRDA Receive Filter Length 0 */
#define UCIRRXPL (0x02) /* IRDA Receive Input Polarity */
#define UCIRRXFE (0x01) /* IRDA Receive Filter enable */

//#define res (0x80) /* reserved */
//#define res (0x40) /* reserved */
#define UCDELIM1 (0x20) /* Break Sync Delimiter 1 */
#define UCDELIM0 (0x10) /* Break Sync Delimiter 0 */
#define UCSTOE (0x08) /* Sync-Field Timeout error */
#define UCBTOE (0x04) /* Break Timeout error */
//#define res (0x02) /* reserved */
#define UCABDEN (0x01) /* Auto Baud Rate detect enable */

#define UCGCEN (0x8000) /* I2C General Call enable */
#define UCOA9 (0x0200) /* I2C Own Address 9 */
#define UCOA8 (0x0100) /* I2C Own Address 8 */
#define UCOA7 (0x0080) /* I2C Own Address 7 */
#define UCOA6 (0x0040) /* I2C Own Address 6 */
#define UCOA5 (0x0020) /* I2C Own Address 5 */
#define UCOA4 (0x0010) /* I2C Own Address 4 */
#define UCOA3 (0x0008) /* I2C Own Address 3 */
#define UCOA2 (0x0004) /* I2C Own Address 2 */
#define UCOA1 (0x0002) /* I2C Own Address 1 */
#define UCOA0 (0x0001) /* I2C Own Address 0 */

#define UCSA9 (0x0200) /* I2C Slave Address 9 */
#define UCSA8 (0x0100) /* I2C Slave Address 8 */
#define UCSA7 (0x0080) /* I2C Slave Address 7 */
#define UCSA6 (0x0040) /* I2C Slave Address 6 */
#define UCSA5 (0x0020) /* I2C Slave Address 5 */
#define UCSA4 (0x0010) /* I2C Slave Address 4 */
#define UCSA3 (0x0008) /* I2C Slave Address 3 */
#define UCSA2 (0x0004) /* I2C Slave Address 2 */
#define UCSA1 (0x0002) /* I2C Slave Address 1 */
#define UCSA0 (0x0001) /* I2C Slave Address 0 */

/* Aliases by mspgcc */
#define UCSSEL_UCLKI UCSSEL_0
#define UCSSEL_ACLK UCSSEL_1
#define UCSSEL_SMCLK UCSSEL_2

#if defined(__MSP430_HAS_USCI0__)

/* -------- USCI0 */

#define UCA0CTL0_ 0x0060 /* USCI A0 Control Register 0 */
sfrb(UCA0CTL0, UCA0CTL0_);
#define UCA0CTL1_ 0x0061 /* USCI A0 Control Register 1 */
sfrb(UCA0CTL1, UCA0CTL1_);
#define UCA0BR0_ 0x0062 /* USCI A0 Baud Rate 0 */
sfrb(UCA0BR0, UCA0BR0_);
#define UCA0BR1_ 0x0063 /* USCI A0 Baud Rate 1 */
sfrb(UCA0BR1, UCA0BR1_);
#define UCA0MCTL_ 0x0064 /* USCI A0 Modulation Control */
sfrb(UCA0MCTL, UCA0MCTL_);
#define UCA0STAT_ 0x0065 /* USCI A0 Status Register */
sfrb(UCA0STAT, UCA0STAT_);
#define UCA0RXBUF_ 0x0066 /* USCI A0 Receive Buffer */
/*READ_ONLY*/ sfrb(UCA0RXBUF, UCA0RXBUF_);
#define UCA0TXBUF_ 0x0067 /* USCI A0 Transmit Buffer */
sfrb(UCA0TXBUF, UCA0TXBUF_);
#define UCA0ABCTL_ 0x005D /* USCI A0 Auto baud/LIN Control */
sfrb(UCA0ABCTL, UCA0ABCTL_);
#define UCA0IRTCTL_ 0x005E /* USCI A0 IrDA Transmit Control */
sfrb(UCA0IRTCTL, UCA0IRTCTL_);
#define UCA0IRRCTL_ 0x005F /* USCI A0 IrDA Receive Control */
sfrb(UCA0IRRCTL, UCA0IRRCTL_);

#define UCB0CTL0_ 0x0068 /* USCI B0 Control Register 0 */
sfrb(UCB0CTL0, UCB0CTL0_);
#define UCB0CTL1_ 0x0069 /* USCI B0 Control Register 1 */
sfrb(UCB0CTL1, UCB0CTL1_);
#define UCB0BR0_ 0x006A /* USCI B0 Baud Rate 0 */
sfrb(UCB0BR0, UCB0BR0_);
#define UCB0BR1_ 0x006B /* USCI B0 Baud Rate 1 */
sfrb(UCB0BR1, UCB0BR1_);
#define UCB0I2CIE_ 0x006C /* USCI B0 I2C Interrupt Enable Register */
sfrb(UCB0I2CIE, UCB0I2CIE_);
#define UCB0STAT_ 0x006D /* USCI B0 Status Register */
sfrb(UCB0STAT, UCB0STAT_);
#define UCB0RXBUF_ 0x006E /* USCI B0 Receive Buffer */
/*READ_ONLY*/ sfrb(UCB0RXBUF, UCB0RXBUF_);
#define UCB0TXBUF_ 0x006F /* USCI B0 Transmit Buffer */
sfrb(UCB0TXBUF, UCB0TXBUF_);
#define UCB0I2COA_ 0x0118 /* USCI B0 I2C Own Address */
sfrw(UCB0I2COA, UCB0I2COA_);
#define UCB0I2CSA_ 0x011A /* USCI B0 I2C Slave Address */
sfrw(UCB0I2CSA, UCB0I2CSA_);
#endif /* __MSP430_HAS_USCI0__ */

#if defined(__MSP430_HAS_USCI1__)

/* -------- USCI1 */

#define UCA1CTL0_ 0x00D0 /* USCI A1 Control Register 0 */
sfrb(UCA1CTL0, UCA1CTL0_);
#define UCA1CTL1_ 0x00D1 /* USCI A1 Control Register 1 */
sfrb(UCA1CTL1, UCA1CTL1_);
#define UCA1BR0_ 0x00D2 /* USCI A1 Baud Rate 0 */
sfrb(UCA1BR0, UCA1BR0_);
#define UCA1BR1_ 0x00D3 /* USCI A1 Baud Rate 1 */
sfrb(UCA1BR1, UCA1BR1_);
#define UCA1MCTL_ 0x00D4 /* USCI A1 Modulation Control */
sfrb(UCA1MCTL, UCA1MCTL_);
#define UCA1STAT_ 0x00D5 /* USCI A1 Status Register */
sfrb(UCA1STAT, UCA1STAT_);
#define UCA1RXBUF_ 0x00D6 /* USCI A1 Receive Buffer */
/*READ_ONLY*/ sfrb(UCA1RXBUF, UCA1RXBUF_);
#define UCA1TXBUF_ 0x00D7 /* USCI A1 Transmit Buffer */
sfrb(UCA1TXBUF, UCA1TXBUF_);
#define UCA1ABCTL_ 0x00CD /* USCI A1 Auto baud/LIN Control */
sfrb(UCA1ABCTL, UCA1ABCTL_);
#define UCA1IRTCTL_ 0x00CE /* USCI A1 IrDA Transmit Control */
sfrb(UCA1IRTCTL, UCA1IRTCTL_);
#define UCA1IRRCTL_ 0x00CF /* USCI A1 IrDA Receive Control */
sfrb(UCA1IRRCTL, UCA1IRRCTL_);

#define UCB1CTL0_ 0x00D8 /* USCI B1 Control Register 0 */
sfrb(UCB1CTL0, UCB1CTL0_);
#define UCB1CTL1_ 0x00D9 /* USCI B1 Control Register 1 */
sfrb(UCB1CTL1, UCB1CTL1_);
#define UCB1BR0_ 0x00DA /* USCI B1 Baud Rate 0 */
sfrb(UCB1BR0, UCB1BR0_);
#define UCB1BR1_ 0x00DB /* USCI B1 Baud Rate 1 */
sfrb(UCB1BR1, UCB1BR1_);
#define UCB1I2CIE_ 0x00DC /* USCI B1 I2C Interrupt Enable Register */
sfrb(UCB1I2CIE, UCB1I2CIE_);
#define UCB1STAT_ 0x00DD /* USCI B1 Status Register */
sfrb(UCB1STAT, UCB1STAT_);
#define UCB1RXBUF_ 0x00DE /* USCI B1 Receive Buffer */
/*READ_ONLY*/ sfrb(UCB1RXBUF, UCB1RXBUF_);
#define UCB1TXBUF_ 0x00DF /* USCI B1 Transmit Buffer */
sfrb(UCB1TXBUF, UCB1TXBUF_);
#define UCB1I2COA_ 0x017C /* USCI B1 I2C Own Address */
sfrw(UCB1I2COA, UCB1I2COA_);
#define UCB1I2CSA_ 0x017E /* USCI B1 I2C Slave Address */
sfrw(UCB1I2CSA, UCB1I2CSA_);

#define UC1IE_ 0x0006 /* USCI A1/B1 Interrupt enable register */
sfrb(UC1IE, UC1IE_);
#define UC1IFG_ 0x0007 /* USCI A1/B1 Interrupt flag register */
sfrb(UC1IFG, UC1IFG_);

#define UCA1RXIE (1<<0)
#define UCA1TXIE (1<<1)
#define UCB1RXIE (1<<2)
#define UCB1TXIE (1<<3)

#define UCA1RXIFG (1<<0)
#define UCA1TXIFG (1<<1)
#define UCB1RXIFG (1<<2)
#define UCB1TXIFG (1<<3)
#endif /* __MSP430_HAS_USCI1__ */

#if defined(__MSP430_HAS_USCI0_5__)

/* -------- USCI0_5 */

#define UCA0CTL0_ 0x05C1
sfrb(UCA0CTL0, UCA0CTL0_);
#define UCA0CTL1_ 0x05C0
sfrb(UCA0CTL1, UCA0CTL1_);
#define UCA0BR0_ 0x05C6
sfrb(UCA0BR0, UCA0BR0_);
#define UCA0BR1_ 0x05C7
sfrb(UCA0BR1, UCA0BR1_);
#define UCA0MCTL_ 0x05C8
sfrb(UCA0MCTL, UCA0MCTL_);
#define UCA0STAT_ 0x05CA
sfrb(UCA0STAT, UCA0STAT_);
#define UCA0RXBUF_ 0x05CC
sfrb(UCA0RXBUF, UCA0RXBUF_);
#define UCA0TXBUF_ 0x05CE
sfrb(UCA0TXBUF, UCA0TXBUF_);
#define UCA0ABCTL_ 0x05D0
sfrb(UCA0ABCTL, UCA0ABCTL_);
#define UCA0IRTCTL_ 0x05D2
sfrb(UCA0IRTCTL, UCA0IRTCTL_);
#define UCA0IRRCTL_ 0x05D3
sfrb(UCA0IRRCTL, UCA0IRRCTL_);
#define UCA0IE_ 0x05DC
sfrb(UCA0IE, UCA0IE_);
#define UCA0IFG_ 0x05DD
sfrb(UCA0IFG, UCA0IFG_);
#define UCA0IV_ 0x05DE
sfrw(UCA0IV, UCA0IV_);
#define UCA0IV_L_ 0x05DE
sfrb(UCA0IV_L, UCA0IV_L_);
#define UCA0IV_H_ 0x05DF
sfrb(UCA0IV_H, UCA0IV_H_);

#define UCB0CTL0_ 0x05E1
sfrb(UCB0CTL0, UCB0CTL0_);
#define UCB0CTL1_ 0x05E0
sfrb(UCB0CTL1, UCB0CTL1_);
#define UCB0BR0_ 0x05E6
sfrb(UCB0BR0, UCB0BR0_);
#define UCB0BR1_ 0x05E7
sfrb(UCB0BR1, UCB0BR1_);
#define UCB0MCTL_ 0x05E8
sfrb(UCB0MCTL, UCB0MCTL_);
#define UCB0STAT_ 0x05EA
sfrb(UCB0STAT, UCB0STAT_);
#define UCB0RXBUF_ 0x05EC
sfrb(UCB0RXBUF, UCB0RXBUF_);
#define UCB0TXBUF_ 0x05EE
sfrb(UCB0TXBUF, UCB0TXBUF_);
#define UCB0I2COA_ 0x05F0
sfrb(UCB0I2COA, UCB0I2COA_);
#define UCB0I2CSA_ 0x05F2
sfrb(UCB0I2CSA, UCB0I2CSA_);
#define UCB0IE_ 0x05FC
sfrb(UCB0IE, UCB0IE_);
#define UCB0IFG_ 0x05FD
sfrb(UCB0IFG, UCB0IFG_);
#define UCB0IV_ 0x05FE
sfrw(UCB0IV, UCB0IV_);
#define UCB0IV_L_ 0x05FE
sfrb(UCB0IV_L, UCB0IV_L_);
#define UCB0IV_H_ 0x05FF
sfrb(UCB0IV_H, UCB0IV_H_);

#endif /* __MSP430_HAS_USCI0_5__ */

#if defined(__MSP430_HAS_USCI1_5__)

/* -------- USCI1_5 */

// tbd
/*#define UCA1CTL0_ 0x0601
#define UCA1CTL0_L 0x0601
#define UCA1CTL0_H 0x0602
#define UCA1CTL1_ 0x0600
#define UCA1CTL1_L 0x0600
#define UCA1CTL1_H 0x0601
#define UCA1BR0_ 0x0606
#define UCA1BR0_L 0x0606
#define UCA1BR0_H 0x0607
#define UCA1BR1_ 0x0607
#define UCA1BR1_L 0x0607
#define UCA1BR1_H 0x0608
#define UCA1MCTL_ 0x0608
#define UCA1MCTL_L 0x0608
#define UCA1MCTL_H 0x0609
#define UCA1STAT_ 0x060A
#define UCA1STAT_L 0x060A
#define UCA1STAT_H 0x060B
#define UCA1RXBUF 0x060C
#define UCA1RXBUF_L 0x060C
#define UCA1RXBUF_H 0x060D
#define UCA1TXBUF 0x060E
#define UCA1TXBUF_L 0x060E
#define UCA1TXBUF_H 0x060F
#define UCA1ABCTL 0x0610
#define UCA1ABCTL_L 0x0610
#define UCA1ABCTL_H 0x0611
#define UCA1IRTCTL 0x0612
#define UCA1IRTCTL_L 0x0612
#define UCA1IRTCTL_H 0x0613
#define UCA1IRRCTL 0x0613
#define UCA1IRRCTL_L 0x0613
#define UCA1IRRCTL_H 0x0614
#define UCA1IE_ 0x061C
#define UCA1IE_L_ 0x061C
#define UCA1IE_H_ 0x061D
#define UCA1IFG_ 0x061D
#define UCA1IFG_L 0x061D
#define UCA1IFG_H 0x061E
#define UCA1IV_ 0x061E
#define UCA1IV_L_ 0x061E
#define UCA1IV_H_ 0x061F
#define UCB1CTL0_ 0x0621
#define UCB1CTL0_L 0x0621
#define UCB1CTL0_H 0x0622
#define UCB1CTL1_ 0x0620
#define UCB1CTL1_L 0x0620
#define UCB1CTL1_H 0x0621
#define UCB1BR0_ 0x0626
#define UCB1BR0_L 0x0626
#define UCB1BR0_H 0x0627
#define UCB1BR1_ 0x0627
#define UCB1BR1_L 0x0627
#define UCB1BR1_H 0x0628
#define UCB1STAT_ 0x062A
#define UCB1STAT_L 0x062A
#define UCB1STAT_H 0x062B
#define UCB1RXBUF 0x062C
#define UCB1RXBUF_L 0x062C
#define UCB1RXBUF_H 0x062D
#define UCB1TXBUF 0x062E
#define UCB1TXBUF_L 0x062E
#define UCB1TXBUF_H 0x062F
#define UCB1I2COA 0x0630
#define UCB1I2COA_L 0x0630
#define UCB1I2COA_H 0x0631
#define UCB1I2CSA 0x0632
#define UCB1I2CSA_L 0x0632
#define UCB1I2CSA_H 0x0633
#define UCB1IE_ 0x063C
#define UCB1IE_L_ 0x063C
#define UCB1IE_H_ 0x063D
#define UCB1IFG_ 0x063D
#define UCB1IFG_L 0x063D
#define UCB1IFG_H 0x063E
#define UCB1IV_ 0x063E
#define UCB1IV_L_ 0x063E
#define UCB1IV_H_ 0x063F
*/
#endif /* __MSP430_HAS_USCI1_5__ */

#if defined(__MSP430_HAS_USCI2_5__)

/* -------- USCI2_5 */

// tbd
/*#define UCA2CTL0_ 0x0641
#define UCA2CTL0_L 0x0641
#define UCA2CTL0_H 0x0642
#define UCA2CTL1_ 0x0640
#define UCA2CTL1_L 0x0640
#define UCA2CTL1_H 0x0641
#define UCA2BR0_ 0x0646
#define UCA2BR0_L 0x0646
#define UCA2BR0_H 0x0647
#define UCA2BR1_ 0x0647
#define UCA2BR1_L 0x0647
#define UCA2BR1_H 0x0648
#define UCA2MCTL_ 0x0648
#define UCA2MCTL_L 0x0648
#define UCA2MCTL_H 0x0649
#define UCA2STAT_ 0x064A
#define UCA2STAT_L 0x064A
#define UCA2STAT_H 0x064B
#define UCA2RXBUF 0x064C
#define UCA2RXBUF_L 0x064C
#define UCA2RXBUF_H 0x064D
#define UCA2TXBUF 0x064E
#define UCA2TXBUF_L 0x064E
#define UCA2TXBUF_H 0x064F
#define UCA2ABCTL 0x0650
#define UCA2ABCTL_L 0x0650
#define UCA2ABCTL_H 0x0651
#define UCA2IRTCTL 0x0652
#define UCA2IRTCTL_L 0x0652
#define UCA2IRTCTL_H 0x0653
#define UCA2IRRCTL 0x0653
#define UCA2IRRCTL_L 0x0653
#define UCA2IRRCTL_H 0x0654
#define UCA2IE_ 0x065C
#define UCA2IE_L_ 0x065C
#define UCA2IE_H_ 0x065D
#define UCA2IFG_ 0x065D
#define UCA2IFG_L 0x065D
#define UCA2IFG_H 0x065E
#define UCA2IV_ 0x065E
#define UCA2IV_L_ 0x065E
#define UCA2IV_H_ 0x065F
#define UCB2CTL0_ 0x0661
#define UCB2CTL0_L 0x0661
#define UCB2CTL0_H 0x0662
#define UCB2CTL1_ 0x0660
#define UCB2CTL1_L 0x0660
#define UCB2CTL1_H 0x0661
#define UCB2BR0_ 0x0666
#define UCB2BR0_L 0x0666
#define UCB2BR0_H 0x0667
#define UCB2BR1_ 0x0667
#define UCB2BR1_L 0x0667
#define UCB2BR1_H 0x0668
#define UCB2STAT_ 0x066A
#define UCB2STAT_L 0x066A
#define UCB2STAT_H 0x066B
#define UCB2RXBUF 0x066C
#define UCB2RXBUF_L 0x066C
#define UCB2RXBUF_H 0x066D
#define UCB2TXBUF 0x066E
#define UCB2TXBUF_L 0x066E
#define UCB2TXBUF_H 0x066F
#define UCB2I2COA 0x0670
#define UCB2I2COA_L 0x0670
#define UCB2I2COA_H 0x0671
#define UCB2I2CSA 0x0672
#define UCB2I2CSA_L 0x0672
#define UCB2I2CSA_H 0x0673
#define UCB2IE_ 0x067C
#define UCB2IE_L_ 0x067C
#define UCB2IE_H_ 0x067D
#define UCB2IFG_ 0x067D
#define UCB2IFG_L 0x067D
#define UCB2IFG_H 0x067E
#define UCB2IV_ 0x067E
#define UCB2IV_L_ 0x067E
#define UCB2IV_H_ 0x067F
*/
#endif /* __MSP430_HAS_USCI2_5__ */

#if defined(__MSP430_HAS_USCI3_5__)

/* -------- USCI3_5 */
// tbd
/*#define UCA3CTL0_ 0x0681
#define UCA3CTL0_L 0x0681
#define UCA3CTL0_H 0x0682
#define UCA3CTL1_ 0x0680
#define UCA3CTL1_L 0x0680
#define UCA3CTL1_H 0x0681
#define UCA3BR0_ 0x0686
#define UCA3BR0_L 0x0686
#define UCA3BR0_H 0x0687
#define UCA3BR1_ 0x0687
#define UCA3BR1_L 0x0687
#define UCA3BR1_H 0x0688
#define UCA3MCTL_ 0x0688
#define UCA3MCTL_L 0x0688
#define UCA3MCTL_H 0x0689
#define UCA3STAT_ 0x068A
#define UCA3STAT_L 0x068A
#define UCA3STAT_H 0x068B
#define UCA3RXBUF 0x068C
#define UCA3RXBUF_L 0x068C
#define UCA3RXBUF_H 0x068D
#define UCA3TXBUF 0x068E
#define UCA3TXBUF_L 0x068E
#define UCA3TXBUF_H 0x068F
#define UCA3ABCTL 0x0690
#define UCA3ABCTL_L 0x0690
#define UCA3ABCTL_H 0x0691
#define UCA3IRTCTL 0x0692
#define UCA3IRTCTL_L 0x0692
#define UCA3IRTCTL_H 0x0693
#define UCA3IRRCTL 0x0693
#define UCA3IRRCTL_L 0x0693
#define UCA3IRRCTL_H 0x0694
#define UCA3IE_ 0x069C
#define UCA3IE_L_ 0x069C
#define UCA3IE_H_ 0x069D
#define UCA3IFG_ 0x069D
#define UCA3IFG_L 0x069D
#define UCA3IFG_H 0x069E
#define UCA3IV_ 0x069E
#define UCA3IV_L_ 0x069E
#define UCA3IV_H_ 0x069F
#define UCB3CTL0_ 0x06A1
#define UCB3CTL0_L 0x06A1
#define UCB3CTL0_H 0x06A2
#define UCB3CTL1_ 0x06A0
#define UCB3CTL1_L 0x06A0
#define UCB3CTL1_H 0x06A1
#define UCB3BR0_ 0x06A6
#define UCB3BR0_L 0x06A6
#define UCB3BR0_H 0x06A7
#define UCB3BR1_ 0x06A7
#define UCB3BR1_L 0x06A7
#define UCB3BR1_H 0x06A8
#define UCB3STAT_ 0x06AA
#define UCB3STAT_L 0x06AA
#define UCB3STAT_H 0x06AB
#define UCB3RXBUF 0x06AC
#define UCB3RXBUF_L 0x06AC
#define UCB3RXBUF_H 0x06AD
#define UCB3TXBUF 0x06AE
#define UCB3TXBUF_L 0x06AE
#define UCB3TXBUF_H 0x06AF
#define UCB3I2COA 0x06B0
#define UCB3I2COA_L 0x06B0
#define UCB3I2COA_H 0x06B1
#define UCB3I2CSA 0x06B2
#define UCB3I2CSA_L 0x06B2
#define UCB3I2CSA_H 0x06B3
#define UCB3IE_ 0x06BC
#define UCB3IE_L_ 0x06BC
#define UCB3IE_H_ 0x06BD
#define UCB3IFG_ 0x06BD
#define UCB3IFG_L 0x06BD
#define UCB3IFG_H 0x06BE
#define UCB3IV_ 0x06BE
#define UCB3IV_L_ 0x06BE
#define UCB3IV_H_ 0x06BF
*/
#endif /* __MSP430_HAS_USCI3_5__ */

#endif

Прогресс прогрессирует?


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 6 2009, 13:09
Сообщение #13


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(MrYuran @ Nov 6 2009, 12:14) *
Кстати, для 54хх хедеры лежат без комментиариев, может уже и работают...
если вы зайдете в репозиторий mspgcc4, то увидите, что файлы msp430-libc там отсутствуют. Они цельнотянуты из mspgcc. А заглянув в репозиторий mspgcc можно легко проследить состояние каждого файла. Там видно, что последняя правка была в июне - добавили таймер A, тактирование и usart.

P.S. Вы так настойчиво ждете каких-то дополнений в этом файле, что можно было уже 10 раз написать их самостоятельно, оттестировать и послать патч Крису.
P.P.S. В списке рассылки проскакивала информация, что репозиторий будут перетаскивать под bazaar. Чем закончилось - не знаю.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Nov 6 2009, 13:56
Сообщение #14


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(MrYuran @ Nov 6 2009, 15:49) *
CODE
#if !defined(__msp430_headers_usci_h__)
#if defined(__MSP430_HAS_USCI3_5__)

/* -------- USCI3_5 */
// tbd
/*#define UCA3CTL0_ 0x0681 <!!!!!!!!!!!!!!!! comment begin
#define UCA3CTL0_L 0x0681
#define UCA3CTL0_H 0x0682
#define UCA3CTL1_ 0x0680
#define UCA3CTL1_L 0x0680
#define UCA3CTL1_H 0x0681
#define UCA3BR0_ 0x0686
#define UCA3BR0_L 0x0686
#define UCA3BR0_H 0x0687
#define UCA3BR1_ 0x0687
#define UCA3BR1_L 0x0687
#define UCA3BR1_H 0x0688
#define UCA3MCTL_ 0x0688
#define UCA3MCTL_L 0x0688
#define UCA3MCTL_H 0x0689
#define UCA3STAT_ 0x068A
#define UCA3STAT_L 0x068A
#define UCA3STAT_H 0x068B
#define UCA3RXBUF 0x068C
#define UCA3RXBUF_L 0x068C
#define UCA3RXBUF_H 0x068D
#define UCA3TXBUF 0x068E
#define UCA3TXBUF_L 0x068E
#define UCA3TXBUF_H 0x068F
#define UCA3ABCTL 0x0690
#define UCA3ABCTL_L 0x0690
#define UCA3ABCTL_H 0x0691
#define UCA3IRTCTL 0x0692
#define UCA3IRTCTL_L 0x0692
#define UCA3IRTCTL_H 0x0693
#define UCA3IRRCTL 0x0693
#define UCA3IRRCTL_L 0x0693
#define UCA3IRRCTL_H 0x0694
#define UCA3IE_ 0x069C
#define UCA3IE_L_ 0x069C
#define UCA3IE_H_ 0x069D
#define UCA3IFG_ 0x069D
#define UCA3IFG_L 0x069D
#define UCA3IFG_H 0x069E
#define UCA3IV_ 0x069E
#define UCA3IV_L_ 0x069E
#define UCA3IV_H_ 0x069F
#define UCB3CTL0_ 0x06A1
#define UCB3CTL0_L 0x06A1
#define UCB3CTL0_H 0x06A2
#define UCB3CTL1_ 0x06A0
#define UCB3CTL1_L 0x06A0
#define UCB3CTL1_H 0x06A1
#define UCB3BR0_ 0x06A6
#define UCB3BR0_L 0x06A6
#define UCB3BR0_H 0x06A7
#define UCB3BR1_ 0x06A7
#define UCB3BR1_L 0x06A7
#define UCB3BR1_H 0x06A8
#define UCB3STAT_ 0x06AA
#define UCB3STAT_L 0x06AA
#define UCB3STAT_H 0x06AB
#define UCB3RXBUF 0x06AC
#define UCB3RXBUF_L 0x06AC
#define UCB3RXBUF_H 0x06AD
#define UCB3TXBUF 0x06AE
#define UCB3TXBUF_L 0x06AE
#define UCB3TXBUF_H 0x06AF
#define UCB3I2COA 0x06B0
#define UCB3I2COA_L 0x06B0
#define UCB3I2COA_H 0x06B1
#define UCB3I2CSA 0x06B2
#define UCB3I2CSA_L 0x06B2
#define UCB3I2CSA_H 0x06B3
#define UCB3IE_ 0x06BC
#define UCB3IE_L_ 0x06BC
#define UCB3IE_H_ 0x06BD
#define UCB3IFG_ 0x06BD
#define UCB3IFG_L 0x06BD
#define UCB3IFG_H 0x06BE
#define UCB3IV_ 0x06BE
#define UCB3IV_L_ 0x06BE
#define UCB3IV_H_ 0x06BF
*/ <!!!!!!!!!!!!!!!! comment end
#endif /* __MSP430_HAS_USCI3_5__ */

#endif

Прогресс прогрессирует?

Указал на пример комментариев в файле.

Цитата(Сергей Борщ @ Nov 6 2009, 16:09) *
P.S. Вы так настойчиво ждете каких-то дополнений в этом файле, что можно было уже 10 раз написать их самостоятельно, оттестировать и послать патч Крису.
P.P.S. В списке рассылки проскакивала информация, что репозиторий будут перетаскивать под bazaar. Чем закончилось - не знаю.

Когда (?) будет время, то хочу попробовать собрать для MSP-EXP430F5438 демонстрационный пример, скорректировав исходный код IAR (CCE). Для этого надо иметь _полный_ комплект описаний регистров в заголовочных файлах.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 6 2009, 15:10
Сообщение #15


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(mdmitry @ Nov 6 2009, 15:56) *
Для этого надо иметь _полный_ комплект описаний регистров в заголовочных файлах.
Так возьмите и допишите. Это не архисложная задача - читать даташит и вписывать из него #define, она не требует знания потрохов компилятора. А чтобы другие не изобретали велосипед - поделитесь результатом своих трудов.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post

5 страниц V   1 2 3 > » 
Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th July 2025 - 13:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01587 секунд с 7
ELECTRONIX ©2004-2016