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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

vadd писал(а):А можно ссылку на раздел "Периферия"
viewforum.php?f=61
Тема - viewtopic.php?f=61&t=79801
Импульс
Потрогал лапой паяльник
Сообщения: 349
Зарегистрирован: Пн ноя 29, 2010 05:52:05
Откуда: Иркутск

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

Сообщение Импульс »

Опять проблема.
Сломался программатор stk 500 ,достал старый ,-
стк200/300 подаю с бп питание 5 вольт.
И при чтении/записи мк ----------

codevision avr
communication error, please check the following:
-the Programmer's power supply is on
-the Programmer type is correctly set in the Settings/Programmer menu
-the Printer port adress is correctly set in the Settings/Programmer menu
-the AVR chip is not damaged
Я не помню ,когда втыкаю стк 200/300 в разьём lpt порта, компьютер должен как то реагировать?
Находить новое устрйство или драйвера устанавливать под этот программатор?
И как можно посмотреть его работоспособность (программатора?)
В деспетчере устройств?
Аватара пользователя
Gudd-Head
Друг Кота
Сообщения: 20092
Зарегистрирован: Чт сен 18, 2008 12:27:21
Откуда: Столица Мира Санкт-Петербург

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

Сообщение Gudd-Head »

Импульс писал(а):Я не помню ,когда втыкаю стк 200/300 в разьём lpt порта, компьютер должен как то реагировать?

Насколько я помню, COM и LPT подцепляются после перезагрузки.
[ Всё дело не столько в вашей глупости, сколько в моей гениальности ] [ Правильно заданный вопрос содержит в себе половину ответа ]
Аватара пользователя
0867532
Встал на лапы
Сообщения: 142
Зарегистрирован: Сб май 25, 2013 21:14:11
Откуда: Москва
Контактная информация:

Вопрос по CVAVR и вообще по C и C подобных языках...

Сообщение 0867532 »

Всем Привет Уже давно не могу разобраться с массивами...
Никак не могу понять.
Например:
Спойлер

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

int co = 1;
int ct = 3;
int Value = 0;
void o0(void) {
PORTD.0=0;
PORTD.1=0;
PORTD.2=0;
PORTD.3=0;
PORTD.4=0;
PORTD.5=0;
PORTD.6=1;
}
void o1(void) {
PORTD.0=1;
PORTD.1=0;
PORTD.2=0;
PORTD.3=1;
PORTD.4=1;
PORTD.5=1;
PORTD.6=1;
}
void o2(void) {
PORTD.0=0;//a
PORTD.1=0;//b
PORTD.2=1;//c
PORTD.3=0;//d
PORTD.4=0;//e
PORTD.5=1;//f
PORTD.6=0;//g
}
void o3(void) {
PORTD.0=0;//a
PORTD.1=0;//b
PORTD.2=0;//c
PORTD.3=0;//d
PORTD.4=1;//e
PORTD.5=1;//f
PORTD.6=0;//g
}
void o4(void) {
PORTD.0=1;//a
PORTD.1=0;//b
PORTD.2=0;//c
PORTD.3=1;//d
PORTD.4=1;//e
PORTD.5=0;//f
PORTD.6=0;//g
}
void o5(void) {
PORTD.0=0;//a
PORTD.1=1;//b
PORTD.2=0;//c
PORTD.3=0;//d
PORTD.4=1;//e
PORTD.5=0;//f
PORTD.6=0;//g
}
void o6(void) {
PORTD.0=0;//a
PORTD.1=1;//b
PORTD.2=0;//c
PORTD.3=0;//d
PORTD.4=0;//e
PORTD.5=0;//f
PORTD.6=0;//g
}
void o7(void) {
PORTD.0=0;//a
PORTD.1=0;//b
PORTD.2=0;//c
PORTD.3=1;//d
PORTD.4=1;//e
PORTD.5=1;//f
PORTD.6=1;//g
}
void o8(void) {
PORTD.0=0;//a
PORTD.1=0;//b
PORTD.2=0;//c
PORTD.3=0;//d
PORTD.4=0;//e
PORTD.5=0;//f
PORTD.6=0;//g
}
void o9(void) {
PORTD.0=0;//a
PORTD.1=0;//b
PORTD.2=0;//c
PORTD.3=0;//d
PORTD.4=1;//e
PORTD.5=0;//f
PORTD.6=0;//g
}

