Например TDA7294

Форум РадиоКот • Просмотр темы - CodeVision AVR в вопросах и ответах
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вс сен 21, 2025 01:16:53

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 8297 ]     ... , , , 303, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Ср мар 26, 2014 09:57:23 
Друг Кота
Аватар пользователя

Карма: 49
Рейтинг сообщений: 392
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 7014
Откуда: Ижевск
Рейтинг сообщения: 0
pokk писал(а):
EEPROM по нужному мне адресу ?

Так пробовали:
Код:
char arr[5] @0x0100

?
pokk писал(а):
как стереть всю EEPROM ?

Создать, записать - не получается?

_________________
Docendo discimus


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Ср мар 26, 2014 11:14:09 
Вымогатель припоя

Зарегистрирован: Вт ноя 02, 2010 17:46:37
Сообщений: 574
Рейтинг сообщения: 0
Цитата:
Так пробовали:

То что надо благодарю!!!

Цитата:
Создать, записать - не получается?


ага в принципе так и сделал. Как и испоганил всю EEPROM так же и записал туда FF =)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Ср мар 26, 2014 21:05:08 
Родился

Зарегистрирован: Чт окт 03, 2013 19:30:03
Сообщений: 13
Рейтинг сообщения: 0
Доброго времени суток, подскажите в CVAVR_2.05.3 стандартной библиотеке glcd.h можно как-нибудь графику, ну линию например одну стереть, не очищая весь экран glcd_clear()'ом?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Ср мар 26, 2014 22:47:29 
Друг Кота
Аватар пользователя

Карма: 49
Рейтинг сообщений: 392
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 7014
Откуда: Ижевск
Рейтинг сообщения: 0
Не юзал, но логичное решение - нарисовать пустыми битами.

_________________
Docendo discimus


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Ср мар 26, 2014 23:43:21 
Родился

Зарегистрирован: Чт окт 03, 2013 19:30:03
Сообщений: 13
Рейтинг сообщения: 0
pyzhman писал(а):
Не юзал, но логичное решение - нарисовать пустыми битами.


Пробовал инверсным цветом (дисплей монохром 3310) не работает :(


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Чт мар 27, 2014 13:45:14 
Собутыльник Кота
Аватар пользователя

Карма: -22
Рейтинг сообщений: -63
Зарегистрирован: Вт сен 14, 2010 10:27:19
Сообщений: 2584
Рейтинг сообщения: 0
Помогите! человек от CVAVR страдает http://goo.gl/3keQWJ не компилит не работает :beer:

_________________
Будете проходить мимо- проходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Пн мар 31, 2014 19:35:51 
Встал на лапы

Зарегистрирован: Ср фев 05, 2014 18:54:39
Сообщений: 118
Рейтинг сообщения: 0
кто-нибудь прикручивал текстовые редакторы типа Notepad++ или sublime text 2/3 к компилятору cvavr, чтобы компилить прямо из редактора?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вт апр 01, 2014 18:22:20 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 11
Рейтинг сообщений: 26
Зарегистрирован: Вс июн 26, 2011 20:03:21
Сообщений: 2316
Рейтинг сообщения: 0
Здравствуйте!
Помогите пожалуйста с таймерами на атмеге8.
Есть код, который посредством 16-ти битного таймера считает длительность импульса. Эту величину нужно выводить на дисплей 1602. Как правильно организовать задержку в выборке значений и выводе их на экран, ато дисплей не сможет обновляться с частотой в несколько килогерц :solder: ...
Код:
#include <mega8.h>
long a=0,b=0,c=0;
 
interrupt [TIM1_CAPT] void timer1_capt_isr(void)
{
  if(a==0) //считываем таймер в "a"
  {
     a=ICR1;
  }
  else   //находим разницу
  {
     b=ICR1;   
     c=b-a;   
     TCNT1=0x00;
     a = 0;
     #asm("cli")
  }
}
 
void main(void)
{
PORTB=0x01;
DDRB=0x00;
 
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 125,000 kHz
// Mode: Normal top=0xFFFF
// Input Capture on Rising Edge
// Input Capture Interrupt: On
TCCR1A=0x00;
TCCR1B=0xC3;
TCNT1=0x00;
ICR1=0x00;
 
TIMSK=0x20;
#asm("sei")
 
while (1)
      {
      }
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вт апр 01, 2014 18:31:42 
Модератор
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1430
Зарегистрирован: Чт мар 18, 2010 23:09:57
Сообщений: 4575
Откуда: Планета Земля
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Цитата:
Эту величину нужно выводить на дисплей 1602. Как правильно организовать задержку в выборке значений и выводе их на экран, ато дисплей не сможет обновляться с частотой в несколько килогерц
В основном цикле. Не ? :)

Цитата:
Как правильно организовать задержку
Что значит "правильно" ? Delay_Ms не подойдёт ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вт апр 01, 2014 18:43:37 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 11
Рейтинг сообщений: 26
Зарегистрирован: Вс июн 26, 2011 20:03:21
Сообщений: 2316
Рейтинг сообщения: 0
Хотелось бы без delay, мало ли что потом в код дописать нужно будет... :)
А можно ли сделать так:
1) Включаем 16-ти битный таймер. Делаем замер. Отключаем таймер.
2) Включаем 8-ми битный таймер. Делаем 15 циклов (около 0.5сек).Отключаем таймер.
3) Выводим данные на дисплей.
Не будет ли проблем из-за постоянного включения и отключения таймеров?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вт апр 01, 2014 21:11:26 
Грызет канифоль
Аватар пользователя

