Страница 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 не снимая с него функции индикации?

П.С. Желательно ткнуть в пример :dont_know:
Спойлер#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-я версия. :shock:

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
Чистка реестра таки и помогла. Спасибо за дельный совет. :beer:

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 какой объявлен?