CodeVision AVR в вопросах и ответах
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
ЗЫ: Хотя, есть такой коэффициент, и он равен нулю. Зависимости не будет вообще никакой 
- levaclaus
- Потрогал лапой паяльник
- Сообщения: 302
- Зарегистрирован: Пн янв 07, 2008 16:56:28
- Откуда: Минск
Re: CodeVision AVR в вопросах и ответах
Аlex писал(а):levaclaus писал(а):есть число "б", которое прямо пропорционально зависит от "а"Это как ? Одно противоречит другомуlevaclaus писал(а): чтобы "б" не было зависимо от "а"
а это так, к примеру "а" изменилось на величину "х" допустим равную -10db, "б" соответственно изменится тоже на -10 db. Зная это можно домножить "б" на 1,12 в степени "х", в случае если "х"==0, "а"="б" . В результате получим "б", не зависящую от ослабления "а". Но что-то атмега16 не очень резво степень считает.
-
misterkuk
- Мучитель микросхем
- Сообщения: 400
- Зарегистрирован: Сб апр 17, 2010 10:30:13
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Подскажите.
Результат деления НОЛЬ. почему не 0.001024? Что я не так делаю.?
Код: Выделить всё
int time;
time=32/31250;
Результат деления НОЛЬ. почему не 0.001024? Что я не так делаю.?
- ua1arn
- Встал на лапы
- Сообщения: 81
- Зарегистрирован: Вт май 08, 2012 23:15:45
- Откуда: Санкт - Петербург
Re: CodeVision AVR в вопросах и ответах
потому что int - т.е., переменная целого типа. Да и делитель с делимым тоже целые.
-
misterkuk
- Мучитель микросхем
- Сообщения: 400
- Зарегистрирован: Сб апр 17, 2010 10:30:13
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
ua1arn писал(а):потому что int - т.е., переменная целого типа. Да и делитель с делимым тоже целые.
То есть мне переменную объявить как float? а делить не на 31250, а на 31250.0? но так всё равно не работает. Подскажите запись.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Код: Выделить всё
float time;
time = 32.0/31250;
- 0867532
- Встал на лапы
- Сообщения: 142
- Зарегистрирован: Сб май 25, 2013 21:14:11
- Откуда: Москва
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Коты. помогите глупому:
периодически сталкиваюсь с тем, что не могу скомпилировать код, в котором есть большой массив. раньше просто разбивал на более мелкие, но сейчас лень. Как можно исправить?

(пишет что пропущено "," в третьей строке массива)
периодически сталкиваюсь с тем, что не могу скомпилировать код, в котором есть большой массив. раньше просто разбивал на более мелкие, но сейчас лень. Как можно исправить?
(пишет что пропущено "," в третьей строке массива)
Последний раз редактировалось 0867532 Сб сен 27, 2014 20:35:56, всего редактировалось 1 раз.
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Что-то картинка слишком большая, всё на столько отлично видно, что глаза аж разбегаются
ЗЫ: А файл с кодом выложить никак ?
ЗЫ: А файл с кодом выложить никак ?
- 0867532
- Встал на лапы
- Сообщения: 142
- Зарегистрирован: Сб май 25, 2013 21:14:11
- Откуда: Москва
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
тут массив немного подрезан, но ошибка та же
P.S. ну это так img.radiokot сжимает
P.P.S. только нормально инициализировал чип, а данные не могу в него загнать
EDIT: Ясно, не учел размер флешки
P.S. ну это так img.radiokot сжимает
P.P.S. только нормально инициализировал чип, а данные не могу в него загнать
EDIT: Ясно, не учел размер флешки
- Вложения
-
- sta013code.zip
- (122.83 КБ) 173 скачивания
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Аlex писал(а):Что-то картинка слишком большая, всё на столько отлично видно, что глаза аж разбегаются![]()
Код: Выделить всё
http://img.radiokot.ru/files/88152/medium/gg6j1enil.pngУбираете medium из ссылки и видите полную картинку (аналогично ссылка с /thumbnail/ - это то, что в посте видно)
Хотя по хорошему это сделать должен был тот, кто ссылку с картинкой в пост выкладывает.
Re: CodeVision AVR в вопросах и ответах
0867532 писал(а):P.P.S. только нормально инициализировал чип, а данные не могу в него загнать
EDIT: Ясно, не учел размер флешки
Да у вас просто индийский код.
Программу уж точно нужно оптимизировать.
Ну или контроллер по старше... Вам уже решать
- 0867532
- Встал на лапы
- Сообщения: 142
- Зарегистрирован: Сб май 25, 2013 21:14:11
- Откуда: Москва
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Я просто, в первый раз инициализировал этот чип. Нужно было понять работает хоть чуть-чуть, или нет. Если интересно - то звук появился, но обрывисто. Думаю AtMega32@1MHz просто не успевает, да и кусок файла размером в 30kB довольно короткий. Конечно, теперь буду пробовать на AtMega128@20MHz с SDкартой и прочими плюхами.
Re: CodeVision AVR в вопросах и ответах
В Си не особо. Подскажите что делает эта строка?
PORTB=255-(1<<byte1);b1=PINA;
Спасибо
PORTB=255-(1<<byte1);b1=PINA;
Спасибо
- WiseLord
- Друг Кота
- Сообщения: 4905
- Зарегистрирован: Чт апр 11, 2013 11:19:59
- Откуда: Минск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
http://www.c-cpp.ru/books/bitovye-operatoryPaha100 писал(а):что делает эта строка?
Re: CodeVision AVR в вопросах и ответах
За то что послали на изучение битовых операций спасибо.
переменная byte1 как битовая
понятно что в эту переменную записывается 1, представлено 1<<byte1
а что делает именно вот это 255-
переменная byte1 как битовая
понятно что в эту переменную записывается 1, представлено 1<<byte1
а что делает именно вот это 255-
- Pink-Pank
- Опытный кот
- Сообщения: 721
- Зарегистрирован: Ср июн 11, 2014 09:43:13
- Откуда: США
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
а что делает именно вот это 255-
По всему видимому, вычитает.

