Страница 167 из 421

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

Добавлено: Вс дек 25, 2011 12:11:27
ibiza11
:facepalm: вообще говоря эти вопросы к CVA не относятся. синтаксис языка отдельно почитать можно.

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

Добавлено: Вс дек 25, 2011 12:37:31
DiGiCat
Сериг писал(а): Забыл сказать у меня stk500v2...
Эта тема не помогла? Какой комп, операционка?

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

Добавлено: Вс дек 25, 2011 13:22:32
Сериг
DiGiCat писал(а):
Сериг писал(а): Забыл сказать у меня stk500v2...
Эта тема не помогла? Какой комп, операционка?
Виндоус хп,я прошил атмегу она начала потеблять 90 милиампер,удаляю прошивав все нормально...

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

Добавлено: Вс дек 25, 2011 13:46:46
DiGiCat
Прошивается в отдельной панельке? Возможно где-то замыкают ноги у атмеги или что-то с железом в её обвязке не так...

p.s. и это уже кагбе к теме CodeVision не имеет никакого...

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

Добавлено: Пн дек 26, 2011 13:30:44
kotelectron
Здравствуйте.
Только вчера начал осваивать avr, до этого писал только для mc51 в keil.
Использовал для битов регистров объявления такого типа:

sfr P0 = 0x80; /* Port 0 */

sbit P0_0 = 0x80;
sbit P0_1 = 0x81;
sbit P0_2 = 0x82;
... и т.д.

В хедерах CVAVR есть только адреса основных регистров, а имена битов в качестве define:

sfrb PORTA=0x1b;

#define PORTA0 0 // Port A Data Register bit 0
#define PORTA1 1 // Port A Data Register bit 1
#define PORTA2 2 // Port A Data Register bit 2

т.е. для достута к биту необходимо выполнять маскирование:

PORTA = (1 << PORTA0)|(1 << PORTA2) //установка 0 и 2 бита

Мне кажется, что это ненаглядно, и как я понимаю сдвиг выполняется не при компиляции а в реальном времени.

например, в keil это выглядит P0_0 = 1; //Локанично и читабельно

Регистры avr поддерживают битовую адресацию, значит должен быть способ.

Как можно выкрутиться?
пытался применить в хедере определения sbit, но ничего не вышло.

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

Добавлено: Пн дек 26, 2011 13:53:45
Мастер Ломастер
kotelectron писал(а):Как можно выкрутиться?
а нужно выкручиваться? может, стоит привыкнуть к традиционному для Си способу работы с битами? ведь в Си нет БИТОВЫХ переменных - это все происки "расширений" кейла или еще кого... и напрасно вы переживаете на счет сдвигов в реальном времени - ВСЕ вычисления с КОНСТАНТАМИ делаются на этапе компиляции.

но если желание извратиться у вас пересиливает рассудок, можно использовать стандартный подход - структуры с битовыми полями - будет стандартно и достаточно понятно, но потребует массы "ручной" работы по созданию хидеров ко всем типам МК - производитель как-то не подумал о том, что кто-то захочет вот так вот, нестандартно...

и не во всех случаях битовые поля дают компактный код.

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

Добавлено: Вт дек 27, 2011 00:12:10
totty
Добрый вечер, форумчане, помогите пожалуйста найти ошибку,
контроллер мега8, 4х 7сегментных индикатора, должны выводить число 4 разрядное, на индикаторе при тестировании в протеусе творится нечто не понятное, 2 разряда только выводит

проверьте пожалуйста на ошибку, в дальнейшем планировал сделать вольтметр но пока не разобрался с простым выводом индикации..
заранее спасибо :))

-прилагаю файлы протеуса и проект CW, в текстовом код вольтметра

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

Добавлено: Вт дек 27, 2011 00:17:57
BCluster
kotelectron писал(а):Как можно выкрутиться?

Ващет в кодвижне имеется такой формат
PORTB.2 = 1;

или чтение

SomeVar = PIND.3;
Мастер Ломастер писал(а):а нужно выкручиваться? может, стоит привыкнуть к традиционному для Си способу работы с битами?
Если делаю большой проект, в котором мне надо по битам работать с портами, обычно делаю обертки для этого дела, имхо так более читабельно, если их нету в наличии, но часто они есть, как например в кодвижне.

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

Добавлено: Вт дек 27, 2011 00:23:57
Сериг
ibiza11 писал(а)::facepalm: вообще говоря эти вопросы к CVA не относятся. синтаксис языка отдельно почитать можно.
Всем огромное спасибо!схема моя заработала,я счастлив))))

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

