вообще говоря эти вопросы к CVA не относятся. синтаксис языка отдельно почитать можно.CodeVision AVR в вопросах и ответах
- ibiza11
- Поставщик валерьянки для Кота
- Сообщения: 1900
- Зарегистрирован: Сб фев 21, 2009 13:11:40
- Откуда: Москва
Re: CodeVision AVR в вопросах и ответах
вообще говоря эти вопросы к CVA не относятся. синтаксис языка отдельно почитать можно.Ставим плюсы: )
Re: CodeVision AVR в вопросах и ответах
Эта тема не помогла? Какой комп, операционка?Сериг писал(а): Забыл сказать у меня stk500v2...
scio me nihil scire...
_______________________
<= Жалобная кнопка в правом нижнем углу... )
_______________________
- Сериг
- Это не хвост, это антенна
- Сообщения: 1451
- Зарегистрирован: Пт фев 19, 2010 19:39:28
- Откуда: Москва
Re: CodeVision AVR в вопросах и ответах
DiGiCat писал(а):Эта тема не помогла? Какой комп, операционка?Сериг писал(а): Забыл сказать у меня stk500v2...
Виндоус хп,я прошил атмегу она начала потеблять 90 милиампер,удаляю прошивав все нормально...
Re: CodeVision AVR в вопросах и ответах
Прошивается в отдельной панельке? Возможно где-то замыкают ноги у атмеги или что-то с железом в её обвязке не так...
p.s. и это уже кагбе к теме CodeVision не имеет никакого...
p.s. и это уже кагбе к теме CodeVision не имеет никакого...
scio me nihil scire...
_______________________
<= Жалобная кнопка в правом нижнем углу... )
_______________________
-
kotelectron
- Родился
- Сообщения: 7
- Зарегистрирован: Вт дек 20, 2011 13:33:46
Re: CodeVision AVR в вопросах и ответах
Здравствуйте.
Только вчера начал осваивать 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, но ничего не вышло.
Только вчера начал осваивать 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 в вопросах и ответах
Добрый вечер, форумчане, помогите пожалуйста найти ошибку,
контроллер мега8, 4х 7сегментных индикатора, должны выводить число 4 разрядное, на индикаторе при тестировании в протеусе творится нечто не понятное, 2 разряда только выводит
проверьте пожалуйста на ошибку, в дальнейшем планировал сделать вольтметр но пока не разобрался с простым выводом индикации..
заранее спасибо
-прилагаю файлы протеуса и проект CW, в текстовом код вольтметра
контроллер мега8, 4х 7сегментных индикатора, должны выводить число 4 разрядное, на индикаторе при тестировании в протеусе творится нечто не понятное, 2 разряда только выводит
проверьте пожалуйста на ошибку, в дальнейшем планировал сделать вольтметр но пока не разобрался с простым выводом индикации..
заранее спасибо
-прилагаю файлы протеуса и проект CW, в текстовом код вольтметра
- Вложения
-
- sample.rar
- (43.93 КБ) 170 скачиваний
- BCluster
- Собутыльник Кота
- Сообщения: 2512
- Зарегистрирован: Пн апр 06, 2009 19:33:29
- Откуда: Молдова, Кишинев
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
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 в вопросах и ответах
BCluster писал(а):Ващет в кодвижне имеется такой формат
PORTB.2 = 1;
или чтение
SomeVar = PIND.3;
Спасибо, BCluster. Это то что нужно.
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
а что скажет ваш кодвижн на подобное TCCR1B.1 =1? или ADCSRA.5 = 1? правда, понятная запись? сразу ясно, что я хотел этим достичь...BCluster писал(а):kotelectron писал(а):Как можно выкрутиться?
Ващет в кодвижне имеется такой формат
PORTB.2 = 1;
битва с дураками проиграна, победители торжествуют. слава победителям!
-
BerZerK-ku
- Мучитель микросхем
- Сообщения: 492
- Зарегистрирован: Вт июл 22, 2008 08:10:54
Re: CodeVision AVR в вопросах и ответах
TCCR1B = (1 << WGM12) | (1 << CS11) | (1 << CS10);
Подобная запись тоже ни о чем не говорит, пока не залезешь в описание на МК
А вот если пользоваться комментариями, то любая запись станет понятной.
Подобная запись тоже ни о чем не говорит, пока не залезешь в описание на МК
А вот если пользоваться комментариями, то любая запись станет понятной.
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
коментарий должен пояснять алгоритмические нюансы, а не повторять тупо описание оператора Си на русском языке. просто млею, когда вижу такое:BerZerK-ku писал(а):TCCR1B = (1 << WGM12) | (1 << CS11) | (1 << CS10);
Подобная запись тоже ни о чем не говорит, пока не залезешь в описание на МК![]()
А вот если пользоваться комментариями, то любая запись станет понятной.
Код: Выделить всё
d++; // увеличиваем ширину на 1Код: Выделить всё
width++;Код: Выделить всё
shirina++;работать с МК без даташита вообще не рекомендуется, но при этом вовсе нет нужды лазить в него за каждым битом - по названиям битов буквально на третью попытку вырабатывается стойкая привычка. тем более что МЕСТО бита в регистре от версии к версии контроллера может поменяться, а название - нет.
битва с дураками проиграна, победители торжествуют. слава победителям!
-
BerZerK-ku
- Мучитель микросхем
- Сообщения: 492
- Зарегистрирован: Вт июл 22, 2008 08:10:54
Re: CodeVision AVR в вопросах и ответах
Каждый пишет программу и документирует так, как ему/им удобнее, тем более речь идет о любительских разработках. Избыток комментариев ухудшает читабельность кода, но ничего страшного в этом нет.-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
BerZerK-ku писал(а)::dont_know: Каждый пишет программу и документирует так, как ему/им удобнее, тем более речь идет о любительских разработках. Избыток комментариев ухудшает читабельность кода, но ничего страшного в этом нет.
я с вами и не спорю. вам и на красный свет можно дорогу переходить - ничего страшного в этом нет. главное, как вам удобно - так ведь? и правила и прочее - для дураков, вроде меня. удачи!
битва с дураками проиграна, победители торжествуют. слава победителям!
-
kotelectron
- Родился
- Сообщения: 7
- Зарегистрирован: Вт дек 20, 2011 13:33:46
Re: CodeVision AVR в вопросах и ответах
а что скажет ваш кодвижн на подобное TCCR1B.1 =1? или ADCSRA.5 = 1? правда, понятная запись? сразу ясно, ...
TCCR1B.WGM12 = 1;
-
BerZerK-ku
- Мучитель микросхем
- Сообщения: 492
- Зарегистрирован: Вт июл 22, 2008 08:10:54
Re: CodeVision AVR в вопросах и ответах
Подскажите, каким стандартом в работе руководствуетесь вы?Мастер Ломастер писал(а):я с вами и не спорю. вам и на красный свет можно дорогу переходить - ничего страшного в этом нет. главное, как вам удобно - так ведь? и правила и прочее - для дураков, вроде меня. удачи!
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 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 в вопросах и ответах
Мастер Ломастер писал(а):тоже хотите стать дураком? оставайтесь лучше умным
+
Docendo discimus
-
BerZerK-ku
- Мучитель микросхем
- Сообщения: 492
- Зарегистрирован: Вт июл 22, 2008 08:10:54
Re: CodeVision AVR в вопросах и ответах
Я тут один что-ли? Вы же пытаетесь объяснить людям как правильно писать. Зачем пересказывать своими словами, если есть возможность дать ссылку на стандарт-первоисточник?
А по теме: большая часть людей, которые задают тут вопросы, лишь поверхностно знакомы с С / МК. К чему им навязывать какие-то правила, забивая голову лишней информацией, если на данном этапе обучения от них не будет прока? Тот код, который начинающий пишет неделями, в будущем он переделает за день-другой.Барон Мюнхгаузен писал(а):Спой птичка, не стыдись
Последний раз редактировалось BerZerK-ku Вт дек 27, 2011 11:18:45, всего редактировалось 2 раза.