Цитата(rezident @ Sep 26 2012, 21:21)

Видимо потому, что запись должна быть вида
Код
mov &TA0R,R8
вот тут прикол в том что запись mov &TA0R,R8 работает а на mov &TA
1R,R8 компилятор ругается

Цитата(rezident @ Sep 26 2012, 21:21)

В данном кристалле - да, таймеры идентичны. Возможной причиной может быть отсутствие полного понимания функционирования аппаратуры таймеров. Судя по листингу, у вас подсчет импульсов ведется непосредственно - импульсы подаются на тактовый (счетный) вход TA0 INCLK, так?
Временные ворота вы формируете программно, используя WDT и режим захвата CCI2.
Да, в данном варианте кода так.
Дело в том, что я делаю сенсорную кнопку. сенсор подключен к порту 2.5 частота с него подается на вход TA0 INCLK.
В начале работы у меня был только контроллер 430g2252. в него я прошил пример от TI. Результат меня устроил.
Я переписал код на асм, используя ТА0 для счета и WDT для формирования временного окна измерения, и опять-же на 430g2252 все работало.
Для проекта, в котором должна использоваться эта кнопка, нужен UART и WDT. Поэтому выбрали 430g2353. соответственно для формирования интервала измерения я решил использовать ТА1. Вот тут и начались чудеса....
Код
mov #0x5a1e,&WDTCTL;wdthold=0,wdtnmies=0,wdtnmi=0,wdttmsel=1(interval mode),wdtcntcl=1(wdtcnt=0000h),wdtssel=1=aclk, wdtisxx=01=/8192 bis #TACLR,&TA0CTL
[code]
bis #TACLR,&TA1CTL
mov.w #0x0110,&TA1CTL ;15-10=0(free);9,8=01(aclk);7,6=00(/1);5,4=01(up to taccr0);3=0(free);2=0(TACLR);1=0(прерывание запрещено);0=0
mov #0x1fff,&TA1CCR0; interval interrupt
bis #CCIE,&TA1CCTL0 ; CCR interrupt for TA1 enable
сначала я проверил, как работает сенсорная кнопка бовал реализовать
Вообще
Собственно идея была в том, что ТА0 должен был считать входные импульсы, а ворота я хотел формировать таймером ТА1.
Если все так, то простое переименование регистров в программе ничего вам не даст. Кроме смены номера таймера нужно еще
физически перекоммутировать входные импульсы с пина TA0 INCLK на пин TA1 INCLK. Соответственно нужно настроить функцию соответствующего пина. Нюанс состоит еще и в том, что для TA0 вход INCLK
внутренне коммутируется на PinOsc, а для TA1 вход INCLK действительно подключается к внешнему пину P3.7. В общем советую внимательно просмотреть и сравнить функции пинов, подключаемых к таймеру. См. следует
datasheet MSP430G2353, а в нем Table 12. Timer0_A3 Signal Connections, Table 13. Timer1_A3 Signal Connections и Table 16. Port P1 (P1.0 to P1.2) Pin Functions, Table 23. Port P3 (P3.0 to P3.7) Pin Functions (28-Pin PW and 32-Pin RHB Packages Only).
Кстати, читать значение непосредственно из регистра TAxR при асинхронном тактировании таймера
не рекомендуется. Рекомендуется сформировать программно захват значения TAxR и считать полученное значение уже из регистра TAxCCRx. То бишь строка с ошибкой у вас по сути лишняя. Строкой ниже из TA0CCR2 вы и так читаете искомое значение TA0R.
И еще одно замечание. Отучайтесь использовать "магические числа". Везде по тексту используйте стандартные (TI) символьные обозначения регистров и бит. Тогда программа на АСМе будет читаться также легко как на ЯВУ типа Си.
Код
mov #TASSEL_3+MC2,&TA0CTL;TASSEL_3+MC_2;// TACLK, cont mode;for TACLK + cont.mode need 0x0026;0x0320
mov #CM_3+CCIS_2+CAP,&TA0CCTL2; 0e100
Вот в таком виде текст программы был бы более понятным, не так ли?