Код: Выделить всё
int set_portA(char delay){
port_A=port_A|1<<pinX;
_delay_us(delay);
return 0;
}
Код: Выделить всё
int set_portA(char delay){
port_A=port_A|1<<pinX;
_delay_us(delay);
return 0;
}
Код: Выделить всё
#define set_portA(pinX, delay) do{ \
port_A |=1<<(pinX); \
_delay_us(delay); \
}while(0)
это совершенно ничего не меняет, если будет делаться так, как раньше:Аlex писал(а):Код: Выделить всё
#define set_portA(pinX, delay) do{ \ port_A |=1<<(pinX); \ _delay_us(delay); \ }while(0)
Код: Выделить всё
#define set_portA(pinX, delay) do{ \
port_A |=1<<(pinX); \
_delay_us(delay); \
}while(0)
int var = 100;
set_portA(5, var); // все равно в _delay_us попадает ПЕРЕМЕННАЯЯ передаю именно переменную которая вычисляется, ну не писать же 50 одинаковых функций, _delay_us(10); _delay_us(20);.........Аlex писал(а):Ну естественно, если использовать переменную, то не меняет.
Возможно что ТС передаёт в свою ф-ию константу.
Я забыл написать, что вызывать нужно с костантой, иначе толку не будет. Спасибо что поправили меня....
если вы делаете то, что нельзя делать (об этом недвусмысленно сказано в документации) - кто ж вам виноват?amkuznecov писал(а):Я передаю именно переменную которая вычисляется, ну не писать же 50 одинаковых функций, _delay_us(10); _delay_us(20);.........
Так яж не виноватых ищу, я совета спрашиваю, уже.... Как реализовать задержку внутри функции, передаваемую параметром, при условии что таймер оченно не хочется пользовать?Мастер Ломастер писал(а):если вы делаете то, что нельзя делать (об этом недвусмысленно сказано в документации) - кто ж вам виноват?
ну, если супер-точность не требуется, то вот вариант:amkuznecov писал(а):Так яж не виноватых ищу, я совета спрашиваю, уже.... Как реализовать задержку внутри функции, передаваемую параметром, при условии что таймер оченно не хочется пользовать?Мастер Ломастер писал(а):если вы делаете то, что нельзя делать (об этом недвусмысленно сказано в документации) - кто ж вам виноват?
Код: Выделить всё
static void delay_MS(uint16_t ms){
for(; ms; ms--) _delay_ms(1);
}... зависит от диапазона задержки, о чем нет ни слова...amkuznecov писал(а):Как реализовать задержку внутри функции, передаваемую параметром, при условии что таймер оченно не хочется пользовать?
Код: Выделить всё
void SetPort_A(unsigned long int delay)
{
////////////
_delay_us(delay);
////////////
}
может, не будете советовать то, что априори неверно?DX168B писал(а):Может попробуйте так:
Код: Выделить всё
NAME mydelay_lib
PUBLIC mydelay
RSEG CODE
mydelay:
subi r16,1
sbci r17,0
push r16
or r16,r17
breq exit_delay
pop r16
rjmp mydelay
exit_delay:
pop r16
ret
endКод: Выделить всё
#ifndef mydelay_lib
#define mydelay_lib
void mydelay(unsigned int);
#endifКод: Выделить всё
#include "mydelay.h"
/***********/
mydelay(ticks);