Страница 301 из 421
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн янв 27, 2014 01:18:20
Сериг
тоже не прокатывает

Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн янв 27, 2014 19:43:56
olegleon
Сериг писал(а):тоже не прокатывает

вот специально по быстрому набросал, в протеусе проверил - работает

правда думаю нужно учитывать еще время на wake-up при расчете
Код: Выделить всё
#include <mega8.h>
#include <delay.h>
#define LED PORTB.3
#define ON 0
#define OFF 1
bit LE = 0;
// Timer1 overflow interrupt service routine
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
TCNT2 = 64560 + 6; //выставляем начальное значение TCNT2 для 1 сек; 65536 - ( xtall/1024 = 977Hz)
//6 тиков на просыпание
if (LE == 0)
{
LED = ON;
LE = 1;
}
else
{
LED = OFF;
LE = 0;
}
}
void main(void)
{
DDRB=0b11111111;
PORTB=0b11111111;
TCCR2 = (1<<CS12)|(1<<CS11)|(1<<CS10); // преддделитель 1024 для таймера2
TCNT2 = 64560 + 6; //выставляем начальное значение TCNT2 для 1 сек; 65536 - ( xtall/1024 = 977Hz)
//6 тиков на просыпание
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK |= (1<<TOIE2); // разрешить прерывание по переполнению таймера2
MCUCR |= (1 << SE)|(0 << SM2)|(1 << SM1)|(1 << SM0); // Разрешить Power-save mode
ASSR |= (1 << AS2); // Установить в асинхронный режим
// Global enable interrupts
#asm("sei")
//LED = ON;
//LE = 1;
while (1)
{
#asm("Sleep")
}
}
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн янв 27, 2014 21:47:55
Сериг
Спасибо, соберу еще одно устройство и буду пробовать! Еще раз спасибо

Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн янв 27, 2014 22:02:41
olegleon
так ведь есть же возможность в протеусе просимулировать не собирая железо
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн янв 27, 2014 22:10:06
Сериг
Таки у меня то проблемы возникли на реально устройстве

Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт янв 31, 2014 02:07:47
MVGudkov
Подскажите как реализовать функцию задержки на 1-2 секунды после нажатия на кнопку в ожидании повторного нажатия (при этом останавливается ШИМ). Если нажатие было то повторить ожидание, если нет продолжить выполнение программы (ШИМ). Если 0 таймер задействован в ШИМ, а 1 выводит мигание светодиодом на РВ3, МК тини2313. Можно ли для опроса использовать таймер 1 не снимая с него функции индикации?
П.С. Желательно ткнуть в пример
Спойлер
#include <tiny2313.h>
#include <delay.h>
#define starttime 1 // Время розжига
unsigned char GetData (void)
{
unsigned char i, j;
for(i=0;i<30;i++)
{
delay_us(1000);
j = (PINB & 0xE0); // 5.6.7>>1
delay_us(1000);
if(j != (PINB & 0xE0)) i=0;
}
return j;
}
eeprom int pwm_level;
int pwm_current = 0;
int pwm_step = 1;
unsigned char laststate = 0x00;
void main(void)
{
unsigned char dt = 0;
pwm_step = pwm_level / starttime + 1; // шаг розжига.
while (1)
{
#asm("wdr") // сброс WDT
dt = GetData(); // считали и отфильтровали ввод со входов
delay_ms(100);
if ((dt & 0x80) == 0x00) {
// режим настройки
if (laststate == 0x00) {
laststate = 0x01;
pwm_level += 16;
if (pwm_level > 239) {
pwm_level = 15;
pwm_current = 0;
}
pwm_step = pwm_level / starttime + 1; // шаг розжига.
}
} else {
laststate = 0x00;
if ((dt & 0x60) == 0x40) {
// разжигаем
if (pwm_current < pwm_level) {
pwm_current += pwm_step;
if (pwm_current > pwm_level) {
pwm_current = pwm_level;
}
}
} else {
// гасим
if (pwm_current > 0) {
pwm_current = 0 ;
// pwm_current -= pwm_step;
if (pwm_current < 0) {
pwm_current = 0 ;
}
}
}
}
if (pwm_current == 0x00) {
OCR0A = 0x00;
TCCR0A = 0x00;
PORTB.4 = 0x00;
} else {
OCR0A = pwm_current;
TCCR0A = 0x83;
PORTB.4 = 0x01;
}
}
}
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт янв 31, 2014 07:16:03
vitalik_1984
Я, конечно, дико извиняюсь но зачем задержка в данном отрезке кода?
Код: Выделить всё
dt = GetData(); // считали и отфильтровали ввод со входов
delay_ms(100);
if ((dt & 0x80) == 0x00) {
Что может произойти полезного за этот миг? Улягутся электроны в регистре для того, чтобы уверенно его считать?
Вообще можно и с помощью таймера сделать опрос клавиатуры с антидребезгом и при этом без ненужных задержек.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт янв 31, 2014 09:01:19
MVGudkov
Это было в исходнике программы, я и не трогал. Все что я переделал это перевел с тини13 на тини2313. И хочу добавить задержку после нажатия кнопки, но чтоб нажатия продолжали обрабатываться.
С МК знаком всего неделю, прочитал всего пару книги (пока), потихонечку вникаю.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс фев 02, 2014 16:41:09
yvd
Подскажите пожалуйста почему CODEVISION пошла в полный отказ. Полная переустановка программы любых версий из инета ничего не дает. Как ошибку определяет практически весь код начиная от обьявления библиотеки чипа и до самого конца. Заново сгенерированный код самой прогой еще пустой и то после компиляции определяет как сплошную ошибку. А поначалу отлично работала месяца два 1.25-я версия.

Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс фев 02, 2014 19:27:13
Jack_A
Триальная версия ? Время кончилось ?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн фев 03, 2014 10:17:11
yvd
Jack_A писал(а):Триальная версия ? Время кончилось ?
Наверное так и есть, я пока не спец. Почему тогда не дает возможности работать другим версиям например 2.05. Там такие же ошибки "обовсем" дает. Может в первый раз немного поработав она в винде "личинки откладывает" и простое удаление программы ничего не дает? Такую фигню я наблюдал с антивирусами( время когда выйдет то сколько не переустанавливай она не пойдет). Винду из за этого переустанавливать не хочется. Подскажите где взять нормально-крякнутую версию, и как справиться с проблемой.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн фев 03, 2014 14:05:11
Jack_A
Насчёт крякнутой версии не скажу, я кодевижн не пользую, да и не принято кряки обсуждать в открытом эфире
Могу поделитьтся своим случаем. Для устройств с USB на FTDI писал проги на Delphi 7. Несколько лет всё шло хорошо. Однажды сдуру врубил ноут, когда в его гнездо USB было воткнуто моё устройство

И кто бы мог подумать -- где Delphi и где FTDI -- но при загрузке Delphi она мне сказала : шёл бы ты, парень, лесом, а я тебя знать не знаю ! Снёс Дельфу на хрен, переустановил -- моно-пенисно. С горя хотел уже переходить на убогую free Delphi, но взял себя в руки, методично вычистил реестр, где хоть раз упоминалась Delphi, переустановил. Слава всевышнему -- до сих пор фурчит, как котёнок.
С тех пор регулярно при любых новациях делаю в Винде точки возврата и при необходимости откатываюсь.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн фев 03, 2014 21:12:30
yvd
Попробую почистить реестр !
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пн фев 03, 2014 23:41:02
yvd
Чистка реестра таки и помогла. Спасибо за дельный совет.

Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт фев 07, 2014 12:36:09
levaclaus
Помогите разобраться с LCD4X40.H
Собственно есть экран hd44780 4х40
#include <mega16.h>
// Alphanumeric LCD Module functions
#asm
.equ __lcd_port=0x15 ;PORTC
#endasm
#include <lcd4x40.h>
*****
блаблабла
*****
lcd_init();
lcd_gotoxy(0,0);
lcd_putsf("1234567890");
lcd_gotoxy(0,1);
lcd_putsf("1234567890");
lcd_gotoxy(0,2);
lcd_putsf("1234567890");
lcd_gotoxy(0,3);
lcd_putsf("1234567890");
***
и ничего не происходит. Экран пуст либо на нем мусор. Подключено все правильно, экран рабочий.
Если подключить #include <LCD.H>
lcd_init(40);
то логично - работают 2 верхние строки
Как эту библиотеку LCD4X40.H привильно "окучить"?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Вс фев 09, 2014 19:33:36
Александр 2677
Добрый вечер. Если есть у кого нибудь возможность, глянте мой проект (точнее это не мой а скаченный на одном из форумов).
Суть в том что дисплей Nokia 3310 неработает в железе, а в Proteus всё путём. Правильность схемы проверенна другими прошивками. Может быть чтото с настройками Codewision ?
Re: CodeVision AVR в вопросах и ответах
Добавлено: Пт фев 14, 2014 19:58:00
Ghost in shell
Привет.
Какая версия CodeVision AVR работает с ExtraPIC? Это JDM-программматор, но его в менюшке нет...
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср фев 19, 2014 22:14:56
Сериг
Добрый вечер! Подскажите пожалуйста, как выполнять условие на числа с плавающей точкой? Поясню:
Я измеряю напряжение аналоговым компаратором мк, далее его проеобразую в "выводимое напряжение", после чего и спрашиваю, если напряжение лежит в пределах 6,3-6,9 - то делаем что-то...
Пробовал делать так:
if (voltage < 6.3 || voltage > 6.9) {...}
Однако компилятор ругается на числа с плавающей точкой ( мол, не лежит в пределах переменной).
Так же пробовал домножить - if (voltage*10 < 63 || voltage*10 > 69){...}
Еще есть вариант просто вычислить значение ADC при этих напряжениях чему будет равно и подставить. Но это не очень приятный процесс... Можно ли как-то иначе производить "опрос"числа с плавающей точкой?
Большое спасибо за помощь!
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср фев 19, 2014 23:06:00
isx
А вы определили его как float?
У меня были проблемы с точками. Решить удалось подставив сразу после значения(без пробела) букву "f" (и при объявлении переменной со значением тоже, везде вообщем где float). С тех пор так всегда делаю, всё норм пока

.
Re: CodeVision AVR в вопросах и ответах
Добавлено: Ср фев 19, 2014 23:07:15
pyzhman
Тип переменной voltage какой объявлен?