Страница 136 из 421

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб июл 30, 2011 10:42:19
pyzhman
Протосс - дурак. Это я скажу, положа руку на сердце. В остальном(по поводу питания) опираюсь на даташит. Потому как делая что-то для кого-то, гарантирую результат. А гарантии мои опираются на гарантии разработчика мк, в частности. Насчет того, что у всех работает: у компонентов есть запас, в т.ч. по питанию. Можно использовать, не спорю. Но с вопросами типа "собрал, а не работает" в свое время задолбало разгребать. Соберите что-нибудь из журнала Радио, зацените масштаб допусков так сказать.
у всех все стабильно работает
Фамилии и девайсы предоставьте, пожалуйста. :)

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб июл 30, 2011 12:57:06
Shutilla
pyzh_man писал(а):Фамилии и девайсы предоставьте, пожалуйста. :)
:) Хотел предоставить для начала себя, потом вспомнил, что использовал в этом программаторе новую ревизию ATMega8A, которая на всем интервале 2,7 - 5,5 держит 16 МГц (по даташиту). Так что моя скромная персона отпадает.
А насчет "всех" остальных - не может же эта конструкция быть не рабочей, если ее столько раз повторили. Значит мега держит эту частоту, пусть это и недокументированная возможность (те самые резервы). Это, само по себе, не хорошо и не плохо.
Плохо то, что Проттосс не указал этого явно в описании конструкции. С другой стороны, там черным по белому написано:
Согласно документации ATMEL на ATmega8(L), микроконтроллер может работать при таком напряжении питания до частоты немногим выше 14 МГц.
Но, лично я, на такую документацию не натыкался. Может пропустил в даташите какой-нибудь график зависимости тактовой частоты от Vcc.
pyzh_man писал(а):Соберите что-нибудь из журнала Радио, зацените масштаб допусков так сказать.
Как раз этим и занимаюсь, посмотрим что выйдет :))

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб июл 30, 2011 13:13:41
pyzhman
Что-то я повелся на провокационное
Shutilla писал(а):Что же,
Об авторе, надеюсь, никто не забыл? И может помочь? ТЗ описано в постах чуть выше.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб июл 30, 2011 14:32:24
Сериг
Так питание моего мк 3,7-4,2 вольта,питание приемника 4,5-5,7 вольт

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб июл 30, 2011 20:06:13
dslimp
туплю( подскажите плиз, как сконвертить строку (в которой шестнадцатиричное число) - просто в число?

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб июл 30, 2011 21:18:31
IfoR
Ака магия:

Код: Выделить всё

int HexToInt(char *str)
{
     char r=strlen(str), s=0; int i=0; 
     while(r--) i+=(str[r] - (str[r]>'9')?( (str[r]>='a')?('a'):('A') - 10):('0')) << 4*s++;
     return i;
}
Оно?

Использовать так:

Код: Выделить всё

char str[]="2fA";
int i;

i = HexToInt(str);
Не проверял. :)

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб июл 30, 2011 22:26:03
Сериг
Это мне??

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб июл 30, 2011 22:41:24
IfoR
Нет. Это автору выше.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Сб июл 30, 2011 23:13:38
Shutilla
Сериг, так про тактовую частоту вы нам там ничего и не сказали. И про частоту ШИМа тоже.
От тактовой зависит будет ли АЦП успевать мерить ваш ШИМ или нет. Иначе он просто не сможет определить необходимые 15%, или будет работать с большой погрешностью.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Вс июл 31, 2011 00:30:11
Сериг
Я не могу поменять шим ;( шим до 250кгц вроде

Re: CodeVision AVR в вопросах и ответах

Добавлено: Вс июл 31, 2011 12:30:15
dslimp
IfoR писал(а):Ака магия:
Не проверял. :)
Что то не пошло) Нашел функцию для перевода одного символа, а дальше уже дело техники

#define xtod(c) ((c>='0' && c<='9') ? c-'0' : ((c>='A' && c<='F') ? \
c-'A'+10 : ((c>='a' && c<='f') ? c-'a'+10 : 0)))

Re: CodeVision AVR в вопросах и ответах

Добавлено: Вс июл 31, 2011 13:26:03
IfoR
Ну во-первых: это не функция, а макрос; :)
во-вторых: он написан не оптимально;
в-третьих: я нашёл у себя ошибку: не поставил пару скобок:

Код: Выделить всё

int HexToInt(char *str)
{
     char r=strlen(str), s=0; int i=0;
     while(r--) i+=(str[r] - ((str[r]>'9')?( (str[r]>='a')?('a'):('A') - 10):('0'))) << 4*s++;
     return i;
}
:))

Re: CodeVision AVR в вопросах и ответах

Добавлено: Вс июл 31, 2011 14:09:02
dslimp
IfoR писал(а):Ну во-первых
Спасибо большое!=) Так то разницы не заметил в скобках, но работает)))

Re: CodeVision AVR в вопросах и ответах

