Ну да это точно проще чем винду переставить, ппцjava писал(а):СпасибоНет, я лучше подберу где-нибудь на свалке старенький комп, специально для программатора.
CodeVision AVR в вопросах и ответах
- BCluster
- Собутыльник Кота
- Сообщения: 2512
- Зарегистрирован: Пн апр 06, 2009 19:33:29
- Откуда: Молдова, Кишинев
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
- Реклама
- volt133
- Открыл глаза
- Сообщения: 45
- Зарегистрирован: Вс ноя 29, 2009 10:32:34
- Откуда: Воронеж
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
как не старался пишет что проблема с доступом к файлу IOPORT.sys хоть с правами админа запускал хоть без них, и с установкой тоже самое
- BCluster
- Собутыльник Кота
- Сообщения: 2512
- Зарегистрирован: Пн апр 06, 2009 19:33:29
- Откуда: Молдова, Кишинев
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
а файл-то есть?))) семерка 64 бита?
-
a.garkin
- Нашел транзистор. Понюхал.
- Сообщения: 175
- Зарегистрирован: Вт сен 29, 2009 09:28:51
- Откуда: Ульяновск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Привет!
Подскажите в чем может быть дело?
Взял за основу http://chipenable.ru/index.php/programm ... llere.html
Решил добавить туда термометр в проект, добавил также модульно т.е отдельным файлом. Все компилируется/работает. Но!!! температура с датчика опрашивается один раз, сбрасываю контроллер и если температура изменилась то и на дисплеи меняется, т.е не работает цикл. Подскажите как правильно написать цикл? while (1) в оде термометра не работает ибо просто программа доходит до этого места и по кругу, т.е часы перестают идти...
Подскажите в чем может быть дело?
Взял за основу http://chipenable.ru/index.php/programm ... llere.html
Решил добавить туда термометр в проект, добавил также модульно т.е отдельным файлом. Все компилируется/работает. Но!!! температура с датчика опрашивается один раз, сбрасываю контроллер и если температура изменилась то и на дисплеи меняется, т.е не работает цикл. Подскажите как правильно написать цикл? while (1) в оде термометра не работает ибо просто программа доходит до этого места и по кругу, т.е часы перестают идти...
- java
- Держит паяльник хвостом
- Сообщения: 962
- Зарегистрирован: Вт янв 04, 2011 13:26:17
- Откуда: Лен.Обл.
Re: CodeVision AVR в вопросах и ответах
Не вижу смысла.Винду я сам не ставлю, отдаю знакомому, он ставит свою, перебранную гибрид из ХР и висты. Так вот, я проверял программатор на ноутбуке и двух стареньких компах, он работал нормально, а система стоит на всех одинаковая, и на моём компе тоже. Это засада в железе. жаль конечно, придётся для программирования держать ноут.BCluster писал(а):Ну да это точно проще чем винду переставить, ппц
Пишу с ошибками и опечатками.На это у меня есть разрешение и справка
- Реклама
-
clawham
- Поставщик валерьянки для Кота
- Сообщения: 1957
- Зарегистрирован: Пт окт 31, 2008 09:38:55
- Откуда: Одесса
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
ну тогда вам прийдётся попросить своего человека поставить вам или нормальную винду стандартную или собственно семерку....ибо нет никаких гибридов висты и XP ... просто на хрюшку навешивают всякие сторонние глючные программы украшалки которые потом боком и вылазят....кроме того даже если они (системы) установлены с одного диска на нотик и на ББ - они всёравно разные ибо материнки, звуковухи, системные конекторы, чипсет и прочик вещи - разные а значит и разные драйвера и разные утилиты для этих драйверов подгрузились...результат - внешне одинаковые внутри полная противоположность...
вывод...поставьте ЧИСТУЮ винду, поставьте родные драйвера с сайта производителя материнки, поиграйтесь с настройками в биосе, проверьте питание - мож там кабелек длинный и тонких мож предохранитель самовосстанавливающийся устал мож ещё что...да малоли...
вывод...поставьте ЧИСТУЮ винду, поставьте родные драйвера с сайта производителя материнки, поиграйтесь с настройками в биосе, проверьте питание - мож там кабелек длинный и тонких мож предохранитель самовосстанавливающийся устал мож ещё что...да малоли...
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.
Не доверяйте русским лужам - это может быть вход в метро.
- BCluster
- Собутыльник Кота
- Сообщения: 2512
- Зарегистрирован: Пн апр 06, 2009 19:33:29
- Откуда: Молдова, Кишинев
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
псц... может стоит начать с обучения установке винды?)java писал(а):Не вижу смысла.Винду я сам не ставлю, отдаю знакомому
- Avarges
- Вымогатель припоя
- Сообщения: 512
- Зарегистрирован: Вт дек 22, 2009 02:24:50
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Можно в обработчик прерывания опрос датчика добавитьa.garkin писал(а):часы перестают идти...
cюда
__interrupt void Timer1CompA(void)
{
ES_PlaceEvent(EVENT_SYS_TIMER);
}
Re: CodeVision AVR в вопросах и ответах
подскажите, пожалуйста, как изменить код, чтобы индикатор показывал температуру с 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 ); }
}
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 в вопросах и ответах
для одной десятой, соответственно, %5.1fvbif87 писал(а): //для вывода значения температуры с точностью до одной сотой, %u заменить на %.3f ( диапазон 0-3 )
//переменную temper нужно записать как float temper;
битва с дураками проиграна, победители торжествуют. слава победителям!
Re: CodeVision AVR в вопросах и ответах
спасибо. все получилось.
- levaclaus
- Потрогал лапой паяльник
- Сообщения: 302
- Зарегистрирован: Пн янв 07, 2008 16:56:28
- Откуда: Минск
Re: CodeVision AVR в вопросах и ответах
вопрос, как в динамике включить отображение точки?
число 25.5 выводится как 255
Есть массив
****
счас десятые отключены, но без дела пропадает один знакосегмент
число 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);
};
}Re: CodeVision AVR в вопросах и ответах
Смотрю я на Ваш массив для семисегментника и не пойму. Почему при 7ми сегментах в индикаторе Вы используете все восемь битов в байте? По логике: первые 7 бит содержат форму цифры, а оставшийся 8й бит идет под точку. Просто в нужный момент при отображении к выводимому коду присоединяете бит точки (например 0b00000111 - это число 7, поставить точку 0b00000111|(1<<7)).
Не умееш - не берись, но не взявшись не научишся.
- levaclaus
- Потрогал лапой паяльник
- Сообщения: 302
- Зарегистрирован: Пн янв 07, 2008 16:56:28
- Откуда: Минск
Re: CodeVision AVR в вопросах и ответах
у меня точка - 6 бит.
о0
понял, есть к примеру
0b11111011, //8-
надо к нему прибавить
0b00000100
будет 8.
А как это записать?
о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 в вопросах и ответах
замечательноМастер Ломастер писал(а):почитайте о том, как делать динамическую индикацию на 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 в вопросах и ответах
вообщем сделаем проще
if znach > 9.9
включаем второй сегмент
if znach > 0<10
включаем первый сегмент
if znach <0 >-9.9
включаем второй сегмент
if znach < -10
включаем третий сегмент
А теперь подскажите как эти условия написать?
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 в вопросах и ответах
спасибо за совет
я с вами полностью согласен
я с вами полностью согласен
- java
- Держит паяльник хвостом
- Сообщения: 962
- Зарегистрирован: Вт янв 04, 2011 13:26:17
- Откуда: Лен.Обл.
Re: CodeVision AVR в вопросах и ответах
Если есть на русском языке где можно почитать как работать с CodeVision AVR, дайте плиз ссылку.
Пишу с ошибками и опечатками.На это у меня есть разрешение и справка


