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

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

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

Сообщение ARV »

aam писал(а):ARV, такой код соответствует спецификации языка Си? И что будет генерить "правильный" компилятор по такому сишнику?
собственно говоря, и ваш (или не ваш) первоначальный код во всем соответствует спецификации Си, проблема лишь в том, понимаете ли вы сами эти спецификации :) я показал, что должен ожидать программист, знающий правила, и что получит программист, не нающий правил.

ваш вариант с UL - вполне правильное и нормальное решение проблемы - подробности вам уже рассказали. добавлю лишь, что для сохранения правильности вычислений достаточно, чтобы в цепочке одноприоритетных оперций суффикс UL был только у одной константы - остальные приведутся к этому типу автоматически. т.е. вместо 2000UL*3000UL достаточно писать 2000UL * 3000; но это мелочи :)))

кстати, та же песня и при вычислениях с использованием переменных. часто можно видеть что-то типа

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

int x,y,z;
int var = (long)(x * y + z);

это совершенно бессмысленная попытка добиться отсутствия переполнений - если в скобках все переменные типа int, то и результат будет не более int, и превращение его потом в long никак не изменить результат... правильно поступать так:

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

int x,y,z;
int var = (long)x * y + z;
вот в этом случае операнды выражения все станут 32-битными, и переполнения не будет :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
aam
Собутыльник Кота
Сообщения: 2994
Зарегистрирован: Сб фев 20, 2010 14:00:12
Откуда: Москва

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

Сообщение aam »

Так, с дефайнами все понятно...
Теперь остался вопрос про массив OCRов. Как их в массив загнать?
Аватара пользователя
avreal
Опытный кот
Сообщения: 842
Зарегистрирован: Чт дек 31, 2009 19:27:45
Откуда: Бровари, Україна
Контактная информация:

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

Сообщение avreal »

ARV ведь уже писал — их никак, так как они на своих местах лежат. В массив можно загнать указатели на них.
Если CodeVision этого не умеет, а оно очень нужно — в очередной раз подумайте, насколько Вам нужен компилятор, котрый такого не умеет. Вот так вот потихоньку и поймёте, почему многие называют CodeVisionAVR не «компилятором языка С», а «компилятором С-подобного языка». В этом факте ничего плохого нет, можно писать довольно сложне и вполне хорошие программы, просто не все возможности доступны.

Только они же не совсем одинаковые, таймер 0 и 2 восьмибитные, а 1— шестнадцатибитный, разные указатели получаются. В линейном коде компилятор и так видит, что они разные, а в цикле нужно будет ещё по какому-то флагу смотреть, делать 16-битное обращение или 8-битное.
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
Аватара пользователя
aam
Собутыльник Кота
Сообщения: 2994
Зарегистрирован: Сб фев 20, 2010 14:00:12
Откуда: Москва

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

Сообщение aam »

avreal писал(а):В массив можно загнать указатели на них.

Вот что-то не получается
avreal писал(а):в очередной раз подумайте, насколько Вам нужен компилятор

Так у меня вся прога под CodeVision написана уже.
avreal писал(а):Только они же не совсем одинаковые, таймер 0 и 2 восьмибитные, а 1— шестнадцатибитный

Вот это меня тоже смущает. Но с другой стороны, у меня все равно ШИМ 8-разрядный. Нельзя работать только с половинкой OCR1'ов - OCR1AL, OCR1BL?
Аватара пользователя
ValBag
Потрогал лапой паяльник
Сообщения: 326
Зарегистрирован: Сб сен 06, 2008 12:56:13

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

Сообщение ValBag »

