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

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

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

Сообщение ARV »

если вам интересно мое мнение, то не так вы делаете только одно - используете Code Vision.
в остальном - если до завтрашнего вечера не решите проблему - тряхну стариной, попробую ваш проект по-своему сделать.
а тини13 может не так уж и мало, если любя ее программировать.
я делал на ней лампу настроения с ИК-дистанционным управлением, диммер тоже с дистанционным управлением... так что нормально.
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Реклама
Аватара пользователя
scorpi_0n
Вымогатель припоя
Сообщения: 616
Зарегистрирован: Вс ноя 01, 2015 13:13:49

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

Сообщение scorpi_0n »

Cheburator писал(а):Ибо если этот МК не может справится с такой, на мой взгляд, элементарной задачей, то не понятно, что он вообще может.
Это вам так только кажется. Это у вас кода три строчки и кажется что всё просто. А за каждой строчкой увы не один десяток байт. Флоат и библиотеки и отнимают у вас практически всю память.
Реклама
Аватара пользователя
Cheburator
Грызет канифоль
Сообщения: 264
Зарегистрирован: Пт дек 07, 2012 22:50:01
Откуда: Moscow

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

Сообщение Cheburator »

ARV писал(а):если вам интересно мое мнение
Конечно, интересно. Поэтому я и задаю свои вопросы именно здесь. И очень благодарен за ответы.
На счет CodeVision - возможно, Вы правы. Я уже много слышал негатива об нем. Вот только ничего конкретного никто не говорит. Я не спорю, но что в нем все-таки не так, не понимаю. Странные и непонятные конструкции, который он создает, я заменяю на вполне для меня читаемые.
Посоветуйте что-нибудь лучше.
Ну, а я буду дальше пробовать решать проблему. Если не получится - буду рад помощи.
Спасибо за предложение! :beer:
scorpi_0n писал(а):А за каждой строчкой увы не один десяток байт. Флоат и библиотеки и отнимают у вас практически всю память.
Это я понимаю. Но что-то же может этот МК делать? Наверняка может, отвечаю я сам себе. А это значит, что это я что-то не так делаю. В этом-то и хочу разобраться.
А что подумал Кролик, никто не узнал, потому что он был очень воспитанный.
fatall_error
Первый раз сказал Мяу!
Сообщения: 22
Зарегистрирован: Ср сен 01, 2010 07:24:48

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

Сообщение fatall_error »

шутка на ночь


#include <tiny13a.h>
#include <1wire.h>
#include <ds18b20.h>

void main(void)
{
int temper=0;
DDRB=0b000100;
PORTB=0b000000;
w1_init();
ds18b20_init(0,10,90,DS18B20_12BIT_RES);
while (1)
{
// temper=ds18b20_temperature(0);
if (temper > 40) {PORTB=0b000100;
};
if (temper < 35) {PORTB=0b000000;
};
}
}


Вот так 58% памяти занимает :)
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Cheburator
Грызет канифоль
Сообщения: 264
Зарегистрирован: Пт дек 07, 2012 22:50:01
Откуда: Moscow

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

Сообщение Cheburator »

Шутку оценил! :)
На выходе всегда "0" будет... :(
Но за то в МК влезет! :)
А что подумал Кролик, никто не узнал, потому что он был очень воспитанный.
Реклама
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

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

Сообщение WiseLord »

Cheburator писал(а):Посоветуйте что-нибудь лучше.
Вам же уже посоветовали - не использовать библиотеку, которая работает с double внутри себя.

P.S. Стало интересно, влезет ли в 1кБ с нормальной библиотекой. Не поленился, потратил полчаса - результат в архиве. Здесь упрощённый вариант моей самописной библиотеки (без поддержки нескольких датчиков), который помещается в 360 байт кода. При этом есть проверка контрольной суммы, т.е. ошибки чтения не приведут к ложным срабатываниям.

Если делать полноценный вариант (с поиском всех датчиков на шине, автоопределением DS18S20/DS18B20) - получится около 800 байт кода, но не думаю, что в данном применении это нужно.

