CodeVision AVR в вопросах и ответах

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
Сериг
Это не хвост, это антенна
Сообщения: 1451
Зарегистрирован: Пт фев 19, 2010 19:39:28
Откуда: Москва

Re: CodeVision AVR в вопросах и ответах

Сообщение Сериг »

тоже не прокатывает :(
Аватара пользователя
olegleon
Родился
Сообщения: 15
Зарегистрирован: Ср янв 22, 2014 17:44:19
Откуда: Одесса

Re: CodeVision AVR в вопросах и ответах

Сообщение 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") 
  }
}

- Пахнет котом, - подумал Штирлиц.
- Зачем он нюхает мою лапу? - подумал кот.
Аватара пользователя
Сериг
Это не хвост, это антенна
Сообщения: 1451
Зарегистрирован: Пт фев 19, 2010 19:39:28
Откуда: Москва

Re: CodeVision AVR в вопросах и ответах

Сообщение Сериг »

Спасибо, соберу еще одно устройство и буду пробовать! Еще раз спасибо :)
Аватара пользователя
olegleon
Родился
Сообщения: 15
Зарегистрирован: Ср янв 22, 2014 17:44:19
Откуда: Одесса

Re: CodeVision AVR в вопросах и ответах

Сообщение olegleon »

так ведь есть же возможность в протеусе просимулировать не собирая железо
- Пахнет котом, - подумал Штирлиц.
- Зачем он нюхает мою лапу? - подумал кот.
Аватара пользователя
Сериг
Это не хвост, это антенна
Сообщения: 1451
Зарегистрирован: Пт фев 19, 2010 19:39:28
Откуда: Москва

Re: CodeVision AVR в вопросах и ответах

Сообщение Сериг »

Таки у меня то проблемы возникли на реально устройстве :))
Аватара пользователя
MVGudkov
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пт фев 11, 2011 13:34:31
Откуда: Москва - Жулебино

Re: CodeVision AVR в вопросах и ответах

Сообщение 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;
}


}
}
Аватара пользователя
vitalik_1984
Поставщик валерьянки для Кота
Сообщения: 2482
Зарегистрирован: Пт авг 27, 2010 05:57:06
Откуда: Тюмень
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение vitalik_1984 »

Я, конечно, дико извиняюсь но зачем задержка в данном отрезке кода?

Код: Выделить всё

