Страница 193 из 421
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт мар 23, 2012 23:30:26
Valek3306
А нет ли у кого ни будь примера использования функции scanf() в CVAVR? Я ее попытался использовать, но при моделировании а Протеусе работает нормально до первый посылки 4 байтов, а потом появляется ошибка Pop Program stack: SP is not initialized
_______________________
Как использовать функцию scanf() разобрался, но она почему то работает только в бесконечном цикле, а мне надо ее по прерыванию приемника УАРТ использовать, но в прерывании она не работает почему то. Как ее правильно по прерыванию запустить?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн мар 26, 2012 17:45:32
FreshMan
пытаюсь в атмеге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;
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн мар 26, 2012 20:59:29
R_ura
Вот в общем-то приглянуля мне КодВижн. Но версия 2.5. весьма трмознутая. Доросла программа до 4000 строк и все - ввод одной буквы уже тормозит, прокрутка - тоже тормозит, компиляция тормозит.
И ко всему этому "великолепию" , как я понял КодВижн не умеет отслеживать изменения в открытом файле, внесенные в другом редакторе, что не дает возможности писать код в стороннем редакторе и компилировать вв КВ...
Как-то можно с этим бороться?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн мар 26, 2012 22:24:53
Mr.Denis
Подскажите, как сделать так чтоб кнопка срабатывала только при удержании её 10 секунд?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн мар 26, 2012 23:16:58
Apparatchik
Mr.Denis писал(а):Подскажите, как сделать так чтоб кнопка срабатывала только при удержании её 10 секунд?
При обнаружении нажатой кнопки ждем 10 секунд и опять проверяем нажата ли кнопка
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн мар 26, 2012 23:58:22
Mr.Denis
Спасибо!
Еще интересует где можно почитать про форматирование строки (sprintf) ?
А то делаю часы и не как не могу вывести информацию на LCD в должном виде.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вт мар 27, 2012 07:40:14
Мастер Ломастер
Mr.Denis писал(а):Еще интересует где можно почитать про форматирование строки (sprintf) ?
А то делаю часы и не как не могу вывести информацию на LCD в должном виде.
в хелпе
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вт мар 27, 2012 07:53:00
pyzhman
Apparatchik писал(а):Mr.Denis писал(а):ждем 10 секунд и опять проверяем нажата ли кнопка
А если отпустили на первой секунде и опять нажали на девятой?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вт мар 27, 2012 08:16:12
urry
завести счетчик и, скажем, через каждые 10 мс инкрементировать его, если кнопка нажата. если отжата, скажем, в течении 3 проверок, счетчик обнуляется. Если счетчик достиг значения 100*10 - 10 секунд кнопка нажата.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вт мар 27, 2012 09:29:56
vitalik_1984
R_ura писал(а):Доросла программа до 4000 строк и все - ввод одной буквы уже тормозит, прокрутка - тоже тормозит, компиляция тормозит.
Юр так зачем ты довел до такого размера?можно разделять на модули.По функциям на файлы разделить и вначале основного файла добавить эти файлы.Не забудь к проекту привязать,чтоб не было эксцессов.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вт мар 27, 2012 10:25:47
Mr.Denis
Спасибо за ответы!
Прочитал хелп, и что-то не как не пойму как мне сделать конструкцию вот такого вида 00:00
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вт мар 27, 2012 14:54:07
vitalik_1984
чтото вроде этого будет.
str_length=sprintf(buffer,"%d:%d",&hours,&minutes);
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вт мар 27, 2012 21:20:52
Mr.Denis
Спасибо! Завтро попробую.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вт мар 27, 2012 21:35:51
Мастер Ломастер
vitalik_1984 писал(а):чтото вроде этого будет.
str_length=sprintf(buffer,"%d:%d",&hours,&minutes);
будет что-то типа этого на самом деле:
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вт мар 27, 2012 23:08:18
Apparatchik
pyzhman писал(а):Apparatchik писал(а):
А если отпустили на первой секунде и опять нажали на девятой?
Я образно сказал, так сказать на мысль натолкнул... Ждать целых 10 секунд с помощью delay это мягко говоря расточительство процессорного времени. Если отпустили, значит щитать коротким нажатием.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вт мар 27, 2012 23:09:25
vitalik_1984
Мастер Ломастер писал(а):
Да точно,а еще в хелпе написано
The function returns the number of outputed characters.
То есть функция возвращает число символов в массиве при удачном исходе.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср мар 28, 2012 10:28:23
kvark85
Здравствуйте. Уже несколько дней пытаюсо разобраться что это сделал CV:
Код: Выделить всё
// Crystal Oscillator division factor: 1
#pragma optsize-
CLKPR=0x80;
CLKPR=0x00;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
зачем записывать в регистр CLKPR 0x80 и сразу за этим 0x00? Что значит pragma optsize- и pragma optsize+?
Как это работает? Не хочется оставлять непонятные моменты в программировании, хочется во всем разобраться.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср мар 28, 2012 11:11:31
pyzhman
Код: Выделить всё
// Crystal Oscillator division factor: 1
#pragma optsize- //отключаем оптимизацию. Чтобы нижние строки скомпилировались именно так, как написаны. Ибо 4 такта однако.
CLKPR=0x80; //разрешаем запись в клоковый прескалер.
CLKPR=0x00; //и пишем туда нули. На всякий случай. При старте, конечно, там нули, но для надеги...
#ifdef _OPTIMIZE_SIZE_ //если опция оптимизации есть
#pragma optsize+ //то включаем ее
#endif // так надо
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср мар 28, 2012 20:39:32
master3763
Здравствуйте ! У меня CodeVision 2.05.4 .
Хочу собрать вот этот термостат.
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'
Что я не так делаю ?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср мар 28, 2012 20:43:49
pyzhman
Код: Выделить всё
#asm
.equ __w1_port=0x18 ;PORTB
.equ __w1_bit=0
#endasm
#include <1wire.h>
Эти строки уже назначены лапки. Вы их пытаетесь переназначить. О чем честно говорит компилятор.