void t0(void) {
PORTB.0=0;
PORTB.1=0;
PORTB.2=0;
PORTB.3=0;
PORTB.4=0;
PORTB.5=0;
PORTB.6=1;
}
void t1(void) {
PORTB.0=1;
PORTB.1=0;
PORTB.2=0;
PORTB.3=1;
PORTB.4=1;
PORTB.5=1;
PORTB.6=1;
}
void t2(void) {
PORTB.0=0;//a
PORTB.1=0;//b
PORTB.2=1;//c
PORTB.3=0;//d
PORTB.4=0;//e
PORTB.5=1;//f
PORTB.6=0;//g
}
void t3(void) {
PORTB.0=0;//a
PORTB.1=0;//b
PORTB.2=0;//c
PORTB.3=0;//d
PORTB.4=1;//e
PORTB.5=1;//f
PORTB.6=0;//g
}
void t4(void) {
PORTB.0=1;//a
PORTB.1=0;//b
PORTB.2=0;//c
PORTB.3=1;//d
PORTB.4=1;//e
PORTB.5=0;//f
PORTB.6=0;//g
}
void t5(void) {
PORTB.0=0;//a
PORTB.1=1;//b
PORTB.2=0;//c
PORTB.3=0;//d
PORTB.4=1;//e
PORTB.5=0;//f
PORTB.6=0;//g
}
void t6(void) {
PORTB.0=0;//a
PORTB.1=1;//b
PORTB.2=0;//c
PORTB.3=0;//d
PORTB.4=0;//e
PORTB.5=0;//f
PORTB.6=0;//g
}
void t7(void) {
PORTB.0=0;//a
PORTB.1=0;//b
PORTB.2=0;//c
PORTB.3=1;//d
PORTB.4=1;//e
PORTB.5=1;//f
PORTB.6=1;//g
}
void t8(void) {
PORTB.0=0;//a
PORTB.1=0;//b
PORTB.2=0;//c
PORTB.3=0;//d
PORTB.4=0;//e
PORTB.5=0;//f
PORTB.6=0;//g
}
void t9(void) {
PORTB.0=0;//a
PORTB.1=0;//b
PORTB.2=0;//c
PORTB.3=0;//d
PORTB.4=1;//e
PORTB.5=0;//f
PORTB.6=0;//g
}

void main( void ){

DDRD = 0xFF;
PORTD = 0xFF;

DDRB = 0xFF;
PORTB = 0xFF;

DDRA = 0x00;
PORTA = 0xFF;

while(1) {
co = value%10;
ct = value/10;
if (co == 0) { o0(); }
if (co == 1) { o1(); }
if (co == 2) { o2(); }
if (co == 3) { o3(); }
if (co == 4) { o4(); }
if (co == 5) { o5(); }
if (co == 6) { o6(); }
if (co == 7) { o7(); }
if (co == 8) { o8(); }
if (co == 9) { o9(); }

if (ct == 0) { t0(); }
if (ct == 1) { t1(); }
if (ct == 2) { t2(); }
if (ct == 3) { t3(); }
if (ct == 4) { t4(); }
if (ct == 5) { t5(); }
if (ct == 6) { t6(); }
if (ct == 7) { t7(); }
if (ct == 8) { t8(); }
if (ct == 9) { t9(); }
if(PINA.0) {value++;}
}
}

Код весьма старый, (баловался с индикатором)
Но это слишком уж много,
а когда я делал тетрис чуть с ума не сошёл...
Вот делю ещё один проэкт, в котором подобной фигни вообще очень много...
Кто нибудь может написать полный, полноценный пример на массивах или чём там???
*пример именно к коду выше.
Спасибо!
Если возникнут вопросы - посмотрите на мой аватар.
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: Вопрос по CVAVR и вообще по C и C подобных языках...

Сообщение vitalik_1984 »

Бред, команда обращения к биту используется когда нужно обращение к биту. Если требуется изменение 3-4х бит порта, то лучше обращаться ко всему порту, а не по одному биту.

Вместо восьми команд в асме получается три- четыре.
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Вопрос по CVAVR и вообще по C и C подобных языках...

Сообщение ploop »

Чуть со стула не упал :)
Для начала оптимизируйте так:

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

...
if (ct == 0) PORTB = 0b00000111;
if (ct == 1) PORTB = 0b00111000;
...

где нули и единицы - ваши биты.
Потом освойте switch-case
Потом массивы.

Спрашивайте, что непонятно.
Аватара пользователя
COKPOWEHEU
Говорящий с текстолитом
Сообщения: 1525
Зарегистрирован: Чт июн 10, 2010 20:11:19

