Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 12.03.2011, 19:50  
neid_nnov
Временная регистрация
 
Регистрация: 05.10.2010
Сообщений: 68
Сказал спасибо: 12
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
neid_nnov на пути к лучшему
По умолчанию Что делаю неправильно?

Привет всем! вообщем я в стопоре... ни как не могу понять что именно я делаю не правильно в этом коде?
Код:
#include ‹mega8.h›
#include ‹delay.h›


#define KEY_UP 1
#define KEY_DN 2
#define KEY_NEXT 4
#define KEY_NONE 0


// Timer2 overflow interrupt service routine
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
// Place your code here

}
typedef unsigned char u8;

// ôóíêöèÿ, êîòîðàÿ îïðàøèâàåò êíîïêè è âîçâðàùàåò êîä íàæàòîé
u8 get_key(void){
   u8 temp = ~(PINC & (KEY_UP | KEY_DN | KEY_NEXT));
   delay_ms(15);
   if(temp != (~(PINC & (KEY_UP | KEY_DN | KEY_NEXT))))
      return KEY_NONE;
   else
      return temp;
}

static void mode1(void){
   u8 key;
   while(1){
      key = get_key();
      switch(key){
      case KEY_UP: if(OCR2 ‹ 255) OCR2++;
         break;
      case KEY_DN: if(OCR2›0) OCR2--;
         break;
      case KEY_NEXT:
         return;
      }
   }
}

static void mode2(void){
   u8 key;
   static signed char reverse;
   while(1){
      key = get_key();
      if(key == KEY_NEXT) return;
      if(OCR2 == 255) reverse = -1;
      if(OCR2 == 0) reverse = 1;
      OCR2 += reverse;
      delay_ms(100);
   }
}

static void mode3(void){
   while(get_key() != KEY_NEXT);
}

void main(void)
{
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=Out Func2=In Func1=In Func0=In 
// State7=T State6=T State5=T State4=T State3=0 State2=T State1=T State0=T 
PORTB=0x00;
DDRB=0x08;

// Port A 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=P State2=P State1=P State0=P 
PORTC=0x07;
DDRC=0x00;



// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: 125,000 kHz
// Mode: Fast PWM top=FFh
// OC2 output: Non-Inverted PWM
ASSR=0x00;
TCCR2=0x69;
TCNT2=0x00;
OCR2=0x00;


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

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;


while(1){
      mode1();
      mode2();
      mode3();
   }
}
Реклама:
neid_nnov вне форума  
Непрочитано 12.03.2011, 19:54  
кротоВ
Заблокирован
 
Регистрация: 06.11.2010
Сообщений: 267
Сказал спасибо: 13
Сказали Спасибо 108 раз(а) в 65 сообщении(ях)
кротоВ на пути к лучшему
По умолчанию Re: Что делаю не правильно?

А декларировать переменные нынче не модно?
кротоВ вне форума  
Непрочитано 12.03.2011, 19:59  
neid_nnov
Временная регистрация
 
Регистрация: 05.10.2010
Сообщений: 68
Сказал спасибо: 12
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
neid_nnov на пути к лучшему
По умолчанию Re: Что делаю не правильно?

Сообщение от кротоВ Посмотреть сообщение
декларировать переменные нынче не модно?
а какая не задакларированна? ткните носом чтоли тогда! признаюсь код подсказали, я с ним мучаюсь!
neid_nnov вне форума  
Непрочитано 12.03.2011, 20:04  
кротоВ
Заблокирован
 
Регистрация: 06.11.2010
Сообщений: 267
Сказал спасибо: 13
Сказали Спасибо 108 раз(а) в 65 сообщении(ях)
кротоВ на пути к лучшему
По умолчанию Re: Что делаю не правильно?

Да не вроде все, temp (Я ) пропустил вначале... как компилятор ругается?
кротоВ вне форума  
Непрочитано 12.03.2011, 20:08  
neid_nnov
Временная регистрация
 
Регистрация: 05.10.2010
Сообщений: 68
Сказал спасибо: 12
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
neid_nnov на пути к лучшему
По умолчанию Re: Что делаю не правильно?

никак CVAVR 1.25.5 компилирует все на Ок. а в протусе не пашет, я по осцилографу смотрю, работуют все режимы или нет.
neid_nnov вне форума  
Непрочитано 12.03.2011, 20:12  
кротоВ
Заблокирован
 
Регистрация: 06.11.2010
Сообщений: 267
Сказал спасибо: 13
Сказали Спасибо 108 раз(а) в 65 сообщении(ях)
кротоВ на пути к лучшему
По умолчанию Re: Что делаю не правильно?

У вас похоже в процедуре прерывания по таймеру...
"// Timer2 overflow interrupt service routine
interrupt [TIM2_OVF] void timer2_ovf_isr(void)
{
// Place your code here

}"
отсутствует перезагрузка таймера счётчика...
при этом прерывание вроде как включено...если не используете его, то удалите...
кротоВ вне форума  
Непрочитано 12.03.2011, 20:13  
neid_nnov
Временная регистрация
 
Регистрация: 05.10.2010
Сообщений: 68
Сказал спасибо: 12
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
neid_nnov на пути к лучшему
По умолчанию Re: Что делаю не правильно?

neid_nnov вне форума  
Непрочитано 12.03.2011, 20:14  
кротоВ
Заблокирован
 
Регистрация: 06.11.2010
Сообщений: 267
Сказал спасибо: 13
Сказали Спасибо 108 раз(а) в 65 сообщении(ях)
кротоВ на пути к лучшему
По умолчанию Re: Что делаю не правильно?

Протеус не критерий...попробуйте "живой" МК.
кротоВ вне форума  
Непрочитано 12.03.2011, 20:16  
neid_nnov
Временная регистрация
 
Регистрация: 05.10.2010
Сообщений: 68
Сказал спасибо: 12
Сказали Спасибо 8 раз(а) в 8 сообщении(ях)
neid_nnov на пути к лучшему
По умолчанию Re: Что делаю не правильно?

гляньте на порты пожалайста и кнопки, все правилно седлал? у меня сомнения у сомого. сам новичок, и глаз уже замылился...
neid_nnov вне форума  
Непрочитано 12.03.2011, 20:20  
кротоВ
Заблокирован
 
Регистрация: 06.11.2010
Сообщений: 267
Сказал спасибо: 13
Сказали Спасибо 108 раз(а) в 65 сообщении(ях)
кротоВ на пути к лучшему
По умолчанию Re: Что делаю не правильно?

Ну инициализацию перефирии вы похоже "уизардом" делали каким то? Мне сразу и не проверить, без перезагрузки в виндовс А не могу пока...
кротоВ вне форума  
 

Закладки
Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
FAQ (ЧаВО) по PROTEUS для начинающих и не только dosikus Proteus 221 07.03.2024 22:45
Глушилка громкой музыки у соседей VVK Отвлекитесь, эмбеддеры! 355 10.01.2019 20:09
KiCAD-объявления и впечатления al_dan KiCAD 32 03.10.2016 17:02
Варианты использования свободной энергии. Кто что знает? Msergey4 Электроника - это просто 416 02.12.2013 12:09


Часовой пояс GMT +4, время: 13:22.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot