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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

forastr писал(а):Здрасте!подскажите пожалуйста.Хочу массиву присвоить содерижимое файла.Как это сделать?(Например массив fontdata
, а в файле font.txt : 0x00,0x01,0x02)
я сделал небольшую программку, которая позволяет облегчить эту задачу: http://arv.radioliga.com/content/view/223/44/
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
hd44780
Встал на лапы
Сообщения: 132
Зарегистрирован: Вт июл 14, 2009 09:27:37
Откуда: Донецк, Украина

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

Сообщение hd44780 »

forastr писал(а):Хочу массиву присвоить содерижимое файла.Как это сделать?(Например массив fontdata
, а в файле font.txt : 0x00,0x01,0x02)


А откуда ты файл в контроллере возьмешь :shock: ? Будешь ради 3-х байт прикручивать SD карточку?

Напиши просто
char a[]={0x00,0x01,0x02};
Зачем тут файл?
paranoik
Родился
Сообщения: 2
Зарегистрирован: Пн мар 28, 2011 13:02:11

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

Сообщение paranoik »

Доброго времени суток!
Господа, подскажите.. есть три переменные:
unsigned char h,l;
unsigned int x;

Как в старший байт переменной x положить значение переменной h, и соответственно в младший байт значение переменной l? И обратная задача, как прочитать старший байт из x в переменную h (можно ли это сделать без ассемблерных вставок или операций сдвига\деления)?
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

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

Сообщение ChipKiller »

paranoik писал(а):Как в старший байт переменной x положить значение переменной h, и соответственно в младший байт значение переменной l? И обратная задача, как прочитать старший байт из x в переменную h (можно ли это сделать без ассемблерных вставок или операций сдвига\деления)?
либо описав как структуру, либо простым сдвигом... ассемблер тут не нужен.
paranoik
Родился
Сообщения: 2
Зарегистрирован: Пн мар 28, 2011 13:02:11

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

Сообщение paranoik »

Спасибо!
А то думал что есть что то вроде l=Low(x); но в справке ничего подобного не нашел
Аватара пользователя
hd44780
Встал на лапы
Сообщения: 132
Зарегистрирован: Вт июл 14, 2009 09:27:37
Откуда: Донецк, Украина

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

Сообщение hd44780 »

paranoik писал(а):Как в старший байт переменной x положить значение переменной h, и соответственно в младший байт значение переменной l?

x=h;
x= (x<<8)|l; /// или x= (x<<8)+l;

paranoik писал(а):И обратная задача, как прочитать старший байт из x в переменную h (можно ли это сделать без ассемблерных вставок или операций сдвига\деления)?


h= x>>8;

Операции <<, >> - сдвиг. Чего их не использовать?

paranoik писал(а):А то думал что есть что то вроде l=Low(x); но в справке ничего подобного не нашел


А кто мешает сделать её самому:

#define Low(x) ((unsigned char)(x>>8))

.....

h = Low(0x1234); // h= 0x12
forastr
Родился
Сообщения: 3
Зарегистрирован: Пн мар 28, 2011 10:00:52

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

Сообщение forastr »

hd44780 писал(а):
forastr писал(а):Хочу массиву присвоить содерижимое файла.Как это сделать?(Например массив fontdata
, а в файле font.txt : 0x00,0x01,0x02)


А откуда ты файл в контроллере возьмешь :shock: ? Будешь ради 3-х байт прикручивать SD карточку?

Напиши просто
char a[]={0x00,0x01,0x02};
Зачем тут файл?


я может неправильно выразился:как правильно с точки зрения синтаксиса написать через #include.(Просто имеется два файла различных кодировок для бегущей строки , и чтобы каждый раз при перекомпиляции не переписывать массив где 255х7 элементов,то проще включть содержание типа fontoffset[] =#include <font.txt>, тока у меня ошибки выскакивают )
Аватара пользователя
Apparatchik
Держит паяльник хвостом
Сообщения: 908
Зарегистрирован: Вс май 23, 2010 13:55:42
Откуда: Украина, Александрия

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

Сообщение Apparatchik »

forastr писал(а):я может неправильно выразился:как правильно с точки зрения синтаксиса написать через #include.(Просто имеется два файла различных кодировок для бегущей строки , и чтобы каждый раз при перекомпиляции не переписывать массив где 255х7 элементов,то проще включть содержание типа fontoffset[] =#include <font.txt>, тока у меня ошибки выскакивают )

определить разные массивы fontoffset[]={1,2,...n} в разных файлах font.c или font.h и подключать нужный файл с помощью #include
«И всё-таки она вертится!»
forastr
Родился
Сообщения: 3
Зарегистрирован: Пн мар 28, 2011 10:00:52

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

Сообщение forastr »

Apparatchik писал(а):
forastr писал(а):я может неправильно выразился:как правильно с точки зрения синтаксиса написать через #include.(Просто имеется два файла различных кодировок для бегущей строки , и чтобы каждый раз при перекомпиляции не переписывать массив где 255х7 элементов,то проще включть содержание типа fontoffset[] =#include <font.txt>, тока у меня ошибки выскакивают )

определить разные массивы fontoffset[]={1,2,...n} в разных файлах font.c или font.h и подключать нужный файл с помощью #include


Спасибо!Помогло!
CS16AMX
Нашел транзистор. Понюхал.
Сообщения: 195
Зарегистрирован: Вт ноя 30, 2010 00:50:40

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

Сообщение CS16AMX »

дошёл таки до акселерометров и захотелось его к предмету привязать знаю что предмет движется минимальным шагом 0.01 если дать 0.1 то он будет вертется быстрее чем глаз увидит ,в чём же касяк ! ацп макс 1023 пока что пробую вывести на екран через разные пути добавление 0 с переди, даже поделил макс теперь 150 но 0 не преписывает(
как его переправить?
Аватара пользователя
Errorkpi
Встал на лапы
Сообщения: 102
Зарегистрирован: Вт мар 22, 2011 22:31:01

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

Сообщение Errorkpi »

Прочитал ваш пост 4 раза, ничего не понял. Какой шаг, какой акселерометр, к какому предмету. Схему в студию, или алгоритм, или хотя бы подробное описание проблемы. Что у вас не получается..?
CS16AMX
Нашел транзистор. Понюхал.
Сообщения: 195
Зарегистрирован: Вт ноя 30, 2010 00:50:40

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

Сообщение CS16AMX »

может не так вырозился в общем у меня акселерометр 7260qr2 у него 3 оси и 3 выхода на них напряжение 0.8-2.6В в ацп 240-800 едениц
мне надо хотяб 1 ось перевести из вида 200 в ==> 0.200


unsigned int read_adc(unsigned char adc_input)
{
ADMUX=adc_input | (ADC_VREF_TYPE & 0xff);
delay_us(10);
ADCSRA|=0x40;
while ((ADCSRA & 0x10)==0);
ADCSRA|=0x10;
return ADCW;
}

void main(void)
{
long int m,k,s;

// ADC initialization
// ADC Clock frequency: 1000,000 kHz
// ADC Voltage Reference: AREF pin
ADMUX=ADC_VREF_TYPE & 0xff;
ADCSRA=0x83;


LcdInit();

while (1)

s=read_adc(0); //ïîðòû
?????????
sprintf (lcd_buf, "V=%u", s);
LcdString(1,3);
LcdUpdate();
delay_ms(200);
LcdClear();
так вот интересно реально ли сделать 0 с точкой перед значением ацп? схема классичекая
Аватара пользователя
Сериг
Это не хвост, это антенна
Сообщения: 1451
Зарегистрирован: Пт фев 19, 2010 19:39:28
Откуда: Москва

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

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

CS16AMX писал(а): ïîðòû
?????????

а что это за язык?)
CS16AMX
Нашел транзистор. Понюхал.
Сообщения: 195
Зарегистрирован: Вт ноя 30, 2010 00:50:40

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

Сообщение CS16AMX »

Сериг писал(а):
CS16AMX писал(а): ïîðòû
?????????

а что это за язык?)

ето русиш)))) слово "порты")
Аватара пользователя
ChipKiller
Сверлит текстолит когтями
Сообщения: 1163
Зарегистрирован: Ср янв 05, 2011 16:25:15

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

Сообщение ChipKiller »

CS16AMX писал(а):перевести из вида 200 в ==> 0.200
если вопрос об отображении на индикаторе, то просто сформируйте строку в буфере перед отображением.

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

strcpy(new_buf,"0.");
strcat(new_buf,lcd_buf);
CS16AMX
Нашел транзистор. Понюхал.
Сообщения: 195
Зарегистрирован: Вт ноя 30, 2010 00:50:40

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

Сообщение CS16AMX »

нее,к сожалению в дальнейшем охото к 3Д модельке прицепить на экране хотяб увидеть без точек 01024 , а вообще надо бы на програмном коде это проделать как я понял в флоат можно это осуществить
makser
Открыл глаза
Сообщения: 71
Зарегистрирован: Пт апр 24, 2009 11:25:34
Откуда: Rus

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

Сообщение makser »

Есть новая версия, рабочая. http://eldigi.ru/site/prog/cvavr.php
Там правда дистрибутив сам триал, но заменой файла из прилагаемой папки можн получить полностью рабочую.
Из плюсов можно отметить возможность назначать выводы для лсд индикатора, раньше только целый порт.
Warn
Родился
Сообщения: 16
Зарегистрирован: Ср мар 16, 2011 19:41:29

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

Сообщение Warn »

доброго времени суток
пишу программу, чип мега32, шьётся по 5ти проводкам исключительно, пашет с кварцем на 16.
вопрос следующий.
вот часть текста программы
.......
PORTA.3=0;
PORTC.4=0;
PORTC.5=0;
PORTC.7=0;
PORTC.3=0;
PORTC.2=0;
PORTA.0=0;
PORTD.3=0;
PORTA.7=0;
PORTD.6=0;
PORTB.2=0;
PORTA.2=0;
PORTB.1=0;
PORTB.7=0;
PORTB.5=0;
PORTA.5=0;
PORTB.0=0;
PORTA.1=0;
......
делаю так сказать свотовое табло
это у меня одна буква.
Как мне всё это разместить в 4х строчках???
а то у меня программа получается очень большая.
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

Warn писал(а):Как мне всё это разместить в 4х строчках???
а то у меня программа получается очень большая.
вспомнить, наконец, что порт - это сразу 8 бит, и устанавливать сразу все 8 бит, а не по одному.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Apparatchik
Держит паяльник хвостом
Сообщения: 908
Зарегистрирован: Вс май 23, 2010 13:55:42
Откуда: Украина, Александрия

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

Сообщение Apparatchik »

Или писать всё в одну строку если уж так нужно каждый бит отдельно

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

PORTA.3=0; PORTC.4=0; PORTC.5=0;...
«И всё-таки она вертится!»
Ответить

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