Re: Вопрос по CVAVR и вообще по C и C подобных языках...

Сообщение COKPOWEHEU »

А где там массивы?
Аватара пользователя
ploop
Модератор
Сообщения: 13490
Зарегистрирован: Ср ноя 26, 2008 16:34:25
Откуда: Тамбовская обл.

Re: Вопрос по CVAVR и вообще по C и C подобных языках...

Сообщение ploop »

Если всем так интересны массивы, тогда так:

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

unsigned char arr1[] = {0b00011100, 0b00011111, ...};
unsigned char arr2[] = {0b00011100, 0b00011111, ...};
...

while(1)
{
co = value%10;
ct = value/10;
PORTB = arr1[ct];
PORTD = arr2[co];
... или как там по тексту ...
}
Аватара пользователя
Panda_Y2K
Грызет канифоль
Сообщения: 258
Зарегистрирован: Пт сен 23, 2011 06:44:41
Откуда: ЮФО
Контактная информация:

Re: Вопрос по CVAVR и вообще по C и C подобных языках...

Сообщение Panda_Y2K »

Я делаю это вот так

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

//расположение выводов на плате AFBGCDE
//PD.0 -> A             0 -> ABCDEF     0xb 01001000    0x48
//PC.5 -> F             1 -> BC         0xb 11101011    0xEB                 
//PC.4 -> B             2 -> ABDEG      0xb 01100100    0x64
//PC.3 -> G             3 -> ABCDG      0xb 01100001    0x61
//PC.2 -> C             4 -> BCGF       0xb 11000011    0xC3
//PC.1 -> D             5 -> ACDGF      0xb 01010001    0x51
//PC.0 -> E             6 -> ACDEGF     0xb 01010000    0x50
//                      7 -> ABC        0xb 01101011    0x6B
//                      8 -> ABCDEFG    0xb 01000000    0x40
//                      9 -> ABCDFG     0xb 01000001    0x41


//соответствие портов индикаторам
//1 -> PB.4
//2 -> PB.5
//3 -> PB.3
//4 -> PD.7
//5 -> PB.2
//6 -> PB.1
//7 -> PD.6

#define DIG1 PORTB.4
#define DIG2 PORTB.5
#define DIG3 PORTB.3
#define DIG4 PORTD.7
#define DIG5 PORTB.2
#define DIG6 PORTB.1
#define DIG7 PORTD.6   

//         0    1     2     3     4     5     6     7     8     9     C    A     H     L     r     F
flash unsigned char digit[16]={0x48, 0xEB, 0x64, 0x61, 0xC3, 0x51, 0x50, 0x6B, 0x40, 0x41, 0x5C, 0x42, 0xC2, 0xDC, 0xF6, 0x56};

void display()
{
unsigned char temp, blink_seg, sg1, sg2, sg3;
//All digits off
DIG1 = 1;
DIG2 = 1;
DIG3 = 1;
DIG4 = 1;
DIG5 = 1;
DIG6 = 1;
DIG7 = 1;

temp = sg1 / 10;
PORTC = digit[temp];
DIG2 = 0;
delay_ms(4);
DIG2 = 1;

//minutes
         
temp = sg2 / 10;
PORTC = digit[temp];
DIG3=0;
delay_ms(4);
DIG3 = 1;
...
...
...
}

Купи два беляша и собери из них кошку
Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)
Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
Аватара пользователя
0867532
Встал на лапы
Сообщения: 142
Зарегистрирован: Сб май 25, 2013 21:14:11
Откуда: Москва
Контактная информация:

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

Сообщение 0867532 »

Всем Спасибо, а можно ли в массив ф-ции засунуть?
Например:
...
#define T DataPin = 0;clock();
#define F DataPin = 1;clock();
...
unsigned char Letters[] = {
F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F, //" " первый кусок
T;T;T;T;T;T;F;F;F;F;T;T;T;T;T;T //"0" второй кусок
};
...
Letters[1];//вызываем 1й кусок массива
...
На это cvavr ругается,"Must be constant value"(в строчке "F;F;F;F;F;F;F;F;F;F;F;F;F;F;F;F,") и Missing ")"(в строчке "unsigned char Letters[] = {" )
Пробовал ставить constant char но скобка всё равно пропущена, и пишет что параметер Letters не использован.
Оно и понятно, сувать код в чар глупо наверное...
Если возникнут вопросы - посмотрите на мой аватар.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

а можно ли в массив ф-ции засунуть?
Можно. Гуглите на тему указатели на функцию.
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