Код, естественно, под avr-gcc.
Вложения
t13temp.7z
(14.29 КБ) 188 скачиваний
Реклама
amd9800
Опытный кот
Сообщения: 822
Зарегистрирован: Вс июн 02, 2013 12:23:03

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

Сообщение amd9800 »

Cheburator писал(а):...
Я где то год назад сделал зарядку для LiON на Tiny13A.
Аппарат имел 7ми сегментный дисплей подключенный через регистр 595.
Кнопку.
И измерял Напряжение, Ток и считал Ампер часы которые вошли в аккумулятор.
Также когда аккумулятор был заряжен отключал микруху LM2596S.

Но моя ошибка состояла в том что я собрал девайс, а потом решил писать программу.
Первая версия программы вместилась в 1кб. Но когда стал ее улучшать выходил за размеры.
Вот и пришлось долго работать над оптимизацией программы и сильно сожалел что собрал на тиньке 13А, но уже было поздно.
Таким образом потерял много времени пока уместил все нужное. Размер программы ровно 1024 байта.
И все написано в CodevisionAVR.
Так что все уже зависит от вашего рвения закончить проект.

Также могу сказать что самое объемное в программе это управление 7-ми сегментным и расчет емкости.
Поскольку все это привязано к времени, а у тиньки всего лишь один таймер пришлось думать как оптимизировать код.
На атмеге 8 этот код занимал бы меньше места. Тем более у нее в 8 раз больше памяти. А если еще не пользоваться регистром 595 то еще экономнее было бы.
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

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

Сообщение WiseLord »

Ну, насчёт больших требований к управлению семисегментником - это не так. Один из моих первых проектов на AVR - вольтметр (для авто), компилируется всего в 378 байт кода (можно и оптимальнее сделать). На расчёт амперчасов оставшихся двух третей flash-памяти явно было бы достаточно.
amd9800
Опытный кот
Сообщения: 822
Зарегистрирован: Вс июн 02, 2013 12:23:03

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

Сообщение amd9800 »

WiseLord писал(а):Ну, насчёт больших требований к управлению семисегментником - это не так. Один из моих первых проектов на AVR - вольтметр (для авто), компилируется всего в 378 байт кода (можно и оптимальнее сделать).
Кто его знает? На каком МК делали? На тиньке13-ой? Использовали Регистр 595?
Pnjom-Penb
Мучитель микросхем
Сообщения: 469
Зарегистрирован: Вс авг 30, 2015 03:52:59

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

Сообщение Pnjom-Penb »

fatall_error писал(а):шутка на ночь ... Вот так 58% памяти занимает :)
Попробуйте printf с float'ом подключить - шутка утроится. :)))
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18546
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

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

Сообщение ARV »

WiseLord писал(а):Стало интересно, влезет ли в 1кБ с нормальной библиотекой. Не поленился, потратил полчаса - результат в архиве. Здесь упрощённый вариант моей самописной библиотеки (без поддержки нескольких датчиков), который помещается в 360 байт кода. При этом есть проверка контрольной суммы, т.е. ошибки чтения не приведут к ложным срабатываниям.
ну, вот и решилось все: мне не придется пробовать по-своему :)))
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
Cheburator
Грызет канифоль
Сообщения: 264
Зарегистрирован: Пт дек 07, 2012 22:50:01
Откуда: Moscow

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

Сообщение Cheburator »

WiseLord, большое спасибо!
Сейчас посмотрю. Постараюсь разобраться!
А так же спасибо всем, кто принял участие в моей проблеме!
========