переменная byte1 как битовая
понятно что в эту переменную записывается 1, представлено 1<<byte1
в byte1 ничего не записывается. Скорее всего, это вообще числовая константа, а не переменная.
Fucking static initialization order fiasco
Re: CodeVision AVR в вопросах и ответах
Вот более полный код
Читает с внешнего регистра 32 бит данные побайтно.
b1, b2,b3,b4 соотв байты
а byte1 и т.д. это для управления регистром какой байт читать, привязаны к ногам МК
но почему PORTB=255-(1<<byte1) так записано, это и смутило.
#define byte1 PB4
#define byte2 PB3
#define byte3 PB2
#define byte4 PB1
unsigned long val=123456;
void read(){
unsigned long b4,b3,b2,b1;
PORTB=255-(1<<byte1);b1=PINA;
PORTB=255-(1<<byte2);b2=PINA;
PORTB=255-(1<<byte3);b3=PINA;
PORTB=255-(1<<byte4);b4=PINA;
PORTB=0;PORTB=255;//RESET
val=b1+b2*256+b3*65536+b4*16777216; // ad 'em up
val=val/3355;
}
Читает с внешнего регистра 32 бит данные побайтно.
b1, b2,b3,b4 соотв байты
а byte1 и т.д. это для управления регистром какой байт читать, привязаны к ногам МК
но почему PORTB=255-(1<<byte1) так записано, это и смутило.
#define byte1 PB4
#define byte2 PB3
#define byte3 PB2
#define byte4 PB1
unsigned long val=123456;
void read(){
unsigned long b4,b3,b2,b1;
PORTB=255-(1<<byte1);b1=PINA;
PORTB=255-(1<<byte2);b2=PINA;
PORTB=255-(1<<byte3);b3=PINA;
PORTB=255-(1<<byte4);b4=PINA;
PORTB=0;PORTB=255;//RESET
val=b1+b2*256+b3*65536+b4*16777216; // ad 'em up
val=val/3355;
}
- Pink-Pank
- Опытный кот
- Сообщения: 721
- Зарегистрирован: Ср июн 11, 2014 09:43:13
- Откуда: США
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
автор таким образом задал инверсию. Регистр, видимо, работает по входу на обратной логике. Активный 0 - выбор байта.
255-(1<<byte1) == ~(1<<byte1)
255-(1<<byte1) == ~(1<<byte1)
Fucking static initialization order fiasco
- Аlex
- Модератор
- Сообщения: 4614
- Зарегистрирован: Чт мар 18, 2010 23:09:57
- Откуда: Планета Земля
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Ужасный кодPaha100 писал(а):#define byte1 PB4
#define byte2 PB3
#define byte3 PB2
#define byte4 PB1
unsigned long val=123456;
void read(){
unsigned long b4,b3,b2,b1;
PORTB=255-(1<<byte1);b1=PINA;
PORTB=255-(1<<byte2);b2=PINA;
PORTB=255-(1<<byte3);b3=PINA;
PORTB=255-(1<<byte4);b4=PINA;
PORTB=0;PORTB=255;//RESET
val=b1+b2*256+b3*65536+b4*16777216; // ad 'em up
val=val/3355;
}
Зачем b4,b3,b2,b1 - long, если в них читается 8-ми битный порт ? Да ещё и такие бешеные умножения... А всё ради того, чтобы уложить 4 байта в long-переменную...
Хотя бы как-нибудь так:
Код: Выделить всё
void read(){
union{ unsigned char b[4]; unsigned long l; }val_tmp;
PORTB=~(1<<byte1);val_tmp.b[0]=PINA;
PORTB=~(1<<byte2);val_tmp.b[1]=PINA;
PORTB=~(1<<byte3);val_tmp.b[2]=PINA;
PORTB=~(1<<byte4);val_tmp.b[3]=PINA;
PORTB=0;PORTB=255;//RESET
val=val_tmp.l/3355;
}
Re: CodeVision AVR в вопросах и ответах
Аlex писал(а):Ужасный код![]()
К счастью не мой ))
На просторах интернета найден.
Ваш читается с ходу, даже с моими сильно поверхностными знаниями Си.