Карма: 6
Рейтинг сообщений: 9
Зарегистрирован: Пт сен 23, 2011 06:44:41
Сообщений: 258
Откуда: ЮФО
Рейтинг сообщения: 0
А если считать 10-50 длительностей, находить среднее и тогда не нужно будет слишком часто выводить на экран данные и цифры так сильно скакать не будут.
А так классическая задержка
i=10000;
while (i)
i--;

_________________
Купи два беляша и собери из них кошку
Labor est etiam ipse voluptas Труд уже сам по себе есть наслаждение (*Формула любви)
Ave novie-nostra ales Если один человек построил - другой завсегда разобрать может....(*Формула Любви).


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вт апр 01, 2014 22:05:42 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2119
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18406
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
1. для чего вы в прерывании делаете запрет прерываний? при выходе из обработчика они все равно разрешатся автоматически...
2. чем не устраивает такой алгоритм опроса и вывода:
Код:
int get_dlit(void); // эта функция возвращает длительность импульса

void main(void){
   int result;

   while(1){
       result = get_dlit(); // получаем
       out_to_lcd(result); // выводим
       delay_ms(1000); // задержка
   }
}

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вт апр 01, 2014 22:58:36 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 11
Рейтинг сообщений: 26
Зарегистрирован: Вс июн 26, 2011 20:03:21
Сообщений: 2316
Рейтинг сообщения: 0
Panda_Y2K писал(а):
данные и цифры так сильно скакать не будут

Хорошая мысль. Спасибо :)
Panda_Y2K писал(а):
while (i)

Можно в принципе... Просто хотел таймер присобачить, ато что он без дела висит...
ARV писал(а):
для чего вы в прерывании делаете запрет прерываний?

Это где?
ARV писал(а):
чем не устраивает такой алгоритм опроса и вывода

Delay злая вещь. Пока просто тахометр у меня, но возможно в будущем придётся дополнить код какими-либо наворотами, а там от такой задержки может плохо стать :solder:
Тоесть с включением/отключением таймеров лучше не баловаться?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вт апр 01, 2014 23:32:58 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2119
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18406
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
isx писал(а):
ARV писал(а):
для чего вы в прерывании делаете запрет прерываний?

Это где?
это там:
isx писал(а):
Код:
#include <mega8.h>
long a=0,b=0,c=0;
 
interrupt [TIM1_CAPT] void timer1_capt_isr(void)
{
  if(a==0) //считываем таймер в "a"
  {
     a=ICR1;
  }
  else   //находим разницу
  {
     b=ICR1;   
     c=b-a;   
     TCNT1=0x00;
     a = 0;
     #asm("cli") // ВОТ ИМЕННО ТУТ
  }
}

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Вт апр 01, 2014 23:35:54 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2119
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18406
Откуда: Новочеркасск
Рейтинг сообщения: 0
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
isx писал(а):
Delay злая вещь. Пока просто тахометр у меня, но возможно в будущем придётся дополнить код какими-либо наворотами, а там от такой задержки может плохо стать :solder:
Тоесть с включением/отключением таймеров лучше не баловаться?

сами по себе всякие вещи не злые и не добрые, злыми или добрыми их делают люди.

во всяком случае задержка по таймеру мало чем лучше задержки функцией.
никто не запретит вам все ваши навороты делать как раз по прерываниям, а результаты этих наворотов выводить неспеша по задержкам...

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Ср апр 02, 2014 04:26:33 
Вымогатель припоя