Прошивка - да, работает, все отлично!
Разбираюсь в исходниках. Вернее, пытаюсь разобраться. Пока не очень получается. :(

========

Разобрался! :music:

Еще раз - огромное СПАСИБО всем, кто помогал! WiseLord - отдельная благодарность!
:beer:
А что подумал Кролик, никто не узнал, потому что он был очень воспитанный.
kk042fjv
Грызет канифоль
Сообщения: 261
Зарегистрирован: Ср авг 01, 2012 10:45:42

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

Сообщение kk042fjv »

Здравствуйте!
Подскажите, как сделать чтоб информация на LCD обновлялась когда я бы установил, т.е. вот стандартный код АЦП

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

#include <mega8.h>
#asm
   .equ __lcd_port=0x18 ;PORTB
#endasm
#include <lcd.h>
#include <delay.h>
#include <stdio.h>
char string[10];

void main(void)
{
int data;
float V;

ACSR=0x80;
SFIOR=0x00;
ADMUX=0;
ADCSR=0x85;

// LCD module initialization
lcd_init(16);
lcd_putsf("Work with ADC");

while (1)
      { delay_ms(20);
        ADCSR |= 0x40;
        data = ADCW;   
        V = (float) data*0.0048828;
        sprintf(string, "Data: %1.2f", V);
        lcd_gotoxy(0,1);
        lcd_puts(string);
      };
}
выводит информацию на LCD, но сигнал поступает импульсами в среднем раз в минуту, я хочу сделать, чтоб информация горела на LCD, и обновлялась после следующего сигнала. Подскажите как правильно сделать?
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

Порой люди сами не понимают что спрашивают...
Что значит "когда бы я установил" ? Это как ? Устанавливайте сами любой интервал времени обновления, в чём проблема ?
Что за "сигнал" приходит, после которого нужно обновление экрана ? Зачем вообще обновление синхронизировать с каким то там внешним сигналом ?
Собственно, вопрос из оперы "мысли вслух" - пишу то, о чём думаю...
kk042fjv
Грызет канифоль
Сообщения: 261
Зарегистрирован: Ср авг 01, 2012 10:45:42

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

Сообщение kk042fjv »

Может я неправильно вопрос задал.
Вот что я хочу получить, верней понять как это делается в коде
Изображение
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

Извините меня за прямоту, но Вы, видимо, сами не понимаете что Вам нужно сделать. Отсюда и непонимание как это сделать, и отсутствие возможности объяснить, что Вам нужно.
Ещё раз задам вопрос. Попытайтесь на него ответь, пусть не мне, но хотя-бы себе. Для чего нужно синхронизировать обновление экрана с каким-то там таинственным сигналом ? В чём таинственный смысл сих действий ? Измерение и вывод - совершенно две разные задачи, разделите их друг от друга.
kk042fjv
Грызет канифоль
Сообщения: 261
Зарегистрирован: Ср авг 01, 2012 10:45:42

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

Сообщение kk042fjv »

Аlex писал(а):Измерение и вывод - совершенно две разные задачи, разделите их друг от друга.
Ну допустим сделаем так:
ждем сигнал, замеряем, максимальное значение выводим на экран, ждем следующий сигнал, замеряем, обновляем значение
Аватара пользователя
WiseLord
Друг Кота
Сообщения: 4905
Зарегистрирован: Чт апр 11, 2013 11:19:59
Откуда: Минск
Контактная информация:

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

Сообщение WiseLord »

Т.е. сейчас на экране что-то вроде 0-0-0-2.8-2.8-0-0-0-0-0-0-2.5-2.5-0-0-0-0? А нужно выводить только пиковые значения?

Если так, то делайте как написали выше - измеряйте напряжение не постоянно в цикле (нулевые уровни в том числе), а только когда приходит пик.
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

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

Сообщение Аlex »

kk042fjv писал(а):ждем сигнал
Опять слышится эта таинственная фраза :) О каком "сигнале" идёт речь и что значит "ждём" ? Назревает снова мой предыдущий вопрос...
И причём тут АЦП ? АЦП не умеет ничего "ждать", оно просто преобразует напряжение в цифровое значение. И делает это в тот момент, который задаст программист.
kk042fjv
Грызет канифоль
Сообщения: 261
Зарегистрирован: Ср авг 01, 2012 10:45:42

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

Сообщение kk042fjv »

[quote="Аlex"][/quote]

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

if (V > 1){
значение выводим на экран
}
как то так что ли
Ответить

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