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

Docendo discimus
- Реклама
pyzh_man писал(а):Фамилии и девайсы предоставьте, пожалуйста.
А насчет "всех" остальных - не может же эта конструкция быть не рабочей, если ее столько раз повторили. Значит мега держит эту частоту, пусть это и недокументированная возможность (те самые резервы). Это, само по себе, не хорошо и не плохо.
Плохо то, что Проттосс не указал этого явно в описании конструкции. С другой стороны, там черным по белому написано:
Но, лично я, на такую документацию не натыкался. Может пропустил в даташите какой-нибудь график зависимости тактовой частоты от Vcc.Согласно документации ATMEL на ATmega8(L), микроконтроллер может работать при таком напряжении питания до частоты немногим выше 14 МГц.
Как раз этим и занимаюсь, посмотрим что выйдетpyzh_man писал(а):Соберите что-нибудь из журнала Радио, зацените масштаб допусков так сказать.
Что-то я повелся на провокационное
Об авторе, надеюсь, никто не забыл? И может помочь? ТЗ описано в постах чуть выше.Shutilla писал(а):Что же,
Docendo discimus
Так питание моего мк 3,7-4,2 вольта,питание приемника 4,5-5,7 вольт
- Сообщения: 14
- Зарегистрирован: Пн мар 01, 2010 16:25:11
туплю( подскажите плиз, как сконвертить строку (в которой шестнадцатиричное число) - просто в число?
- Реклама
Ака магия:
Оно?
Использовать так:
Не проверял. 
Код: Выделить всё
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 раз.
Нет. Это автору выше.
Сериг, так про тактовую частоту вы нам там ничего и не сказали. И про частоту ШИМа тоже.
От тактовой зависит будет ли АЦП успевать мерить ваш ШИМ или нет. Иначе он просто не сможет определить необходимые 15%, или будет работать с большой погрешностью.
От тактовой зависит будет ли АЦП успевать мерить ваш ШИМ или нет. Иначе он просто не сможет определить необходимые 15%, или будет работать с большой погрешностью.
- Сообщения: 14
- Зарегистрирован: Пн мар 01, 2010 16:25:11
Что то не пошло) Нашел функцию для перевода одного символа, а дальше уже дело техники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)))
Ну во-первых: это не функция, а макрос; 
во-вторых: он написан не оптимально;
в-третьих: я нашёл у себя ошибку: не поставил пару скобок: 
во-вторых: он написан не оптимально;
в-третьих: я нашёл у себя ошибку: не поставил пару скобок:
Код: Выделить всё
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;
}- Сообщения: 14
- Зарегистрирован: Пн мар 01, 2010 16:25:11
Спасибо большое!=) Так то разницы не заметил в скобках, но работает)))IfoR писал(а):Ну во-первых
ну я же говорю: это Сишная магия. 
- Сообщения: 812
- Зарегистрирован: Ср мар 18, 2009 21:14:33
Народ помогите разобраться с глюком...
Есть код на CVAVR типа:
На выходе получаю строку 33505.898 вместо 33505.900 - в чём может быть запара? В функции ftoa ? версия CVAVR 1.25.5 
ЗЫ Не первый раз сталкиваюсь с таким поведением cvavr - тут просто припёрло...
Есть код на 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);
ЗЫ Не первый раз сталкиваюсь с таким поведением cvavr - тут просто припёрло...
Где-то я на этом форуме уже писал с примерами -- двоичный формат float далеко не всегда может точно передать десятичное число с плавающей точкой. И наоборот.
Компилятор тут не важен. Смиритесь.
Компилятор тут не важен. Смиритесь.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Ну это тоже не слишком оптимально. И со скобочками, кажется, все же не то.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;
}Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Доброго времени суток форумчанам, только начал осваивать МК, написал программу для мигания светодиодами. Сведотодиоды (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 вроде работает, но не в тех порядках как нужно(
Программа
#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 вроде работает, но не в тех порядках как нужно(
totty, я как раз давно хотел хороший ужастик посмотреть. Спасибо, посмотрел. 
Ладно, это все шуточки, не обижайтесь.
А Вы можете объяснить, что конкретно Вы хотите добиться от МК с помощью этой программы? В какой последовательности должны мигать светодиоды?
Просто здесь проще по новой написать, чем искать ошибки..
Ладно, это все шуточки, не обижайтесь.
А Вы можете объяснить, что конкретно Вы хотите добиться от МК с помощью этой программы? В какой последовательности должны мигать светодиоды?
Просто здесь проще по новой написать, чем искать ошибки..
pavel_cydenov: Вобще я праAVRославный человек. Но и про ислARM слышал много хорошего )
MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

MrYuran: Самые ортодоксальные — это PICудеи )
Katz: Не, 51-ники. )

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



