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

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

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

Сообщение BCluster »

java писал(а):Спасибо :shock: Нет, я лучше подберу где-нибудь на свалке старенький комп, специально для программатора.

Ну да это точно проще чем винду переставить, ппц :)
Аватара пользователя
volt133
Открыл глаза
Сообщения: 45
Зарегистрирован: Вс ноя 29, 2009 10:32:34
Откуда: Воронеж
Контактная информация:

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

Сообщение volt133 »

как не старался пишет что проблема с доступом к файлу IOPORT.sys хоть с правами админа запускал хоть без них, и с установкой тоже самое
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

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

Сообщение BCluster »

а файл-то есть?))) семерка 64 бита?
a.garkin
Нашел транзистор. Понюхал.
Сообщения: 175
Зарегистрирован: Вт сен 29, 2009 09:28:51
Откуда: Ульяновск
Контактная информация:

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

Сообщение a.garkin »

Привет!
Подскажите в чем может быть дело?
Взял за основу http://chipenable.ru/index.php/programm ... llere.html
Решил добавить туда термометр в проект, добавил также модульно т.е отдельным файлом. Все компилируется/работает. Но!!! температура с датчика опрашивается один раз, сбрасываю контроллер и если температура изменилась то и на дисплеи меняется, т.е не работает цикл. Подскажите как правильно написать цикл? while (1) в оде термометра не работает ибо просто программа доходит до этого места и по кругу, т.е часы перестают идти...
Аватара пользователя
java
Держит паяльник хвостом
Сообщения: 962
Зарегистрирован: Вт янв 04, 2011 13:26:17
Откуда: Лен.Обл.

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

Сообщение java »

BCluster писал(а):Ну да это точно проще чем винду переставить, ппц :)

Не вижу смысла.Винду я сам не ставлю, отдаю знакомому, он ставит свою, перебранную гибрид из ХР и висты. Так вот, я проверял программатор на ноутбуке и двух стареньких компах, он работал нормально, а система стоит на всех одинаковая, и на моём компе тоже. Это засада в железе. жаль конечно, придётся для программирования держать ноут.
Пишу с ошибками и опечатками.На это у меня есть разрешение и справка
clawham
Поставщик валерьянки для Кота
Сообщения: 1957
Зарегистрирован: Пт окт 31, 2008 09:38:55
Откуда: Одесса
Контактная информация:

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

Сообщение clawham »

ну тогда вам прийдётся попросить своего человека поставить вам или нормальную винду стандартную или собственно семерку....ибо нет никаких гибридов висты и XP ... просто на хрюшку навешивают всякие сторонние глючные программы украшалки которые потом боком и вылазят....кроме того даже если они (системы) установлены с одного диска на нотик и на ББ - они всёравно разные ибо материнки, звуковухи, системные конекторы, чипсет и прочик вещи - разные а значит и разные драйвера и разные утилиты для этих драйверов подгрузились...результат - внешне одинаковые внутри полная противоположность...

вывод...поставьте ЧИСТУЮ винду, поставьте родные драйвера с сайта производителя материнки, поиграйтесь с настройками в биосе, проверьте питание - мож там кабелек длинный и тонких мож предохранитель самовосстанавливающийся устал мож ещё что...да малоли...
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

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

Сообщение BCluster »

java писал(а):Не вижу смысла.Винду я сам не ставлю, отдаю знакомому

псц... может стоит начать с обучения установке винды?)
Аватара пользователя
Avarges
Вымогатель припоя
Сообщения: 512
Зарегистрирован: Вт дек 22, 2009 02:24:50
Контактная информация:

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

Сообщение Avarges »

a.garkin писал(а):часы перестают идти...

Можно в обработчик прерывания опрос датчика добавить

cюда
__interrupt void Timer1CompA(void)
{
ES_PlaceEvent(EVENT_SYS_TIMER);
}
vbif87
Открыл глаза
Сообщения: 67
Зарегистрирован: Пн мар 03, 2008 22:12:47

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

Сообщение vbif87 »

подскажите, пожалуйста, как изменить код, чтобы индикатор показывал температуру с 2 знаками после запятой и еще минусовую температуру. Большое спасибо!

int temper; //Переменая для хранения значения температуры
unsigned char lcdBuff[16]; //Массив для хранения фоматированной строки