Добавлено: Вт дек 27, 2011 05:28:27
kotelectron
BCluster писал(а):Ващет в кодвижне имеется такой формат
PORTB.2 = 1;

или чтение

SomeVar = PIND.3;
Спасибо, BCluster. Это то что нужно.

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

Добавлено: Вт дек 27, 2011 07:15:29
Мастер Ломастер
BCluster писал(а):
kotelectron писал(а):Как можно выкрутиться?

Ващет в кодвижне имеется такой формат
PORTB.2 = 1;
а что скажет ваш кодвижн на подобное TCCR1B.1 =1? или ADCSRA.5 = 1? правда, понятная запись? сразу ясно, что я хотел этим достичь...

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

Добавлено: Вт дек 27, 2011 08:15:12
BerZerK-ku
TCCR1B = (1 << WGM12) | (1 << CS11) | (1 << CS10);
Подобная запись тоже ни о чем не говорит, пока не залезешь в описание на МК :dont_know:
А вот если пользоваться комментариями, то любая запись станет понятной.

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

Добавлено: Вт дек 27, 2011 09:19:03
Мастер Ломастер
BerZerK-ku писал(а):TCCR1B = (1 << WGM12) | (1 << CS11) | (1 << CS10);
Подобная запись тоже ни о чем не говорит, пока не залезешь в описание на МК :dont_know:
А вот если пользоваться комментариями, то любая запись станет понятной.
коментарий должен пояснять алгоритмические нюансы, а не повторять тупо описание оператора Си на русском языке. просто млею, когда вижу такое:

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

d++; // увеличиваем ширину на 1
в нормальной программе должно быть написано так:

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

width++;
для совсем печальных случаев, когда с английским языком состояние перманентной войны, допускаю такой вариант:

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

shirina++;
работать с МК без даташита вообще не рекомендуется, но при этом вовсе нет нужды лазить в него за каждым битом - по названиям битов буквально на третью попытку вырабатывается стойкая привычка. тем более что МЕСТО бита в регистре от версии к версии контроллера может поменяться, а название - нет.

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

Добавлено: Вт дек 27, 2011 09:46:50
BerZerK-ku
:dont_know: Каждый пишет программу и документирует так, как ему/им удобнее, тем более речь идет о любительских разработках. Избыток комментариев ухудшает читабельность кода, но ничего страшного в этом нет.

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

Добавлено: Вт дек 27, 2011 09:55:32
Мастер Ломастер
BerZerK-ku писал(а)::dont_know: Каждый пишет программу и документирует так, как ему/им удобнее, тем более речь идет о любительских разработках. Избыток комментариев ухудшает читабельность кода, но ничего страшного в этом нет.
я с вами и не спорю. вам и на красный свет можно дорогу переходить - ничего страшного в этом нет. главное, как вам удобно - так ведь? и правила и прочее - для дураков, вроде меня. удачи!

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

Добавлено: Вт дек 27, 2011 10:32:10
kotelectron
а что скажет ваш кодвижн на подобное TCCR1B.1 =1? или ADCSRA.5 = 1? правда, понятная запись? сразу ясно, ...
TCCR1B.WGM12 = 1;

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

Добавлено: Вт дек 27, 2011 10:38:33
BerZerK-ku
Мастер Ломастер писал(а):я с вами и не спорю. вам и на красный свет можно дорогу переходить - ничего страшного в этом нет. главное, как вам удобно - так ведь? и правила и прочее - для дураков, вроде меня. удачи!
Подскажите, каким стандартом в работе руководствуетесь вы?

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

Добавлено: Вт дек 27, 2011 10:44:12
Мастер Ломастер
kotelectron писал(а):TCCR1B.WGM12 = 1;
кодвижн эту запись понимает?
BerZerK-ku писал(а):Подскажите, каким стандартом в работе руководствуетесь вы?
да вам-то зачем? тоже хотите стать дураком? оставайтесь лучше умным

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

Добавлено: Вт дек 27, 2011 10:57:11
pyzhman
Мастер Ломастер писал(а):тоже хотите стать дураком? оставайтесь лучше умным
+

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

Добавлено: Вт дек 27, 2011 11:11:11
BerZerK-ku
Я тут один что-ли? Вы же пытаетесь объяснить людям как правильно писать. Зачем пересказывать своими словами, если есть возможность дать ссылку на стандарт-первоисточник?
Барон Мюнхгаузен писал(а):Спой птичка, не стыдись
А по теме: большая часть людей, которые задают тут вопросы, лишь поверхностно знакомы с С / МК. К чему им навязывать какие-то правила, забивая голову лишней информацией, если на данном этапе обучения от них не будет прока? Тот код, который начинающий пишет неделями, в будущем он переделает за день-другой.