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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
ibiza11
Поставщик валерьянки для Кота
Сообщения: 1900
Зарегистрирован: Сб фев 21, 2009 13:11:40
Откуда: Москва

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

Сообщение ibiza11 »

:facepalm: вообще говоря эти вопросы к CVA не относятся. синтаксис языка отдельно почитать можно.
Ставим плюсы: )
Аватара пользователя
DiGiCat
Друг Кота
Сообщения: 4793
Зарегистрирован: Пт июл 11, 2008 09:42:35
Откуда: Made in USSR

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

Сообщение DiGiCat »

Сериг писал(а): Забыл сказать у меня stk500v2...
Эта тема не помогла? Какой комп, операционка?
scio me nihil scire...
_______________________

Изображение <= Жалобная кнопка в правом нижнем углу... )
Аватара пользователя
Сериг
Это не хвост, это антенна
Сообщения: 1451
Зарегистрирован: Пт фев 19, 2010 19:39:28
Откуда: Москва

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

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

DiGiCat писал(а):
Сериг писал(а): Забыл сказать у меня stk500v2...
Эта тема не помогла? Какой комп, операционка?

Виндоус хп,я прошил атмегу она начала потеблять 90 милиампер,удаляю прошивав все нормально...
Аватара пользователя
DiGiCat
Друг Кота
Сообщения: 4793
Зарегистрирован: Пт июл 11, 2008 09:42:35
Откуда: Made in USSR

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

Сообщение DiGiCat »

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

p.s. и это уже кагбе к теме CodeVision не имеет никакого...
scio me nihil scire...
_______________________

Изображение <= Жалобная кнопка в правом нижнем углу... )
kotelectron
Родился
Сообщения: 7
Зарегистрирован: Вт дек 20, 2011 13:33:46

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

Сообщение 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, но ничего не вышло.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

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

Сообщение Мастер Ломастер »

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

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

и не во всех случаях битовые поля дают компактный код.
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
totty
Первый раз сказал Мяу!
Сообщения: 39
Зарегистрирован: Ср авг 03, 2011 22:26:02
Откуда: Севастополь

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

Сообщение totty »

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

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

-прилагаю файлы протеуса и проект CW, в текстовом код вольтметра
Вложения
sample.rar
(43.93 КБ) 170 скачиваний
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

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

Сообщение BCluster »

kotelectron писал(а):Как можно выкрутиться?

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

или чтение

SomeVar = PIND.3;

Мастер Ломастер писал(а):а нужно выкручиваться? может, стоит привыкнуть к традиционному для Си способу работы с битами?

Если делаю большой проект, в котором мне надо по битам работать с портами, обычно делаю обертки для этого дела, имхо так более читабельно, если их нету в наличии, но часто они есть, как например в кодвижне.
Аватара пользователя
Сериг
Это не хвост, это антенна
Сообщения: 1451
Зарегистрирован: Пт фев 19, 2010 19:39:28
Откуда: Москва

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

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

ibiza11 писал(а)::facepalm: вообще говоря эти вопросы к CVA не относятся. синтаксис языка отдельно почитать можно.

Всем огромное спасибо!схема моя заработала,я счастлив))))
kotelectron
Родился
Сообщения: 7
Зарегистрирован: Вт дек 20, 2011 13:33:46

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

Сообщение kotelectron »

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

или чтение

SomeVar = PIND.3;


Спасибо, BCluster. Это то что нужно.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

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

Сообщение Мастер Ломастер »

BCluster писал(а):
kotelectron писал(а):Как можно выкрутиться?

Ващет в кодвижне имеется такой формат
PORTB.2 = 1;
а что скажет ваш кодвижн на подобное TCCR1B.1 =1? или ADCSRA.5 = 1? правда, понятная запись? сразу ясно, что я хотел этим достичь...
битва с дураками проиграна, победители торжествуют. слава победителям!
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

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

Сообщение BerZerK-ku »

TCCR1B = (1 << WGM12) | (1 << CS11) | (1 << CS10);
Подобная запись тоже ни о чем не говорит, пока не залезешь в описание на МК :dont_know:
А вот если пользоваться комментариями, то любая запись станет понятной.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

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

Сообщение Мастер Ломастер »

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

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

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

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

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

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

shirina++;


работать с МК без даташита вообще не рекомендуется, но при этом вовсе нет нужды лазить в него за каждым битом - по названиям битов буквально на третью попытку вырабатывается стойкая привычка. тем более что МЕСТО бита в регистре от версии к версии контроллера может поменяться, а название - нет.
битва с дураками проиграна, победители торжествуют. слава победителям!
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

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

Сообщение BerZerK-ku »

:dont_know: Каждый пишет программу и документирует так, как ему/им удобнее, тем более речь идет о любительских разработках. Избыток комментариев ухудшает читабельность кода, но ничего страшного в этом нет.
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

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

Сообщение Мастер Ломастер »

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

я с вами и не спорю. вам и на красный свет можно дорогу переходить - ничего страшного в этом нет. главное, как вам удобно - так ведь? и правила и прочее - для дураков, вроде меня. удачи!
битва с дураками проиграна, победители торжествуют. слава победителям!
kotelectron
Родился
Сообщения: 7
Зарегистрирован: Вт дек 20, 2011 13:33:46

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

Сообщение kotelectron »

а что скажет ваш кодвижн на подобное TCCR1B.1 =1? или ADCSRA.5 = 1? правда, понятная запись? сразу ясно, ...


TCCR1B.WGM12 = 1;
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

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

Сообщение BerZerK-ku »

Мастер Ломастер писал(а):я с вами и не спорю. вам и на красный свет можно дорогу переходить - ничего страшного в этом нет. главное, как вам удобно - так ведь? и правила и прочее - для дураков, вроде меня. удачи!
Подскажите, каким стандартом в работе руководствуетесь вы?
Мастер Ломастер
Поставщик валерьянки для Кота
Сообщения: 1995
Зарегистрирован: Ср май 11, 2011 21:37:45
Откуда: Цветочный город
Контактная информация:

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

Сообщение Мастер Ломастер »

kotelectron писал(а):TCCR1B.WGM12 = 1;
кодвижн эту запись понимает?
BerZerK-ku писал(а):Подскажите, каким стандартом в работе руководствуетесь вы?
да вам-то зачем? тоже хотите стать дураком? оставайтесь лучше умным
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

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

Сообщение pyzhman »

Мастер Ломастер писал(а):тоже хотите стать дураком? оставайтесь лучше умным

+
Docendo discimus
BerZerK-ku
Мучитель микросхем
Сообщения: 492
Зарегистрирован: Вт июл 22, 2008 08:10:54

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

Сообщение BerZerK-ku »

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

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