Зарегистрирован: Вт ноя 02, 2010 17:46:37
Сообщений: 574
Рейтинг сообщения: 0
isx писал(а):
Хотелось бы без delay, мало ли что потом в код дописать нужно будет... :)
А можно ли сделать так:
1) Включаем 16-ти битный таймер. Делаем замер. Отключаем таймер.
2) Включаем 8-ми битный таймер. Делаем 15 циклов (около 0.5сек).Отключаем таймер.
...

2) Зачем выключать таймер ? сделайте его на какой-то элементарный шаг к примеру 10 миллисекунд и внутри его увеличивайте счётчик
а в главном цикле смотрите на этот счётчик.(Или вообще этот счётчик в ваше прерывание(где замер делаете) запихать если такое возможно)
Код:
interrupt [TIM1_CAPT] void timer1_capt_isr(void)
{
        counter++;
}
void main(void){
   int result;
   while(1){
       result = get_dlit(); // получаем
       if(counter>100){ 
               out_to_lcd(result); // выводим   1  раз в секуну
               counter=0;
       }
   }
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Ср апр 02, 2014 16:37:28 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 11
Рейтинг сообщений: 26
Зарегистрирован: Вс июн 26, 2011 20:03:21
Сообщений: 2316
Рейтинг сообщения: 0
Здравствуйте. Почему переменная объявленная таким образом,
Код:
unsigned long int countob = 0;

, не принимает значений более 65535?
Вроде так ведь должно быть:
Код:
unsigned long int от 0 до 4294967295


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Ср апр 02, 2014 17:07:14 
Ум, честь и совесть. И скромность.
Аватар пользователя

Карма: 98
Рейтинг сообщений: 2119
Зарегистрирован: Чт дек 28, 2006 08:19:56
Сообщений: 18406
Откуда: Новочеркасск
Рейтинг сообщения: 1
Медали: 2
Получил миской по аватаре (1) Мявтор 3-й степени (1)
судя по всему у вас проблема не с переменной, а с выражением, результат вычисления которого вы заносите в переменную. код в студию - экстрасенсы в отпуске...

_________________
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Ср апр 02, 2014 18:09:39 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 11
Рейтинг сообщений: 26
Зарегистрирован: Вс июн 26, 2011 20:03:21
Сообщений: 2316
Рейтинг сообщения: 0
Д в том то и дело, что я только присваиваю ей значение и все.
Присваиваю countob = 65536; а протеус показывает "0". Вместо 65538 показывает 2 и т.д..


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: CodeVision AVR в вопросах и ответах
СообщениеДобавлено: Ср апр 02, 2014 18:47:10 
Встал на лапы

Зарегистрирован: Сб ноя 06, 2010 19:17:02
Сообщений: 100
Откуда: Россия, Омск
Рейтинг сообщения: 0
А как всё таки убрать мирцание LCD? убирал lcd_clear(), моргать перестал. Всплыла другая проблема!
vol=0 vol=1... и т.д. до vol=10, далее крутим назад vol=90 vol=80...

#include <mega8.h>
int NewState,OldState,upState,downState;
#asm
.equ __lcd_port=0x12 ;PORTD
#endasm
#include <lcd.h>
#include <stdio.h>

interrupt [TIM1_COMPA] void timer1_compa_isr(void)
{
NewState=PINB & 0b00000011;
if(NewState!=OldState)
{
switch(OldState)
{
case 2:
{
if(NewState == 3) upState++;
if(NewState == 0) downState++;
break;
}

case 0:
{
if(NewState == 2) upState++;
if(NewState == 1) downState++;
break;
}
case 1:
{
if(NewState == 0) upState++;
if(NewState == 3) downState++;
break;
}
case 3:
{
if(NewState == 1) upState++;
if(NewState == 2) downState++;
break;
}
}
OldState=NewState;
}
TCNT1H=0x00;
TCNT1L=0x00;
}

void main(void)
{
char lcd_buf[17];

// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=T State4=T State3=T State2=T State1=P State0=P
PORTB=0x03;
DDRB=0x08;

ASSR=0x00;
TCCR2=0x6C;
TCNT2=0x00;
OCR2=0x00;


// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: 1000,000 kHz
// Mode: CTC top=OCR1A
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: On
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x0A;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x03;
OCR1AL=0xE8;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x10;

// Global enable interrupts
#asm("sei")
lcd_init(16);

while (1)

{

if (upState >= 4)
{
OCR2=OCR2+0x02;
upState = 0;
}
if (downState >= 4)
{
OCR2=OCR2-0x02;
downState = 0;
}

sprintf(lcd_buf,"\xB1p\xBAoc\xBF\xC4=%d",OCR2);
lcd_gotoxy(0,0);

lcd_puts(lcd_buf);

};
}


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 8297 ]     ... , , , 303, , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 64


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y