0867532 писал(а):Всем Спасибо, а можно ли в массив ф-ции засунуть?

Вот тут наш дорогой Alex уже приводил пример. Вы вообще ответы читаете или только вопросы задаете?
Конкретно по массивам я в ЛИЧНЫХ сообщениях объяснял и показывал на примере. Для кого это вообще все?
Обидно когда не умеют анализировать полученную информацию, особенно когда сам эту информацию расписываешь на телефоне.
Аватара пользователя
Panda_Y2K
Грызет канифоль
Сообщения: 258
Зарегистрирован: Пт сен 23, 2011 06:44:41
Откуда: ЮФО
Контактная информация:

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

Сообщение Panda_Y2K »

Читайте ответы, анализируйте, вникайте, ставьте плюсики, увеличивайте карму.
Купи два беляша и собери из них кошку
Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)
Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).
Аватара пользователя
Сериг
Это не хвост, это антенна
Сообщения: 1451
Зарегистрирован: Пт фев 19, 2010 19:39:28
Откуда: Москва

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

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

Добрый вечер! Поделитесь пожалуйста кодом,кто заносил свои символы в RAM дисплея,дисплей на контроллере HD44780. Посмотрел в Хелпе как делали это сами создатели библиотекой функции,работает не корректно! Не могу понять почему,вроде уже и задержки поставил. Выводится мой символ и к нему пририсовывается еще какая-то белиберда.
Если надо,выложу как записываю и вывожу я.
Спасибо!
Аватара пользователя
0867532
Встал на лапы
Сообщения: 142
Зарегистрирован: Сб май 25, 2013 21:14:11
Откуда: Москва
Контактная информация:

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

Сообщение 0867532 »

Я так делаю:
Работает всегда правильно.
Коды чаров генерировал в этой проге:
http://rghost.ru/private/48590263/81d57 ... 58c21e9a72

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

typedef unsigned char byte;  
flash byte char0[8]={0x04, 0x14, 0x1F, 0x05, 0x04, 0x0A, 0x11, 0x11};//суваем то что сгенерировалось суда
flash byte char1[8]={0x04, 0x05, 0x1F, 0x14, 0x04, 0x0A, 0x11, 0x11};
flash byte char2[8]={0x1F, 0x11, 0x11, 0x11, 0x19, 0x11, 0x11, 0x11};
flash byte char3[8]={0x1F, 0x15, 0x15, 0x15, 0x15, 0x15, 0x15, 0x1F};
flash byte char4[8]={0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04};
flash byte char5[8]={0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00};
flash byte char6[8]={0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x00};
flash byte char7[8]={0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00};

void define_char(byte flash *pc,byte char_code)
{
byte i,a;
a=(char_code<<3) | 0x40;
for (i=0; i<8; i++) lcd_write_byte(a++,*pc++);
}

void main(void) {   
...
define_char(char0,0);
define_char(char1,1);
define_char(char2,2);
define_char(char3,3);
define_char(char4,4);
define_char(char5,5);
define_char(char6,6);
define_char(char7,7);
...
lcd_putchar(0);
lcd_putchar(1);
lcd_putchar(2);//Выводим сгенерированые чары на экран
lcd_putchar(3);
lcd_putchar(4);
lcd_putchar(5);
lcd_putchar(6);
lcd_putchar(7);
...
}
Если возникнут вопросы - посмотрите на мой аватар.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

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

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

Сообщение pyzhman »

0867532 +. Всё согласно хелпа по библиотеке работы с ЖКИ. (Только надо не сувать, а запихивать.) Проверено буквально позавчера(работа кода, а не запихивание).
работает не корректно
Проверить заточенность лап. :))
Docendo discimus
Аватара пользователя
Сериг
Это не хвост, это антенна
Сообщения: 1451
Зарегистрирован: Пт фев 19, 2010 19:39:28
Откуда: Москва

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

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

Спасибо за помощь! Буду копать.
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

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

Сообщение vitalik_1984 »

0867532 вы чуть далее чем вчера спрашивали про массивы, и уже сегодня показываете готовые примеры с использованием тех же массивов.
У меня есть только два варианта ответа на данный факт.
1. Либо вы так хорошо поняли что такое массив за два дня, что самостоятельно используете.
Тут можно и поздравить.
2. Вы тролль и просто над нами издеваетесь спрашивая такие вопросы и приводя нелепый код уже не в первый раз.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

Есть и 3-ий вариант. Он просто этот код содрал откуда-то, не зная как он работает, и пользуется им :)
Ответить

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