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

 
 
> Slaa290 RTC Calendar
tsbp
сообщение Nov 4 2010, 18:06
Сообщение #1





Группа: Новичок
Сообщений: 6
Регистрация: 4-11-10
Пользователь №: 60 649



Привет всем!
Может кто-то использовал библиотеку от ТИ RTC_Calendar.h (slaa290). Неправильно устанавливается дата setDate( int year, char month, char day);
Непойму в чем грабли.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
rezident
сообщение Nov 4 2010, 21:07
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Как я и предполагал проблема возникает при передаче параметров из СИ-шного модуля в ASM-функцию. У меня IAR EW430 5.10.6. В нем передача параметров в функцию setDate происходит через регистры R14, R13, R12.
Код
//   31   setDate(2010, 1, 1); //!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
        MOV.B   #0x1, R14
        MOV.B   #0x1, R13
        MOV.W   #0x7da, R12
        CALL    #setDate

А в самой функции извлечение аргументов идет из R15, R14, R12
Код
            mov.b   r15,     r6    ; day into r6
            mov.b   r14,     r7    ; month into r7
            mov.w   r12,     r8    ; year into r8

Отсюда и вылезают неправильные вычисления. После верного указания регистров в функции, инициализация заработала корректно
Код
            mov.b   r14,     r6    ; day into r6
            mov.b   r13,     r7    ; month into r7
            mov.w   r12,     r8    ; year into r8

Правда в окне просмотра значений переменных C-CPY наблюдается некоторая неувязочка. Большинство переменных календаря отображаются как int, хотя описание всех их (кроме TI_year) идет как char. Опять какой-то глюк. Видимо от того, что переменные определены только в ASM. cranky.gif
Go to the top of the page
 
+Quote Post
tsbp
сообщение Nov 5 2010, 06:54
Сообщение #3





Группа: Новичок
Сообщений: 6
Регистрация: 4-11-10
Пользователь №: 60 649



Цитата(rezident @ Nov 5 2010, 00:07) *
Правда в окне просмотра значений переменных C-CPY наблюдается некоторая неувязочка. Большинство переменных календаря отображаются как int, хотя описание всех их (кроме TI_year) идет как char. Опять какой-то глюк

та же фигня.

Но все получилось. Задача была решаема. Но я бы потратил намного больше времени на ее решение. Спасибо за быстрое решение и за совет по передаче параметров в asm функции.

Еще прикол неправильно устанавливается день недели
земенил
Код
mov.b   r10,     TI_mNumbers(r7)

на
Код
mov.b   TI_mNumbers(r7),   r10

вроде стало нормально
Go to the top of the page
 
+Quote Post



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

 


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


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