roboforum.ru

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

 

Про меандр

Раздел создан специально для людей которым интересна робототехника, но в силу разных причин они не знают с чего начать.
Задавайте ваши вопросы, какими бы простыми они не казались, постоянные посетители форума постараются ответить на них по мере своих сил.
Робот своими руками. Самодельный робот.

Re: Про меандр

Сообщение rig » 11 май 2010, 17:37

а где тогда текстовые комментарии, или думаешь, тут все вундеркинды и тунеядцы экстрасенсы?
Аватара пользователя
rig
 
Сообщения: 1437
Зарегистрирован: 03 авг 2007, 19:43
Откуда: Екатеринбург
прог. языки: Си, асм со словарем

Re: Про меандр

Сообщение Romikgy » 11 май 2010, 21:03

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

так не ?
die Wahrheit ist irgendwo da draußen
Аватара пользователя
Romikgy
 
Сообщения: 677
Зарегистрирован: 15 ноя 2009, 13:37
Откуда: Odessa.UA

Re: Про меандр

Сообщение Lockdog » 11 май 2010, 21:06

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

так не ?

всё дело в таймере.
Аватара пользователя
Lockdog
 
Сообщения: 639
Зарегистрирован: 06 июл 2006, 20:42
Откуда: Москва
прог. языки: C/C++, Pascal, Delphi
ФИО: Анатолий Зимин

Re: Про меандр

Сообщение Romikgy » 11 май 2010, 21:30

если решил проблемку ок , нет выкладывай протеус проект посмотрим
die Wahrheit ist irgendwo da draußen
Аватара пользователя
Romikgy
 
Сообщения: 677
Зарегистрирован: 15 ноя 2009, 13:37
Откуда: Odessa.UA

Re: Про меандр

Сообщение rig » 12 май 2010, 07:22

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

таймер то работает?
Аватара пользователя
rig
 
Сообщения: 1437
Зарегистрирован: 03 авг 2007, 19:43
Откуда: Екатеринбург
прог. языки: Си, асм со словарем

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, но не работают даже прерывания, моделил в протеусе. Помогите, плиз.
Аватара пользователя
Lockdog
 
Сообщения: 639
Зарегистрирован: 06 июл 2006, 20:42
Откуда: Москва
прог. языки: C/C++, Pascal, Delphi
ФИО: Анатолий Зимин

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);
Аватара пользователя
rig
 
Сообщения: 1437
Зарегистрирован: 03 авг 2007, 19:43
Откуда: Екатеринбург
прог. языки: Си, асм со словарем

Re: Про меандр

Сообщение Drunya » 13 май 2010, 09:40

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

Понятно. Лог. "или" нуля с любым числом оставит это же число. Другое дело, если после ресета эти биты не нули или раньше в них не писал что-нибудь.
Глюк по-немецки означает "счастье"...
Аватара пользователя
Drunya
 
Сообщения: 196
Зарегистрирован: 05 июн 2007, 12:20
Откуда: Киев
прог. языки: C/C++, ASSEMBLER

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); (не то прерывание обрабатывалось), но всё равно не работает
Аватара пользователя
Lockdog
 
Сообщения: 639
Зарегистрирован: 06 июл 2006, 20:42
Откуда: Москва
прог. языки: C/C++, Pascal, Delphi
ФИО: Анатолий Зимин

Re: Про меандр

Сообщение rig » 13 май 2010, 12:22

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

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

Мега 8я?
таймер какой задействовать??
послезавтра могу код таймера дать :)
Аватара пользователя
rig
 
Сообщения: 1437
Зарегистрирован: 03 авг 2007, 19:43
Откуда: Екатеринбург
прог. языки: Си, асм со словарем

Re: Про меандр

Сообщение Lockdog » 13 май 2010, 12:34

Ну это тема с 18-го марта=) была большая пауза и недавно я опять взялся за проблему. Да - мега8, таймер любой можно.
Просто сейчас пишщу на IAR.
Мне непонятно, почему прерывание не срабатывает.
Аватара пользователя
Lockdog
 
Сообщения: 639
Зарегистрирован: 06 июл 2006, 20:42
Откуда: Москва
прог. языки: C/C++, Pascal, Delphi
ФИО: Анатолий Зимин

Re: Про меандр

Сообщение rig » 14 май 2010, 07:47

подумалось тут, МК ваабще признаки жизни подает? светодиодиком помигать можно?
Аватара пользователя
rig
 
Сообщения: 1437
Зарегистрирован: 03 авг 2007, 19:43
Откуда: Екатеринбург
прог. языки: Си, асм со словарем

Re: Про меандр

Сообщение Lockdog » 14 май 2010, 09:56

:lol: Конечно, всё работает, сигналы переключает, без глюков. Я говорю о том, что у меня в протеусе прерывания не работают.
Аватара пользователя
Lockdog
 
Сообщения: 639
Зарегистрирован: 06 июл 2006, 20:42
Откуда: Москва
прог. языки: C/C++, Pascal, Delphi
ФИО: Анатолий Зимин

Re: Про меандр

Сообщение rig » 14 май 2010, 10:53

то есть все работает и помощь уже не нужна?
Накойтогда протеус если все работает?
Аватара пользователя
rig
 
Сообщения: 1437
Зарегистрирован: 03 авг 2007, 19:43
Откуда: Екатеринбург
прог. языки: Си, асм со словарем

Re: Про меандр

Сообщение Lockdog » 14 май 2010, 11:39

Я имею ввиду, что контроллер жив, но вот с прерываниями я где-то напортачил.
Аватара пользователя
Lockdog
 
Сообщения: 639
Зарегистрирован: 06 июл 2006, 20:42
Откуда: Москва
прог. языки: C/C++, Pascal, Delphi
ФИО: Анатолий Зимин

Пред.След.

Вернуться в Новичкам или основы основ роботостроения.

Кто сейчас на конференции

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

Mail.ru counter