roboforum.ru

Технический форум по робототехнике.
Текущее время: 02 дек 2024, 18:14

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




Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: посмотрите код...
СообщениеДобавлено: 20 окт 2009, 23:41 
Не в сети

Зарегистрирован: 20 окт 2009, 23:28
Сообщения: 8
Откуда: Армавир
кто хорошо знает си? посмотрите мой код плз
почему VMLAB ругается на сторожевой таймер? и где можно сэмулировать осцилограф, проверить будет ли там 36 КГц?

Код:
#include <mega8.h>

int flash_counter=0;
int active_tsop=0;     
int delay=0;

void init_tsop(void)
{
  flash_counter=40;
  GIFR=0b10000000;
  GICR=0b10000000;
}

// External Interrupt 1 service routine
interrupt [EXT_INT1] void ext_int1_isr(void)
{
  active_tsop = 1;
}

// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
  TCNT0=0x91;
  if (flash_counter>0)flash_counter--;
  if (flash_counter==0)
  {
    //TIMSK=0b00000000;
    GICR=0b00000000;   
    delay++;
  }
  else
  {
    PORTC.0 = ~PORTC.0;
  }   
  if (delay==40)
  {
    init_tsop();
    delay=0;
  }
}

void main(void)
{                   
  #asm("wdr")
  WDTCR |= (1<<4)|(1<<3);     
  WDTCR |= (0<<3);
  PORTC=0b00000000;
  DDRC= 0b00000011; 
  PORTD=0b00001000;
  DDRD=0x00;
  TCCR0=0x01;
  MCUCR=0x00;
  #asm("sei") 
  init_tsop();
  TIMSK=0b00000001;

while (1)
      {
         if (flash_counter==0)
         {
           if (active_tsop!=0)
           {
             PORTC.1=1;
           }
           else
           {
             PORTC.1=0;
           }
         }

      };
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: посмотрите код...
СообщениеДобавлено: 20 окт 2009, 23:45 
Не в сети
Аватара пользователя

Зарегистрирован: 30 янв 2009, 01:24
Сообщения: 784
Откуда: Запорожье
прог. языки: Си, AvrASM, STL, САС, учу Си++
ФИО: Павел
АВР123, давай! :Bravo:

Добавлено спустя 2 минуты 24 секунды:
wiki/AVR123


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: посмотрите код...
СообщениеДобавлено: 20 окт 2009, 23:48 
Не в сети
Аватара пользователя

Зарегистрирован: 04 дек 2008, 22:44
Сообщения: 4363
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович
Ты уверен что в этих строках:
Код:
WDTCR |= (1<<4)|(1<<3);       
WDTCR |= (0<<3);

Верно установил биты сторожевого таймера?

_________________
if(!Operate) Read(pDatasheet);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: посмотрите код...
СообщениеДобавлено: 20 окт 2009, 23:52 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
tormozzz писал(а):
почему VMLAB ругается на сторожевой таймер?
Я проверял в задаче 11 и разбирал АСМ код в листинге - http://avr123.nm.ru/z11.htm - CVAVR правильно работает с псом - точно по даташиту, но VMLAB-у что-то не нравится. Просто не обращай внимания.
Нажимай саетофор ...

tormozzz писал(а):
где можно сэмулировать осцилограф, проверить будет ли там 36 КГц ?


Окно SCOPE - но лучше скачай PROTEUS - поприкольней ИМХО - http://proteus123.narod.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: посмотрите код...
СообщениеДобавлено: 20 окт 2009, 23:55 
Не в сети

Зарегистрирован: 20 окт 2009, 23:28
Сообщения: 8
Откуда: Армавир
galex1981 писал(а):
Ты уверен что в этих строках:
Код:
WDTCR |= (1<<4)|(1<<3);       
WDTCR |= (0<<3);

Верно установил биты сторожевого таймера?


даташит на мега8 стр. 45:

Цитата:
void WDT_off(void)
{
/* reset WDT */
_WDR();
/* Write logical one to WDCE and WDE */
WDTCR |= (1<<WDCE) | (1<<WDE);
/* Turn off WDT */
WDTCR = 0x00;
}


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: посмотрите код...
СообщениеДобавлено: 21 окт 2009, 00:06 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
tormozzz писал(а):
Код:
0<<3

Так не надо делать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: посмотрите код...
СообщениеДобавлено: 21 окт 2009, 00:12 
Не в сети

Зарегистрирован: 20 окт 2009, 23:28
Сообщения: 8
Откуда: Армавир
да я пробовал и
Код:
WDTCR |= (1<<4)|(1<<3);       
WDTCR = 0x00;

эффекта - 0


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: посмотрите код...
СообщениеДобавлено: 21 окт 2009, 00:13 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
А чего нужно добиться ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: посмотрите код...
СообщениеДобавлено: 21 окт 2009, 00:18 
Не в сети

Зарегистрирован: 20 окт 2009, 23:28
Сообщения: 8
Откуда: Армавир
отключения watchdog
VMLAB говорит что он включен и сбрасывает...

Добавлено спустя 3 минуты 28 секунд:
а код кто нить смотрел, он должен работать?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: посмотрите код...
СообщениеДобавлено: 21 окт 2009, 10:19 
Не в сети
Аватара пользователя

Зарегистрирован: 15 янв 2007, 19:23
Сообщения: 1058
Откуда: Беларусь, Барановичи
прог. языки: С для МК, Delphi для ПК
А что конкретно пишет VMLab? Он, как уже говорили выше, с вотчдогом глючновато работает.
Период можно измерить в окне SCOPE расставив закладки и посмотрев разницу во времени между ними. Для этого нужно в начале периода какую-нибудь ножку установить в 1, а в конце ноль и на перепады поставить закладки в SCOPE.

_________________
I live My life!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: посмотрите код...
СообщениеДобавлено: 21 окт 2009, 16:15 
Не в сети

Зарегистрирован: 20 окт 2009, 23:28
Сообщения: 8
Откуда: Армавир
хм... скачал протеус, присобачил на мою программу осцилограф.... он показал что при 8МГц кварце на эта программа выдаст 27.8КГц импульсы... Изображение
а мне надо 36 кгц... по моим расчетам 1 такт процессора = 1/8000000 что равно 0,000000125с. период колебания 36КГц равен 1/36000 = 0,00002777с. делим, получаем примерно 222 такта на одно колебание. таймер должен орать каждые 0.5 колебания. то есть 111 тактов. 256-111 равно 145 - каждый раз загружая это число в таймер мы должны получить примерно 36КГц колебания. протеус в это не верит и осцилограф выдает примерно 36КГц только при загрузке в таймер числа 177(установлено опытным путем).
Изображение
кто тут косячит? я или протеус?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: посмотрите код...
СообщениеДобавлено: 21 окт 2009, 16:17 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
А вы как думаете ? :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: посмотрите код...
СообщениеДобавлено: 21 окт 2009, 16:32 
Не в сети

Зарегистрирован: 20 окт 2009, 23:28
Сообщения: 8
Откуда: Армавир
не могу знать, таварышь avr123.nm.ru
поэтому и спрашиваю... если я ошибаюсь, то укажите хоть где, а если протеус, то выкинуть его нафиг


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: посмотрите код...
СообщениеДобавлено: 21 окт 2009, 16:35 
Не в сети
отсылающий читать курс
Аватара пользователя

Зарегистрирован: 06 ноя 2005, 04:18
Сообщения: 14195
Откуда: Москва
Для указания прожект прицепите.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: посмотрите код...
СообщениеДобавлено: 21 окт 2009, 16:40 
Не в сети

Зарегистрирован: 20 окт 2009, 23:28
Сообщения: 8
Откуда: Армавир
Вложение:
Projects.rar [31.72 КиБ]
Скачиваний: 5

это проект CVAVR

Добавлено спустя 32 секунды:
Вложение:
Ir test.rar [29.7 КиБ]
Скачиваний: 4

это протеус


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 18 ]  На страницу 1, 2  След.

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


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

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


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

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO