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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

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

Фамилии и девайсы предоставьте, пожалуйста. :)
Docendo discimus
Shutilla
Открыл глаза
Сообщения: 52
Зарегистрирован: Чт июл 03, 2008 12:34:48
Откуда: Волгоград

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

Сообщение Shutilla »

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

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

Сообщение pyzhman »

Что-то я повелся на провокационное
Shutilla писал(а):Что же,

Об авторе, надеюсь, никто не забыл? И может помочь? ТЗ описано в постах чуть выше.
Docendo discimus
Аватара пользователя
Сериг
Это не хвост, это антенна
Сообщения: 1451
Зарегистрирован: Пт фев 19, 2010 19:39:28
Откуда: Москва

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

Сообщение Сериг »

Так питание моего мк 3,7-4,2 вольта,питание приемника 4,5-5,7 вольт
dslimp
Родился
Сообщения: 14
Зарегистрирован: Пн мар 01, 2010 16:25:11

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

Сообщение dslimp »

туплю( подскажите плиз, как сконвертить строку (в которой шестнадцатиричное число) - просто в число?
Аватара пользователя
IfoR
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Сб ноя 15, 2008 10:09:56
Откуда: г. Тула
Контактная информация:

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

Сообщение 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);


Не проверял. :)
Последний раз редактировалось IfoR Сб июл 30, 2011 23:05:32, всего редактировалось 8 раз.
Изображение
/dev/urandom - гигабайты информации.

OS: openSUSE 13.2 (x86_64)
Аватара пользователя
Сериг
Это не хвост, это антенна
Сообщения: 1451
Зарегистрирован: Пт фев 19, 2010 19:39:28
Откуда: Москва

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

Сообщение Сериг »

Это мне??
Аватара пользователя
IfoR
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Сб ноя 15, 2008 10:09:56
Откуда: г. Тула
Контактная информация:

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

Сообщение IfoR »

Нет. Это автору выше.
Изображение
/dev/urandom - гигабайты информации.

OS: openSUSE 13.2 (x86_64)
Shutilla
Открыл глаза
Сообщения: 52
Зарегистрирован: Чт июл 03, 2008 12:34:48
Откуда: Волгоград

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

Сообщение Shutilla »

Сериг, так про тактовую частоту вы нам там ничего и не сказали. И про частоту ШИМа тоже.
От тактовой зависит будет ли АЦП успевать мерить ваш ШИМ или нет. Иначе он просто не сможет определить необходимые 15%, или будет работать с большой погрешностью.
Аватара пользователя
Сериг
Это не хвост, это антенна
Сообщения: 1451
Зарегистрирован: Пт фев 19, 2010 19:39:28
Откуда: Москва

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

Сообщение Сериг »

Я не могу поменять шим ;( шим до 250кгц вроде
dslimp
Родился
Сообщения: 14
Зарегистрирован: Пн мар 01, 2010 16:25:11

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

Сообщение 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)))
Аватара пользователя
IfoR
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Сб ноя 15, 2008 10:09:56
Откуда: г. Тула
Контактная информация:

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

Сообщение 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;
}
:))
Изображение
/dev/urandom - гигабайты информации.

OS: openSUSE 13.2 (x86_64)
dslimp
Родился
Сообщения: 14
Зарегистрирован: Пн мар 01, 2010 16:25:11

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

Сообщение dslimp »

IfoR писал(а):Ну во-первых

Спасибо большое!=) Так то разницы не заметил в скобках, но работает)))
Аватара пользователя
IfoR
Поставщик валерьянки для Кота
Сообщения: 2029
Зарегистрирован: Сб ноя 15, 2008 10:09:56
Откуда: г. Тула
Контактная информация:

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

Сообщение IfoR »

ну я же говорю: это Сишная магия. :)))
Изображение
/dev/urandom - гигабайты информации.

OS: openSUSE 13.2 (x86_64)
demiurg301
Опытный кот
Сообщения: 812
Зарегистрирован: Ср мар 18, 2009 21:14:33

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

Сообщение 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 - тут просто припёрло...
Аватара пользователя
avreal
Опытный кот
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна
Контактная информация:

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

Сообщение avreal »

Где-то я на этом форуме уже писал с примерами -- двоичный формат float далеко не всегда может точно передать десятичное число с плавающей точкой. И наоборот.
Компилятор тут не важен. Смиритесь.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Аватара пользователя
avreal
Опытный кот
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна
Контактная информация:

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

Сообщение 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). Думаю, по скорости будет выигрыш раза в три.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Аватара пользователя
totty
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Ср авг 03, 2011 22:26:02
Откуда: Севастополь

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

Сообщение 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 вроде работает, но не в тех порядках как нужно(
Аватара пользователя
SubDia
Держит паяльник хвостом
Сообщения: 995
Зарегистрирован: Сб апр 02, 2011 17:59:22
Откуда: Город-герой Севастополь

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

Сообщение SubDia »

totty, я как раз давно хотел хороший ужастик посмотреть. Спасибо, посмотрел. :)
Ладно, это все шуточки, не обижайтесь.
А Вы можете объяснить, что конкретно Вы хотите добиться от МК с помощью этой программы? В какой последовательности должны мигать светодиоды?
Просто здесь проще по новой написать, чем искать ошибки..
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )
Изображение
Аватара пользователя
totty
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Ср авг 03, 2011 22:26:02
Откуда: Севастополь

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

Сообщение totty »

SubDia писал(а):А Вы можете объяснить, что конкретно Вы хотите добиться от МК с помощью этой программы? В какой последовательности должны мигать светодиоды?
Просто здесь проще по новой написать, чем искать ошибки..


вобщем хочу добиться эффекта как в ёлочной гирлянде, включил - первый тип мигания, нажал кнопку (прерывание ) переключилось на 2 тип мигания (горения), 3 раз нажал- на третий, на четвёртый чтобы всё возвращалоськ первому типу горения)
Ответить

Вернуться в «AVR»