#pragma rl+
char *str1="найден датчик ds18b20";
char *str2="датчик ds18b20 отсутствует";
#pragma rl-

void main( void )
{
lcd_init( 16 );
lcd_clear( );

if( ds18b20_init( 0, 30, 60, DS18B20_12BIT_RES ) )
//инициализация датчика. Анализ присутствия датчика
//функция возвращает 1 если датчик присутствует на линии
{
lcd_clear( ); lcd_puts( str1 ); delay_ms( 1000 );

while( 1 ){

temper=ds18b20_temperature( 0 );//Чтение температуры, адрес нуль

sprintf( lcdBuff,"t %u\xdfC", temper ); //помещаем форматированую строку в массив
//для вывода значения температуры с точностью до одной сотой, %u заменить на %.3f ( диапазон 0-3 )
//переменную temper нужно записать как float temper;
//выводим на индикатор значение температуры
lcd_clear( ); lcd_gotoxy( 0,0 ); lcd_puts( lcdBuff ); }

}else{ lcd_clear( ); lcd_puts( str2 ); }

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

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

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

vbif87 писал(а): //для вывода значения температуры с точностью до одной сотой, %u заменить на %.3f ( диапазон 0-3 )
//переменную temper нужно записать как float temper;

для одной десятой, соответственно, %5.1f
битва с дураками проиграна, победители торжествуют. слава победителям!
vbif87
Открыл глаза
Сообщения: 67
Зарегистрирован: Пн мар 03, 2008 22:12:47

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

Сообщение vbif87 »

спасибо. все получилось.
Аватара пользователя
levaclaus
Потрогал лапой паяльник
Сообщения: 302
Зарегистрирован: Пн янв 07, 2008 16:56:28
Откуда: Минск

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

Сообщение levaclaus »

вопрос, как в динамике включить отображение точки?
число 25.5 выводится как 255
Есть массив

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

unsigned char digit_ar[14]      =  {0b11111010,     //0-
                                    0b10000010,     //1-
                                    0b10111001,     //2-
                                    0b10101011,     //3-
                                    0b11000011,     //4-
                                    0b01101011,     //5-
                                    0b01111011,     //6-
                                    0b10100010,     //7-
                                    0b11111011,     //8-
                                    0b11101011,     //9-
                                    0b00000100,     //. -
                                    0b00000000,     // empty
                                    0b00000001,     //-
                                    0b11100001      //значок градуса
                                    };   

****
счас десятые отключены, но без дела пропадает один знакосегмент

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

void main(void)
{
    float znach;
    unsigned char str1[3];
    ds18b20_init(0,0,0,0);
    avr_init();
#asm("sei");   
 while (1)
 {
znach=ds18b20_temperature(0);
itoa((int)znach, str);
str1[0] = '+';
strcat(str, str1);
 };
}
Rusja2008
Открыл глаза
Сообщения: 68
Зарегистрирован: Пн окт 06, 2008 15:51:58
Откуда: Черкассы

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

Сообщение Rusja2008 »

Смотрю я на Ваш массив для семисегментника и не пойму. Почему при 7ми сегментах в индикаторе Вы используете все восемь битов в байте? По логике: первые 7 бит содержат форму цифры, а оставшийся 8й бит идет под точку. Просто в нужный момент при отображении к выводимому коду присоединяете бит точки (например 0b00000111 - это число 7, поставить точку 0b00000111|(1<<7)).
Не умееш - не берись, но не взявшись не научишся.
Аватара пользователя
levaclaus
Потрогал лапой паяльник
Сообщения: 302
Зарегистрирован: Пн янв 07, 2008 16:56:28
Откуда: Минск

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

Сообщение levaclaus »

у меня точка - 6 бит.
о0
понял, есть к примеру
0b11111011, //8-
надо к нему прибавить
0b00000100

будет 8.

А как это записать?

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

void avr_init(void); 
//Timer 0 interrupt
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
    unsigned char m;
    bit c;
   
    TCNT0  = 0;

    if (str[SignPlace] == '.') {          //вывести знак "точка"
        m = 10;
        c   = 1;
    };
    if (str[SignPlace] == '+') {          //вывести знак "градус"
        m = 13;
        c   = 1;
    };
    if (str[SignPlace] == '-') {          //вывести знак "минус"
        m = 12;
        c   = 1;
    };     
    if (str[SignPlace] == ' ') {          //вывести знак "пробел"
        m = 11;
        c   = 1;
    };

    if (isprint(str[SignPlace]) == 0) {   
       m = 11;
       c   = 1;
    };
   
    if (c == 0) {
        m   = toint(str[SignPlace]);
    }
                           
    PORTD   = 0;
    PORTB   = 0;
    PORTB   =   digit_ar[m];
    PORTD   =   SPlace_ar[SignPlace];
   
 c = 0;
 SignPlace = SignPlace + 1;
 if (SignPlace == 4) SignPlace = 0;

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

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

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

почитайте о том, как делать динамическую индикацию на 7-сегментниках, и тогда вопрос "как добавить точку" у вас должен отпасть сам собой.
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
levaclaus
Потрогал лапой паяльник
Сообщения: 302
Зарегистрирован: Пн янв 07, 2008 16:56:28
Откуда: Минск

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

Сообщение levaclaus »

Мастер Ломастер писал(а):почитайте о том, как делать динамическую индикацию на 7-сегментниках, и тогда вопрос "как добавить точку" у вас должен отпасть сам собой.

замечательно
статья гуд, но как быть с отрицательным числом? разряд то смещается.
есть и
25.5*
5.5*_
-5.5*
-25.5
или сдвигать всё вправо, всёравно не поможет, на двузначном отрицательном числе точка стоит в 3 разряде,
во втором при отрицательном однозначном, в первом при однозначном положительном числе.

Как учесть знак минус, при этом смещается знак градус или вообще не выводится?
и потом

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

 
#define COMMA_CHAR '.'

unsigned char SPlace_ar[4]      = { 0b01000000,
                                    0b00100000,
                                    0b00010000,
                                    0b00001000};

****
float znach;
****

while (1)
 {
znach=ds18b20_temperature(0)*10;
itoa((int)znach, str);
SPlace_ar[4-1] |=COMMA_CHAR;
 };

ничего не выводтся, на экране мусор
Аватара пользователя
levaclaus
Потрогал лапой паяльник
Сообщения: 302
Зарегистрирован: Пн янв 07, 2008 16:56:28
Откуда: Минск

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

Сообщение levaclaus »

вообщем сделаем проще

if znach > 9.9
включаем второй сегмент
if znach > 0<10
включаем первый сегмент
if znach <0 >-9.9
включаем второй сегмент
if znach < -10
включаем третий сегмент

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

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

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

levaclaus писал(а):статья гуд, но как быть с отрицательным числом? разряд то смещается.
ититьтвоючерезкоромыслопустымведромпоголове!
как быть? есть 2 варианта:
1. все-таки потратить часть своего драгоценного времени на изучения языка программирования
2. продолжать бомбить форум своими вопросами, делая все на автопилоте.

второй путь, естественно, предпочтительнее, т.к. всегда найдется идиот, который даст ответ. например, я:

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

massiv[4] - это 4 ваших индикатора.
out() - это функция, которая тупо выводит 3 разряда числа в этот массив "с конца", вроде как было описано в вышеупомянутой статье
temp - ваша температура, которая может быть с минусом
MINUS - макрос, задающий отображение знака минус
COMMA - макрос, задающий свечение точки на индикаторе

if(temp < 0){ // если температура отрицательная,
   out(-temp);  // то выводим ее по модулю и
   massiv[0] = MINUS;  // в первом индикаторе зажигаем минус
} else { // а если положительная,
   out(temp); // то выводим ее, как есть
   massiv[0] = 0;  // и гасим первый индикатор
}
massiv[2] |= COMMA; // а потом тупо добавляем точку к нужному разряду
битва с дураками проиграна, победители торжествуют. слава победителям!
Аватара пользователя
levaclaus
Потрогал лапой паяльник
Сообщения: 302
Зарегистрирован: Пн янв 07, 2008 16:56:28
Откуда: Минск

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

Сообщение levaclaus »

спасибо за совет
я с вами полностью согласен
Аватара пользователя
java
Держит паяльник хвостом
Сообщения: 962
Зарегистрирован: Вт янв 04, 2011 13:26:17
Откуда: Лен.Обл.

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

Сообщение java »

Если есть на русском языке где можно почитать как работать с CodeVision AVR, дайте плиз ссылку.
Пишу с ошибками и опечатками.На это у меня есть разрешение и справка
Ответить

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