CodeVision AVR в вопросах и ответах
- Valek3306
- Встал на лапы
- Сообщения: 95
- Зарегистрирован: Вт авг 03, 2010 22:51:57
- Откуда: Санкт-Петербург
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
А нет ли у кого ни будь примера использования функции scanf() в CVAVR? Я ее попытался использовать, но при моделировании а Протеусе работает нормально до первый посылки 4 байтов, а потом появляется ошибка Pop Program stack: SP is not initialized
_____
Как использовать функцию scanf() разобрался, но она почему то работает только в бесконечном цикле, а мне надо ее по прерыванию приемника УАРТ использовать, но в прерывании она не работает почему то. Как ее правильно по прерыванию запустить?
_____
Как использовать функцию scanf() разобрался, но она почему то работает только в бесконечном цикле, а мне надо ее по прерыванию приемника УАРТ использовать, но в прерывании она не работает почему то. Как ее правильно по прерыванию запустить?
Маленький хакер в подстанцию влез
Перенаправил поток он с АЭС
Клевая мощность два мегаватта,
Быстро горит материнская плата!
Перенаправил поток он с АЭС
Клевая мощность два мегаватта,
Быстро горит материнская плата!
Re: CodeVision AVR в вопросах и ответах
пытаюсь в атмеге8 настроить первый таймер чтобы он срабатывал от регистра сравнения А и от регистра сравнения В.............., от регистра А он срабатывает, а вот от В нехочет..........., подскажите пожалуйста где я ошибся ?
Код: Выделить всё
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 125,000 kHz
// Mode: CTC top=OCR1A
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: On
// Compare B Match Interrupt: On
TCCR1A=0x00;
TCCR1B=0x0A;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x02;
OCR1AL=0x71;
OCR1BH=0x30;
OCR1BL=0xD4;Tell Me The Truth
Re: CodeVision AVR в вопросах и ответах
Вот в общем-то приглянуля мне КодВижн. Но версия 2.5. весьма трмознутая. Доросла программа до 4000 строк и все - ввод одной буквы уже тормозит, прокрутка - тоже тормозит, компиляция тормозит.
И ко всему этому "великолепию" , как я понял КодВижн не умеет отслеживать изменения в открытом файле, внесенные в другом редакторе, что не дает возможности писать код в стороннем редакторе и компилировать вв КВ...
Как-то можно с этим бороться?
И ко всему этому "великолепию" , как я понял КодВижн не умеет отслеживать изменения в открытом файле, внесенные в другом редакторе, что не дает возможности писать код в стороннем редакторе и компилировать вв КВ...
Как-то можно с этим бороться?
-
Mr.Denis
- Прорезались зубы
- Сообщения: 220
- Зарегистрирован: Пт авг 07, 2009 22:06:49
- Откуда: Россия, Москва
Re: CodeVision AVR в вопросах и ответах
Подскажите, как сделать так чтоб кнопка срабатывала только при удержании её 10 секунд?
STM32F4 Discovery + KEIL + Windows 7
- Apparatchik
- Держит паяльник хвостом
- Сообщения: 908
- Зарегистрирован: Вс май 23, 2010 13:55:42
- Откуда: Украина, Александрия
Re: CodeVision AVR в вопросах и ответах
Mr.Denis писал(а):Подскажите, как сделать так чтоб кнопка срабатывала только при удержании её 10 секунд?
При обнаружении нажатой кнопки ждем 10 секунд и опять проверяем нажата ли кнопка
«И всё-таки она вертится!»
-
Mr.Denis
- Прорезались зубы
- Сообщения: 220
- Зарегистрирован: Пт авг 07, 2009 22:06:49
- Откуда: Россия, Москва
Re: CodeVision AVR в вопросах и ответах
Спасибо!
Еще интересует где можно почитать про форматирование строки (sprintf) ?
А то делаю часы и не как не могу вывести информацию на LCD в должном виде.
Еще интересует где можно почитать про форматирование строки (sprintf) ?
А то делаю часы и не как не могу вывести информацию на LCD в должном виде.
STM32F4 Discovery + KEIL + Windows 7
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Mr.Denis писал(а):Еще интересует где можно почитать про форматирование строки (sprintf) ?
А то делаю часы и не как не могу вывести информацию на LCD в должном виде.
в хелпе
битва с дураками проиграна, победители торжествуют. слава победителям!
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Apparatchik писал(а):Mr.Denis писал(а):ждем 10 секунд и опять проверяем нажата ли кнопка
А если отпустили на первой секунде и опять нажали на девятой?
Docendo discimus
- urry
- Сверлит текстолит когтями
- Сообщения: 1262
- Зарегистрирован: Пн дек 08, 2008 10:58:48
- Откуда: Винница
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
завести счетчик и, скажем, через каждые 10 мс инкрементировать его, если кнопка нажата. если отжата, скажем, в течении 3 проверок, счетчик обнуляется. Если счетчик достиг значения 100*10 - 10 секунд кнопка нажата.
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
R_ura писал(а):Доросла программа до 4000 строк и все - ввод одной буквы уже тормозит, прокрутка - тоже тормозит, компиляция тормозит.
Юр так зачем ты довел до такого размера?можно разделять на модули.По функциям на файлы разделить и вначале основного файла добавить эти файлы.Не забудь к проекту привязать,чтоб не было эксцессов.
В поисках истины человек развивается.
-
Mr.Denis
- Прорезались зубы
- Сообщения: 220
- Зарегистрирован: Пт авг 07, 2009 22:06:49
- Откуда: Россия, Москва
Re: CodeVision AVR в вопросах и ответах
Спасибо за ответы!
Прочитал хелп, и что-то не как не пойму как мне сделать конструкцию вот такого вида 00:00
Прочитал хелп, и что-то не как не пойму как мне сделать конструкцию вот такого вида 00:00
STM32F4 Discovery + KEIL + Windows 7
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
чтото вроде этого будет.
str_length=sprintf(buffer,"%d:%d",&hours,&minutes);
str_length=sprintf(buffer,"%d:%d",&hours,&minutes);
В поисках истины человек развивается.
-
Mr.Denis
- Прорезались зубы
- Сообщения: 220
- Зарегистрирован: Пт авг 07, 2009 22:06:49
- Откуда: Россия, Москва
Re: CodeVision AVR в вопросах и ответах
Спасибо! Завтро попробую.
STM32F4 Discovery + KEIL + Windows 7
-
Мастер Ломастер
- Поставщик валерьянки для Кота
- Сообщения: 1995
- Зарегистрирован: Ср май 11, 2011 21:37:45
- Откуда: Цветочный город
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
будет что-то типа этого на самом деле:vitalik_1984 писал(а):чтото вроде этого будет.
str_length=sprintf(buffer,"%d:%d",&hours,&minutes);
Код: Выделить всё
sprintf(buffer,"%02d:%02d",hours,minutes);битва с дураками проиграна, победители торжествуют. слава победителям!
- Apparatchik
- Держит паяльник хвостом
- Сообщения: 908
- Зарегистрирован: Вс май 23, 2010 13:55:42
- Откуда: Украина, Александрия
Re: CodeVision AVR в вопросах и ответах
pyzhman писал(а):Apparatchik писал(а):Mr.Denis писал(а):ждем 10 секунд и опять проверяем нажата ли кнопка
А если отпустили на первой секунде и опять нажали на девятой?
Я образно сказал, так сказать на мысль натолкнул... Ждать целых 10 секунд с помощью delay это мягко говоря расточительство процессорного времени. Если отпустили, значит щитать коротким нажатием.
«И всё-таки она вертится!»
- vitalik_1984
- Поставщик валерьянки для Кота
- Сообщения: 2482
- Зарегистрирован: Пт авг 27, 2010 05:57:06
- Откуда: Тюмень
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Мастер Ломастер писал(а):Код: Выделить всё
sprintf(buffer,"%02d:%02d",hours,minutes);
Да точно,а еще в хелпе написано
The function returns the number of outputed characters.
То есть функция возвращает число символов в массиве при удачном исходе.
В поисках истины человек развивается.
- kvark85
- Встал на лапы
- Сообщения: 108
- Зарегистрирован: Сб ноя 08, 2008 21:23:06
- Откуда: Харьков
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Здравствуйте. Уже несколько дней пытаюсо разобраться что это сделал CV:
зачем записывать в регистр CLKPR 0x80 и сразу за этим 0x00? Что значит pragma optsize- и pragma optsize+?
Как это работает? Не хочется оставлять непонятные моменты в программировании, хочется во всем разобраться.
Код: Выделить всё
// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endifзачем записывать в регистр CLKPR 0x80 и сразу за этим 0x00? Что значит pragma optsize- и pragma optsize+?
Как это работает? Не хочется оставлять непонятные моменты в программировании, хочется во всем разобраться.
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Код: Выделить всё
// Crystal Oscillator division factor: 1
#pragma optsize- //отключаем оптимизацию. Чтобы нижние строки скомпилировались именно так, как написаны. Ибо 4 такта однако.
CLKPR=0x80; //разрешаем запись в клоковый прескалер.
CLKPR=0x00; //и пишем туда нули. На всякий случай. При старте, конечно, там нули, но для надеги...
#ifdef _OPTIMIZE_SIZE_ //если опция оптимизации есть
#pragma optsize+ //то включаем ее
#endif // так надоDocendo discimus
-
master3763
- Первый раз сказал Мяу!
- Сообщения: 33
- Зарегистрирован: Сб дек 10, 2011 17:45:25
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Здравствуйте ! У меня CodeVision 2.05.4 .
Хочу собрать вот этот термостат. http://my-avr.at.ua/publ/1-1-0-11
Вот весь исходник.
Для конфугурации деляю так :
Project --> Configure --> C Compiler -- > Libraries --> 1 Wire --> и выставляю порт и пин с которого будет приниматся информация с датчика DS18b20.
Не получается некак скомпилировать проэкт.
Выводит :
Error: C:\Users\...\Desktop\Thermometer\List\termometer.asm(2294): Invalid redefinition of '__w1_port'
Error: C:\Users\...\Desktop\Thermometer\List\termometer.asm(2295): Invalid redefinition of '__w1_bit'
Что я не так делаю ?
Хочу собрать вот этот термостат. http://my-avr.at.ua/publ/1-1-0-11
Вот весь исходник.
Код: Выделить всё
#include <mega8.h>
#include <delay.h>
#asm
.equ __w1_port=0x18 ;PORTB
.equ __w1_bit=0
#endasm
#include <1wire.h>
#include <ds18b20.h>
void main(void)
{
unsigned char devices;
int temp;
devices = w1_init();
PORTD = 0x00; //Выставляем все выходы порта D на 0, то есть, выключаем весь порт D
DDRD = 0xFF;
while (1)
{
temp=ds18b20_temperature(0); //читаем температуру
if (temp>1000) //если датчик выдаёт больше 1000
{
temp=4096-temp; //отнимаем от данных 4096
temp=-temp; //и ставим знак "минус"
}
if (temp<18) // устанавливаем нижней порог
PORTD.0 = 1;
else PORTD.0=0;
if (temp>28) // установим верхний порог
PORTD.1=1;
else PORTD.1=0;
}
}
Для конфугурации деляю так :
Project --> Configure --> C Compiler -- > Libraries --> 1 Wire --> и выставляю порт и пин с которого будет приниматся информация с датчика DS18b20.
Не получается некак скомпилировать проэкт.
Выводит :
Error: C:\Users\...\Desktop\Thermometer\List\termometer.asm(2294): Invalid redefinition of '__w1_port'
Error: C:\Users\...\Desktop\Thermometer\List\termometer.asm(2295): Invalid redefinition of '__w1_bit'
Что я не так делаю ?
- pyzhman
- Друг Кота
- Сообщения: 7016
- Зарегистрирован: Вс июл 12, 2009 19:15:29
- Откуда: Ижевск
- Контактная информация:
Re: CodeVision AVR в вопросах и ответах
Код: Выделить всё
#asm
.equ __w1_port=0x18 ;PORTB
.equ __w1_bit=0
#endasm
#include <1wire.h>Эти строки уже назначены лапки. Вы их пытаетесь переназначить. О чем честно говорит компилятор.
Docendo discimus