dt = GetData(); // считали и отфильтровали ввод со входов
delay_ms(100);
if ((dt & 0x80) == 0x00) {
Что может произойти полезного за этот миг? Улягутся электроны в регистре для того, чтобы уверенно его считать?
Вообще можно и с помощью таймера сделать опрос клавиатуры с антидребезгом и при этом без ненужных задержек.
Аватара пользователя
MVGudkov
Первый раз сказал Мяу!
Сообщения: 23
Зарегистрирован: Пт фев 11, 2011 13:34:31
Откуда: Москва - Жулебино

Re: CodeVision AVR в вопросах и ответах

Сообщение MVGudkov »

Это было в исходнике программы, я и не трогал. Все что я переделал это перевел с тини13 на тини2313. И хочу добавить задержку после нажатия кнопки, но чтоб нажатия продолжали обрабатываться.
С МК знаком всего неделю, прочитал всего пару книги (пока), потихонечку вникаю.
yvd
Родился
Сообщения: 5
Зарегистрирован: Пн дек 23, 2013 22:56:00

Re: CodeVision AVR в вопросах и ответах

Сообщение yvd »

Подскажите пожалуйста почему CODEVISION пошла в полный отказ. Полная переустановка программы любых версий из инета ничего не дает. Как ошибку определяет практически весь код начиная от обьявления библиотеки чипа и до самого конца. Заново сгенерированный код самой прогой еще пустой и то после компиляции определяет как сплошную ошибку. А поначалу отлично работала месяца два 1.25-я версия. :shock:
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: CodeVision AVR в вопросах и ответах

Сообщение Jack_A »

Триальная версия ? Время кончилось ?
yvd
Родился
Сообщения: 5
Зарегистрирован: Пн дек 23, 2013 22:56:00

Re: CodeVision AVR в вопросах и ответах

Сообщение yvd »

Jack_A писал(а):Триальная версия ? Время кончилось ?


Наверное так и есть, я пока не спец. Почему тогда не дает возможности работать другим версиям например 2.05. Там такие же ошибки "обовсем" дает. Может в первый раз немного поработав она в винде "личинки откладывает" и простое удаление программы ничего не дает? Такую фигню я наблюдал с антивирусами( время когда выйдет то сколько не переустанавливай она не пойдет). Винду из за этого переустанавливать не хочется. Подскажите где взять нормально-крякнутую версию, и как справиться с проблемой.
Аватара пользователя
Jack_A
Друг Кота
Сообщения: 6307
Зарегистрирован: Вт апр 24, 2007 07:45:40
Откуда: Minsk

Re: CodeVision AVR в вопросах и ответах

Сообщение Jack_A »

Насчёт крякнутой версии не скажу, я кодевижн не пользую, да и не принято кряки обсуждать в открытом эфире :)
Могу поделитьтся своим случаем. Для устройств с USB на FTDI писал проги на Delphi 7. Несколько лет всё шло хорошо. Однажды сдуру врубил ноут, когда в его гнездо USB было воткнуто моё устройство :( И кто бы мог подумать -- где Delphi и где FTDI -- но при загрузке Delphi она мне сказала : шёл бы ты, парень, лесом, а я тебя знать не знаю ! Снёс Дельфу на хрен, переустановил -- моно-пенисно. С горя хотел уже переходить на убогую free Delphi, но взял себя в руки, методично вычистил реестр, где хоть раз упоминалась Delphi, переустановил. Слава всевышнему -- до сих пор фурчит, как котёнок.
С тех пор регулярно при любых новациях делаю в Винде точки возврата и при необходимости откатываюсь.
yvd
Родился
Сообщения: 5
Зарегистрирован: Пн дек 23, 2013 22:56:00

Re: CodeVision AVR в вопросах и ответах

Сообщение yvd »

Попробую почистить реестр !
yvd
Родился
Сообщения: 5
Зарегистрирован: Пн дек 23, 2013 22:56:00

Re: CodeVision AVR в вопросах и ответах

Сообщение yvd »

Чистка реестра таки и помогла. Спасибо за дельный совет. :beer:
Аватара пользователя
levaclaus
Потрогал лапой паяльник
Сообщения: 302
Зарегистрирован: Пн янв 07, 2008 16:56:28
Откуда: Минск

Re: CodeVision AVR в вопросах и ответах

Сообщение 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 привильно "окучить"?
Александр 2677
Встал на лапы
Сообщения: 89
Зарегистрирован: Пн фев 22, 2010 11:16:00

Re: CodeVision AVR в вопросах и ответах

Сообщение Александр 2677 »

Добрый вечер. Если есть у кого нибудь возможность, глянте мой проект (точнее это не мой а скаченный на одном из форумов).
Суть в том что дисплей Nokia 3310 неработает в железе, а в Proteus всё путём. Правильность схемы проверенна другими прошивками. Может быть чтото с настройками Codewision ?
Вложения
Дисплей нокиа.rar
(816.28 КБ) 177 скачиваний
Аватара пользователя
Ghost in shell
Держит паяльник хвостом
Сообщения: 931
Зарегистрирован: Пн июн 15, 2009 06:01:38
Откуда: USSR

Re: CodeVision AVR в вопросах и ответах

Сообщение Ghost in shell »

Привет.
Какая версия CodeVision AVR работает с ExtraPIC? Это JDM-программматор, но его в менюшке нет...
Кот гуляет сам по себе, но вблизи холодильника.
Аватара пользователя
Сериг
Это не хвост, это антенна
Сообщения: 1451
Зарегистрирован: Пт фев 19, 2010 19:39:28
Откуда: Москва

Re: CodeVision AVR в вопросах и ответах

Сообщение Сериг »

Добрый вечер! Подскажите пожалуйста, как выполнять условие на числа с плавающей точкой? Поясню:
Я измеряю напряжение аналоговым компаратором мк, далее его проеобразую в "выводимое напряжение", после чего и спрашиваю, если напряжение лежит в пределах 6,3-6,9 - то делаем что-то...
Пробовал делать так:
if (voltage < 6.3 || voltage > 6.9) {...}
Однако компилятор ругается на числа с плавающей точкой ( мол, не лежит в пределах переменной).
Так же пробовал домножить - if (voltage*10 < 63 || voltage*10 > 69){...}
Еще есть вариант просто вычислить значение ADC при этих напряжениях чему будет равно и подставить. Но это не очень приятный процесс... Можно ли как-то иначе производить "опрос"числа с плавающей точкой?
Большое спасибо за помощь!
Аватара пользователя
isx
Поставщик валерьянки для Кота
Сообщения: 2316
Зарегистрирован: Вс июн 26, 2011 20:03:21

Re: CodeVision AVR в вопросах и ответах

Сообщение isx »

А вы определили его как float?
У меня были проблемы с точками. Решить удалось подставив сразу после значения(без пробела) букву "f" (и при объявлении переменной со значением тоже, везде вообщем где float). С тех пор так всегда делаю, всё норм пока :) .
Аватара пользователя
pyzhman
Друг Кота
Сообщения: 7016
Зарегистрирован: Вс июл 12, 2009 19:15:29
Откуда: Ижевск
Контактная информация:

Re: CodeVision AVR в вопросах и ответах

Сообщение pyzhman »

Тип переменной voltage какой объявлен?
Docendo discimus
Ответить

Вернуться в «AVR»