roboforum.ru

Технический форум по робототехнике.

Про меандр

Re: Про меандр

rig » 11 май 2010, 17:37

а где тогда текстовые комментарии, или думаешь, тут все вундеркинды и тунеядцы экстрасенсы?

Re: Про меандр

Romikgy » 11 май 2010, 21:03

Код: Выделить всёРазвернуть
  
  if (PINC.0 == 0)
  {
   PORTD.0 = 1;
  }
else
{
PORTD.0 = 0;
}

так не ?

Re: Про меандр

Lockdog » 11 май 2010, 21:06

Romikgy писал(а):
Код: Выделить всёРазвернуть
  
  if (PINC.0 == 0)
  {
   PORTD.0 = 1;
  }
else
{
PORTD.0 = 0;
}

так не ?

всё дело в таймере.

Re: Про меандр

Romikgy » 11 май 2010, 21:30

если решил проблемку ок , нет выкладывай протеус проект посмотрим

Re: Про меандр

rig » 12 май 2010, 07:22

варианты рабочие, можно сделать так:
PINC.0 = ~PINC.0;
или так
PINC.0 = !PINC.0;

таймер то работает?

Re: Про меандр

Lockdog » 13 май 2010, 01:59

Код: Выделить всёРазвернуть
#include <ioavr.h>
#include <intrinsics.h>
#include <iom8.h>

int main( void )
{
  PORTC=(0<<PC0);
  DDRD=255;
  TCCR1B=(0<<ICNC1)|(0<<ICES1)|(0<<WGM13)|(0<<WGM12)|(1<<CS12)|(0<<CS11)|(1<<CS10);
  TCNT1H=0xF0;
  TCNT1L=0x6F; //значение 61551

  //TIMSK=0x04;
  TIMSK=(1<<TICIE1);
 
__enable_interrupt();
 
  while(1)
  {
    PORTD = (1<<1);
  }
}

#pragma vector = TIMER1_OVF_vect
__interrupt void flashing(void)
{
  //if ((PINC & (1 << PC0)) == 1)
  //{
    PORTD = (1<<PD0);
  //}
}

Таймер настроен на прерывание по переполнению, отсчёт начинается со значения (65535-3984)=61551
предделитель 1024, т.е. частота таймера 7813 Гц
время одного такта 0,000128 сек

Вот написал код в IAR, но не работают даже прерывания, моделил в протеусе. Помогите, плиз.

Re: Про меандр

rig » 13 май 2010, 06:30

подобная команда у меня не работала
0<<CS11

делал так:
~(1<<CS11)
на выходе в разряде CS11 будет нолик а все остальные единички.

но нолик прилеплять надо через & лог умножение

так что там получится после такой команды непонятно
Код: Выделить всёРазвернуть
TCCR1B=(0<<ICNC1)|(0<<ICES1)|(0<<WGM13)|(0<<WGM12)|(1<<CS12)|(0<<CS11)|(1<<CS10);

Re: Про меандр

Drunya » 13 май 2010, 09:40

rig писал(а):так что там получится после такой команды непонятно
Код: Выделить всёРазвернуть
TCCR1B=(0<<ICNC1)|(0<<ICES1)|(0<<WGM13)|(0<<WGM12)|(1<<CS12)|(0<<CS11)|(1<<CS10);

Понятно. Лог. "или" нуля с любым числом оставит это же число. Другое дело, если после ресета эти биты не нули или раньше в них не писал что-нибудь.

Re: Про меандр

Lockdog » 13 май 2010, 11:22

Строка:
Код: Выделить всёРазвернуть
TCCR1B=(0<<ICNC1)|(0<<ICES1)|(0<<WGM13)|(0<<WGM12)|(1<<CS12)|(0<<CS11)|(1<<CS10);

Устанавливает режим таймер Normal, Top=0xFFFF

делал так:
~(1<<CS11)
на выходе в разряде CS11 будет нолик а все остальные единички.

но нолик прилеплять надо через & лог умножение

Не совсем понял.
У меня в TCCR1B только CS12 и CS10 должны быть единичками.

Добавлено спустя 1 час 40 минут 6 секунд:
Исправил TIMSK=(1<<TICIE1); на TIMSK=(1<<TOIE1); (не то прерывание обрабатывалось), но всё равно не работает

Re: Про меандр

rig » 13 май 2010, 12:22

честно говоря я еще ни разу таймер по даташиту не настраивал, обычно беру мастер, выставляю что хочу. Расчитываю задержки, ставлю константы и пользуюсь готовым кодом.
Мне непонятна эта проблема не решающаяся с 18 мар 2010 18:32.

Добавлено спустя 12 минут 34 секунды:
Lockdog писал(а):Я хочу чтобы таймер через каждые 0,5 сек вызывал прерывание и в нём проверял состояние ножки и если оно = 1, то выполнять какю-либо команду

Мега 8я?
таймер какой задействовать??
послезавтра могу код таймера дать :)

Re: Про меандр

Lockdog » 13 май 2010, 12:34

Ну это тема с 18-го марта=) была большая пауза и недавно я опять взялся за проблему. Да - мега8, таймер любой можно.
Просто сейчас пишщу на IAR.
Мне непонятно, почему прерывание не срабатывает.

Re: Про меандр

rig » 14 май 2010, 07:47

подумалось тут, МК ваабще признаки жизни подает? светодиодиком помигать можно?

Re: Про меандр

Lockdog » 14 май 2010, 09:56

:lol: Конечно, всё работает, сигналы переключает, без глюков. Я говорю о том, что у меня в протеусе прерывания не работают.

Re: Про меандр

rig » 14 май 2010, 10:53

то есть все работает и помощь уже не нужна?
Накойтогда протеус если все работает?

Re: Про меандр

Lockdog » 14 май 2010, 11:39

Я имею ввиду, что контроллер жив, но вот с прерываниями я где-то напортачил.


Rambler\'s Top100 Mail.ru counter