Добавлено: Вс июл 31, 2011 14:12:56
IfoR
ну я же говорю: это Сишная магия. :)))

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср авг 03, 2011 09:39:13
demiurg301
Народ помогите разобраться с глюком...
Есть код на CVAVR типа:

Код: Выделить всё

unsigned char temp_str[12];
double temp_value;
unsigned long int val;
.....
val=335059001;
temp_value=val/10000.0;
ftoa(temp_value,3, (unsigned char *)temp_str);
На выходе получаю строку 33505.898 вместо 33505.900 - в чём может быть запара? В функции ftoa ? версия CVAVR 1.25.5 :))
ЗЫ Не первый раз сталкиваюсь с таким поведением cvavr - тут просто припёрло...

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср авг 03, 2011 15:24:11
avreal
Где-то я на этом форуме уже писал с примерами -- двоичный формат float далеко не всегда может точно передать десятичное число с плавающей точкой. И наоборот.
Компилятор тут не важен. Смиритесь.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср авг 03, 2011 15:36:28
avreal
IfoR писал(а):Ну во-первых: это не функция, а макрос; :)
во-вторых: он написан не оптимально;
в-третьих: я нашёл у себя ошибку: не поставил пару скобок:

Код: Выделить всё

int HexToInt(char *str)
{
     char r=strlen(str), s=0; int i=0;
     while(r--) i+=(str[r] - ((str[r]>'9')?( (str[r]>='a')?('a'):('A') - 10):('0'))) << 4*s++;
     return i;
}
:))
Ну это тоже не слишком оптимально. И со скобочками, кажется, все же не то.

Код: Выделить всё

int HexToInt(char *str)
{
     char r=strlen(str), s=0; int i=0;
     while(r--) i+=(str[r] - ((str[r]>'9')?( (str[r]>='a'?'a':'A') - 10):('0'))) << 4*s++;
     return i;
}

unsigned HexToInt1(char *str)
{
        unsigned u  = 0;
        while( *str ) {
                uint8_t c = *str++;
                if (c > 'F') c -= 'a'-'A';
                c -= '0';
                if (c > 9) c -= 'A'-'0'-10;
                u = (u << 4) + c;
        }
        return u;
}
При компиляции avr-gcc 4.3.4 для mega8 c ключиком -Os функция HexToInt1() более чем в два раза экономичнее по коду, чем HexToInt() (25 слов вместо 59, т.е. 50 байт вместо 118). Думаю, по скорости будет выигрыш раза в три.

Re: CodeVision AVR в вопросах и ответах

Добавлено: Ср авг 03, 2011 23:49:26
totty
Доброго времени суток форумчанам, только начал осваивать МК, написал программу для мигания светодиодами. Сведотодиоды (8 штук) подключены на порт В. МК atiny2313. На INT0 подтянута кнопка переключения режимов.
Программа

#include <tiny2313.h>
#include <delay.h>

unsigned int i,t;
interrupt [EXT_INT0] void ext_int0(void)
{
PORTB.2=1;
x++;
for (x>3)
{
x=0;
}
}

void main(void)
{
DDRB=0b11111111; // порт В весь на выход
DDRD.2=0; // порт PD2 как вход для прерывания
GIMSK=0b01000000;// Разерашем прерывания INT0
MCUCR=0b0000001; // прерывание будет по фронту импульса
#asm("sei") // Разрешаем глобальные прерывания
label1:
{
PORTB=0b10011001;
}
label2:
{
PORTB=0b10000001;
}
label3:
{
PORTB=0b10101010;
}
if (x==1)
goto label1;
if (x==2)
goto label2;
if (x==3)
goto label3;


}

после прошивки горят 3 светодиода, по прерыванию могут загореться 2, потом снова же 3)
подскажите, где ошибка может быть?

пробовал циклами if-else вроде работает, но не в тех порядках как нужно(

Re: CodeVision AVR в вопросах и ответах

Добавлено: Чт авг 04, 2011 00:22:04
SubDia
totty, я как раз давно хотел хороший ужастик посмотреть. Спасибо, посмотрел. :)
Ладно, это все шуточки, не обижайтесь.
А Вы можете объяснить, что конкретно Вы хотите добиться от МК с помощью этой программы? В какой последовательности должны мигать светодиоды?
Просто здесь проще по новой написать, чем искать ошибки..

Re: CodeVision AVR в вопросах и ответах

Добавлено: Чт авг 04, 2011 00:33:07
totty
SubDia писал(а): А Вы можете объяснить, что конкретно Вы хотите добиться от МК с помощью этой программы? В какой последовательности должны мигать светодиоды?
Просто здесь проще по новой написать, чем искать ошибки..
вобщем хочу добиться эффекта как в ёлочной гирлянде, включил - первый тип мигания, нажал кнопку (прерывание ) переключилось на 2 тип мигания (горения), 3 раз нажал- на третий, на четвёртый чтобы всё возвращалоськ первому типу горения)