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

 
 
> Подскажите где в WinAVR задаётся размер стека ?, Перевожу программу с WinAVR на IAR AVR
west329_
сообщение Dec 19 2008, 08:41
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423



Перевожу программу с WinAVR на IAR AVR.

Проект нормально собирается в WinAVR-2007122 в Programmers Notepad.

Первой что непонятно, в иаре чётко надо указывать стек для контроллера, перерыл все исходники WinAVR и make файл, ничего чтоб указывало на стек ненашол ? подскажите как быть ?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
west329_
сообщение Dec 19 2008, 11:06
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423



Работо по переделки prog_char немного приостановил, за ненадобность в данный момент этих процедур.

Появился вопрос по функциям _delay_ms() _delay_us;

Подскажите простенький дефайн на С, который бы молотил пустые цыклы NOP() исходя из заданных параметров F_CPU ?

Пару раз встречал , но както недогодался сохранить.
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Dec 19 2008, 12:05
Сообщение #3


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

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



Цитата(west329_ @ Dec 19 2008, 14:06) *
Подскажите простенький дефайн на С, который бы молотил пустые цыклы NOP() исходя из заданных параметров F_CPU ?

Пару раз встречал , но както недогодался сохранить.

Посмотрите файлы delay_basic.h и delay.h. Должно помочь. Изучение заголовочных файлов и описания avr-libc мне сильно помогло.


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
west329_
сообщение Dec 19 2008, 12:12
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423



Цитата(mdmitry @ Dec 19 2008, 16:05) *
Посмотрите файлы delay_basic.h и delay.h. Должно помочь. Изучение заголовочных файлов и описания avr-libc мне сильно помогло.


это перенесётся на IAR согласен
Код
void
_delay_ms(double __ms)
{                            
    uint16_t __ticks;
    double __tmp = ((F_CPU) / 4e3) * __ms;
    if (__tmp < 1.0)
        __ticks = 1;
    else if (__tmp > 65535)
    {
        //    __ticks = requested delay in 1/10 ms
        __ticks = (uint16_t) (__ms * 10.0);
        while(__ticks)
        {
            // wait 1/10 ms
            _delay_loop_2(((F_CPU) / 4e3) / 10);
            __ticks --;
        }
        return;
    }
    else
        __ticks = (uint16_t)__tmp;
    _delay_loop_2(__ticks);                
}


а как быть с этим

Код
void
_delay_loop_2(uint16_t __count)
{
    __asm__ volatile (
        "1: sbiw %0,1" "\n\t"
        "brne 1b"
        : "=w" (__count)
        : "0" (__count)
    );
}


я, в асме из под IAR несилён, подскажите как это можно под IAR переписать ?

Сообщение отредактировал west329_ - Dec 19 2008, 12:14
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Dec 19 2008, 14:06
Сообщение #5


Гуру
******

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



Цитата(west329_ @ Dec 19 2008, 14:12) *
я, в асме из под IAR несилён, подскажите как это можно под IAR переписать ?
Код
_delay_ms(double __ms) = __delay_cycles(__ms * F_CPU / 1000)


--------------------
На любой вопрос даю любой ответ
"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
west329_
сообщение Dec 19 2008, 16:28
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423



Цитата(Сергей Борщ @ Dec 19 2008, 18:06) *
Код
_delay_ms(double __ms) = __delay_cycles(__ms * F_CPU / 1000)


у меня ИАР отказывается собирать
Код
Fatal Error[Ta030]: Argument to __delay_cycles must be a constant expression.


посмотрел в описании __delay_cycles
Код
__intrinsic void __delay_cycles(unsigned long);


ругается на то что __ms переменная а не константа, подскажите что делать ?
Go to the top of the page
 
+Quote Post



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

 


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


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