avreal писал(а):В массив можно загнать указатели на них. Если CodeVision этого не умеет...
Не умеет - пробовал. Имеется в виду по адресам регистров.
Так же, не может создать массив с битовыми переменными "bit". Может еще чего ...не может :(
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

ValBag писал(а):
avreal писал(а):В массив можно загнать указатели на них. Если CodeVision этого не умеет...
Не умеет - пробовал. Имеется в виду по адресам регистров.
Так же, не может создать массив с битовыми переменными "bit". Может еще чего ...не может :(
битовые переменные - это вообще нонсенс для Си.
в конце-концов вы можете записать в массив не символьные обозначение регистра &OCR1А, а его реальный адрес в ОЗУ 0x004A - и все. проблема лишь в том, что для разных МК адреса "похожих" регистров могут быть разными - исчезает переносимость программ...
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
ValBag
Потрогал лапой паяльник
Сообщения: 326
Зарегистрирован: Сб сен 06, 2008 12:56:13

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

Сообщение ValBag »

ARV писал(а):в конце-концов вы можете записать в массив не символьные обозначение регистра &OCR1А, а его реальный адрес в ОЗУ 0x004A - и все.
Реальных адресов два: в регистровой памяти и в ОЗУ. Ни тот, ни другой - в массив не загоняются. А как в WinAVR?
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

ValBag писал(а):
ARV писал(а):в конце-концов вы можете записать в массив не символьные обозначение регистра &OCR1А, а его реальный адрес в ОЗУ 0x004A - и все.
Реальных адресов два: в регистровой памяти и в ОЗУ. Ни тот, ни другой - в массив не загоняются. А как в WinAVR?
вас должен интересовать адрес в ОЗУ. как это он не загоняется в массив?! да быть того не может! в массив можно загнать ЛЮБОЕ число!!!!

в WinAVR я вам уже говорил: все просто, там можно присвоить указателю адрес регистра ввода-вывода и пользоваться.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
ValBag
Потрогал лапой паяльник
Сообщения: 326
Зарегистрирован: Сб сен 06, 2008 12:56:13

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

Сообщение ValBag »

ARV писал(а): как это он не загоняется в массив?! да быть того не может! в массив можно загнать ЛЮБОЕ число!!!!
Увы! На первый, регистровый адрес, компилятор сообщает, что не может использовать его указателем, а на второй ..."говорит", что нет ";" ?
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

ValBag писал(а):
ARV писал(а): как это он не загоняется в массив?! да быть того не может! в массив можно загнать ЛЮБОЕ число!!!!
Увы! На первый, регистровый адрес, компилятор сообщает, что не может использовать его указателем, а на второй ..."говорит", что нет ";" ?

вы хотите сказать, что запись типа unsigned char *ptr = (void*)0x004A; не прокатывает в вашем компиляторе?! тогда его надо бросить в чан с серной кислотой, чан закопать на 3 метра на горе Килиманджаро, и все это забыть, запив тремя литрами водки. и никогда не вспоминать!!!
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
m0use
Встал на лапы
Сообщения: 104
Зарегистрирован: Сб окт 09, 2010 22:18:34
Откуда: Ялта

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

Сообщение m0use »

помогите разобраться!

собрал программатор по этой ссылке http://avr.nikolaew.org/progr.htm для com порта.
вот печатка.правильно ли я её развёл.просто начинающий(

так вот...нужно прошить atmega 8!поставил codevisionavr, всё нормально но не могу его настроить(а может быть печатка не правильная((помогите
комп выдаёт такую ошибку
Вложения
программатор AVR.lay
(9.68 КБ) 385 скачиваний
Аватара пользователя
m0use
Встал на лапы
Сообщения: 104
Зарегистрирован: Сб окт 09, 2010 22:18:34
Откуда: Ялта

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

Сообщение m0use »

вот ошибка
Вложения
1.gif
(154.94 КБ) 398 скачиваний
Аватара пользователя
radio-kot
Собутыльник Кота
Сообщения: 2584
Зарегистрирован: Вт сен 14, 2010 10:27:19

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

Сообщение radio-kot »

Нет связи и куча возможных причин названа.
Будете проходить мимо- проходите!
Аватара пользователя
ValBag
Потрогал лапой паяльник
Сообщения: 326
Зарегистрирован: Сб сен 06, 2008 12:56:13

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

Сообщение ValBag »

ARV писал(а):вы хотите сказать, что запись типа unsigned char *ptr = (void*)0x004A; не прокатывает в вашем компиляторе?!
Спасибо за подсказку, моя ошибка, а не CVAVR. :? Я использовал адрес на неопределенный тип данных. Кстати, а почему "катит" здесь (void*), ведь это тоже неопределенная величина ?
Аватара пользователя
aam
Собутыльник Кота
Сообщения: 2994
Зарегистрирован: Сб фев 20, 2010 14:00:12
Откуда: Москва

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

Сообщение aam »

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

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

Сообщение ARV »

ValBag писал(а):Спасибо за подсказку, моя ошибка, а не CVAVR. :? Я использовал адрес на неопределенный тип данных. Кстати, а почему "катит" здесь (void*), ведь это тоже неопределенная величина ?
вообще говоря, должно прокатить и без (void*), разве что варнинг появится... а (void*) "катит" с любым указателем, потому что он совместим с любым типом указателей.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
aam
Собутыльник Кота
Сообщения: 2994
Зарегистрирован: Сб фев 20, 2010 14:00:12
Откуда: Москва

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

Сообщение aam »

Я собираюсь юзать ЖКИ 2х8. Стал читать мануал на CodeVision http://www.hpinfotech.ro/cvavrman.zip
Там вот что написано:
The following LCD formats are supported in alcd.h: 1x8,2x12, 3x12, 1x16, 2x16, 2x20, 4x20, 2x24 and 2x40 characters.
У меня правда lcd.h, а не alcd.h, инициализировал ЖКИ на 8 символов, в протеусе подцепил ЖКИ 16х2 (8х2 там нет) - вроде все пашет (2-я строчка выводится). А в натуре будет пахать?
Аватара пользователя
ValBag
Потрогал лапой паяльник
Сообщения: 326
Зарегистрирован: Сб сен 06, 2008 12:56:13

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

Сообщение ValBag »

ARV писал(а):вообще говоря, должно прокатить и без (void*), разве что варнинг появится...
Да, с приведением типа (unsigned char*) все нормально - без вопросов.
Аватара пользователя
Apparatchik
Держит паяльник хвостом
Сообщения: 908
Зарегистрирован: Вс май 23, 2010 13:55:42
Откуда: Украина, Александрия

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

Сообщение Apparatchik »

m0use писал(а):помогите разобраться!

собрал программатор по этой ссылке http://avr.nikolaew.org/progr.htm для com порта.
вот печатка.правильно ли я её развёл.просто начинающий(

так вот...нужно прошить atmega 8!поставил codevisionavr, всё нормально но не могу его настроить(а может быть печатка не правильная((помогите
комп выдаёт такую ошибку

По моиму эта схема работает только с программой на этом сайте, по крайней мере у меня работала, так что нужно скачать UNIPROF. А для CodeVisionAVR нужно собрать либо на LPT либо на USB
«И всё-таки она вертится!»
Аватара пользователя
Сериг
Это не хвост, это антенна
Сообщения: 1451
Зарегистрирован: Пт фев 19, 2010 19:39:28
Откуда: Москва

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

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

Ребята ,подскажите плз кто нибудь ,а то я стану пьющим... :)) вообщем так мега 48,тини 2313(2шт),прошиваю фьюзы,все норм работает светики моргают препрошиваю мк наверно раз 50,и все мк лочится,че такое?????????? :shock: :shock: :shock: :shock: :shock: причем 2ь тиньки так загубил их прошивал около 15 раз мега 48 50 раз и здохла,не видится он нетъ его! :shock: помогите пожалуйста очень надо!Благодарю за помощь!!!!! :?
Ответить

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