Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей... |
10.02.2009, 15:42
|
#121
|
Гражданин KAZUS.RU
Регистрация: 13.06.2005
Адрес: РК г.Павлодар
Сообщений: 866
Сказал спасибо: 99
Сказали Спасибо 216 раз(а) в 140 сообщении(ях)
|
Сообщение от avr123-nm-ru
|
[
Может лучше 5.11 full из соседней ветки
или с офсайта 5.20 демо полнофункционалбню.
|
Не на ту клавишу начал, кончно 5.11 full из соседней ветки
__________________
Не ошибается лишь тот, кто ни чего не делает!
|
|
|
|
10.02.2009, 16:14
|
#122
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Сообщение от woroba
|
1)Молчание об ошибках и предупреждениях. Не было никаких предупреждений когда я пытался без макроса присвоить значение переменной в EEPROM, когда я передавал функции
void name (unsigned int a), значение unsigned char
и из чего функция возвращала че попало.
|
Это нормальное поведение компилятора. Эти типы совместимы и при смешанных операциях производится автоматическое преобразование char к int. Привыкайте - ибо стандарт. С еепром действительно сложности, но я их уже описал. Проблема в многоплатформенности компилятора. Он ведь не затачивается под конкретно АВР, а работает и под АРМ и под х86 и под MSP430 и т.д. У всех по разному строится работа с памятью организованной в отдельном адресном пространстве. На самом деле проблемы нет, я не пользуюсь макросами из eeprom.h, чего и всем советую. Надо писать свои функции, с проверкой того, что уже записано например. Зачем перезаписывать 0xAA на 0xAA? Только тратить время и ресурс еепром. И 10мс это катастрофически большое время. В системе с более-менее реалтаймовой реакцией на события это недопустимо в принципе. А если записывается не 1-2 байта, а например 8?
Сообщение от woroba
|
2)Не удобство в работе с битовыми операциями.
|
Вполне удобно. Пример по мотивам Вашей программы:
Код:
|
#define COOLER_ON() PORTD |=(1‹‹PD4)
...
int main(void)
{
....
COOLER_ON();
... |
Наглядно, легко запомнить и обладает самодокументируемостью, т.е. не требует комментария. Смысл действия сразу понятен. При изменении проекта, например кулер переехал на другой порт и другой вывод достаточно изменить всего одну строку.
Сообщение от woroba
|
3)Не преемственность версий. Старые макросы отменяются, новые вводяться.Поэтому старые проекты не компиляться в новых.
|
Интересное мнение. Вот Вы пользуетесь SIGNAL для описания обработчика прерываний. А знаете, что он давно не поддерживается, вместо этого введен ISR. Почувствовали какие то неудобства? Давайте пример старых макросов.
Сообщение от woroba
|
4)Ну и наконец увлекательная борьба с оптимизатором.Например
sind=2;
_delay_ms(1000.0);
sind=3;
от этой переменной зависит, что будет выводится на 7ми сегментный индикатор. А оптимизатор считает , а на фига промежуточное значение, давай сразу последнее.
|
Конечно. Но если хотя бы поверхностно почитать книгу по С, то всплывет интересный квалификатор - volatile. Именно с его помощью можно объяснить компилятору, что то что он хочет выкинуть выкидывать нельзя. Что это не ошибка программиста. Иначе - оптимизатору зеленый свет.
Сообщение от woroba
|
Вобщем пошел грузить IAR4.11, как отлажу эту прогу в нем, сравним ощушения.
Здесь работающий проект в двух компиляторах.
|
Я ведь не зря предложил переписать программу под ГЦЦ. В ней слишком много такого, что не понравится оптимизатору. Ваша программа легко влезет в 1,5Кб. Если поднапрячься, то и в 1Кб войдет.[/code]
Прикрепленный файл: 7593101.rar
|
|
|
|
10.02.2009, 16:41
|
#123
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Сообщение от kison
|
Надо писать свои функции
|
А че тогда было так переживать о закрытости библиотек CVAVR ? вы ж все рано свои писать рекомендуете.
Сообщение от kison
|
Зачем перезаписывать 0xAA на 0xAA? Только тратить время и ресурс еепром. И 10мс это катастрофически большое время.
|
Интересно !!! а как же вы в алгоритме УГАДАЕТЕ будет ли производится запись в епром или нет ?
Ни как. Значит 10 мС полюбому резервировать придется.
Сообщение от kison
|
Я ведь не зря предложил переписать программу под ГЦЦ. В ней слишком много такого, что не понравится оптимизатору. Ваша программа легко влезет в 1,5Кб. Если поднапрячься, то и в 1Кб войдет.
|
Дак это мастерство программиста.
Возможно она и в CVAVR будет еще меньше если кто-то более опытный ее оптимизирует под CVAVR .
Речь то о КОМПИЛЯТОРАХ а не о программистах.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
10.02.2009, 16:45
|
#124
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Тем более CVAVR я как раз и советую новичкам у которых НЕТУ опыта.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
10.02.2009, 16:50
|
#125
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
в WinAVR до 1896 уменьшился пишут:
Цитата:
|
просто Все функции, кроме contmp, объявил static.
|
http://telesys.ru/wwwboards/mcontrol...s/711691.shtml
Вот эо ЖЕСТЬ !!!
Цитата:
|
Это CodeVision с областями видимости не заморачивается, а не GCC тупит. Просто нужно знать как работать конкретным инструментом.
|
Вот потому-то начинающим CVAVR в самый раз ! ИМХО.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
10.02.2009, 17:14
|
#126
|
Гражданин KAZUS.RU
Регистрация: 13.06.2005
Адрес: РК г.Павлодар
Сообщений: 866
Сказал спасибо: 99
Сказали Спасибо 216 раз(а) в 140 сообщении(ях)
|
Сообщение от avr123-nm-ru
|
в WinAVR до 1896 уменьшился
|
Да только там ещё 270 байт закоментированно по сравнению с CV. Приплюсуйте.
__________________
Не ошибается лишь тот, кто ни чего не делает!
|
|
|
|
10.02.2009, 17:18
|
#127
|
Частый гость
Регистрация: 30.05.2006
Сообщений: 22
Сказал спасибо: 6
Сказали Спасибо 3 раз(а) в 3 сообщении(ях)
|
Вопрос по поводу Atman: он free или тоже денёг хотят? Растолкуйте, пож-та.
|
|
|
|
10.02.2009, 17:18
|
#128
|
Почётный гражданин KAZUS.RU
Регистрация: 13.05.2006
Адрес: Москва
Сообщений: 3,559
Сказал спасибо: 76
Сказали Спасибо 326 раз(а) в 230 сообщении(ях)
|
Я там написал что не смог скачать с сахапы, просил на slil.ru положить.
__________________
Обучалка AVR PIC ARM начинающим программирование курс самоучитель шаг за шагом с нуля, CVAVR, PROTEUS, MPLAB, WinAVR, IAR, KEIL электроника - http://proavr.narod.ru
|
|
|
|
10.02.2009, 17:54
|
#129
|
Почётный гражданин KAZUS.RU
Регистрация: 13.12.2004
Сообщений: 3,172
Сказал спасибо: 11
Сказали Спасибо 692 раз(а) в 504 сообщении(ях)
|
Сообщение от avr123-nm-ru
|
А че тогда было так переживать о закрытости библиотек CVAVR ? вы ж все рано свои писать рекомендуете.
|
Я где то говорил - "переписать все"? Или всего одну, работающую с еепром? Причем при желании я могу сделать на основе существующей - исходники ведь есть.
Правда в данном конкретном случае это не имеет смысла, очень уж отличны алгоритмы записи.
Сообщение от avr123-nm-ru
|
Интересно !!! а как же вы в алгоритме УГАДАЕТЕ будет ли производится запись в епром или нет ?
|
Вопрос офигенный. Я угадывать не буду, я либо предусмотрю в алгоритме необходимость записи либо не предусмотрю. Зачем гадать?
Сообщение от avr123-nm-ru
|
Ни как. Значит 10 мС полюбому резервировать придется.
|
Хм. Значит то что у меня работает - волшебство? Я об этом не знал, даже 10мс предусмотреть не могу, алгоритм не позволяет. А логи/журналы пишу по 10-20 байт.
Сообщение от avr123-nm-ru
|
Дак это мастерство программиста.
Возможно она и в CVAVR будет еще меньше если кто-то более опытный ее оптимизирует под CVAVR .
|
Дело ведь не только в размере. Есть и другие факторы - быстродействие например. Обычно получение конечного продукта результат компромисса между этими двумя параметрами. Иногда важно одно, иногда другое. Сейчас уже скорость чаще важней. Кремний дешев, всегда можно взять кристалл с большей флешью. А большее быстродействие позволяет уменьшить тактовую - падает потребление к примеру. Да и частота конечна, практически все АВР имеют одинаковую максимальную тактовую, так что тут следующий кристалл не возьмешь.
Сообщение от avr123-nm-ru
|
Речь то о КОМПИЛЯТОРАХ а не о программистах.
|
Конечно. Но неправильно написанная программа работать не будет в правильном компиляторе. Вот и сейчас последний вариант неработоспособен. Я только бегло просмотрел:
Код:
|
unsigned char CPRG=0;
...
CPRG=25; //25*0.2=5S CPRG-- IN T0
while (CPRG›0)MTIME=varprg (99,MTIME); |
Зависон гарантирован на любом уровне оптимизации кроме O0. Пока программист не усвоит основные принципы результат радовать не будет.
|
|
|
|
10.02.2009, 18:06
|
#130
|
Гражданин KAZUS.RU
Регистрация: 13.06.2005
Адрес: РК г.Павлодар
Сообщений: 866
Сказал спасибо: 99
Сказали Спасибо 216 раз(а) в 140 сообщении(ях)
|
Сообщение от kison
|
Код:
|
unsigned char CPRG=0;
...
CPRG=25; //25*0.2=5S CPRG-- IN T0
while (CPRG›0)MTIME=varprg (99,MTIME); |
Зависон гарантирован на любом уровне оптимизации кроме O0. Пока программист не усвоит основные принципы результат радовать не будет.
|
Ничего подобного,CPRG декременируется в это время через каждые 60mS в таймере и никакого зависания.
Код рабочий.
И вообще я в самом начале говорил давайте обсуждать компиляторы, а не предложенный алгоритм(каким бы кривым он не был, это во первых.
А во вторых я вам предлагал напишите свои правильные программы в двух вариантах для GCC и CV и давайте их протестим!
__________________
Не ошибается лишь тот, кто ни чего не делает!
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 00:54.
|
|