roboforum.ru

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

посмотрите код...

посмотрите код...

tormozzz » 20 окт 2009, 23:41

кто хорошо знает си? посмотрите мой код плз
почему 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: посмотрите код...

executer » 20 окт 2009, 23:45

АВР123, давай! :Bravo:

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

Re: посмотрите код...

galex1981 » 20 окт 2009, 23:48

Ты уверен что в этих строках:
Код: Выделить всёРазвернуть
WDTCR |= (1<<4)|(1<<3);       
WDTCR |= (0<<3);

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

Re: посмотрите код...

avr123.nm.ru » 20 окт 2009, 23:52

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

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


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

Re: посмотрите код...

tormozzz » 20 окт 2009, 23:55

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: посмотрите код...

avr123.nm.ru » 21 окт 2009, 00:06

tormozzz писал(а):
Код: Выделить всёРазвернуть
0<<3

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

Re: посмотрите код...

tormozzz » 21 окт 2009, 00:12

да я пробовал и
Код: Выделить всёРазвернуть
WDTCR |= (1<<4)|(1<<3);       
WDTCR = 0x00;

эффекта - 0

Re: посмотрите код...

avr123.nm.ru » 21 окт 2009, 00:13

А чего нужно добиться ?

Re: посмотрите код...

tormozzz » 21 окт 2009, 00:18

отключения watchdog
VMLAB говорит что он включен и сбрасывает...

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

Re: посмотрите код...

SSG » 21 окт 2009, 10:19

А что конкретно пишет VMLab? Он, как уже говорили выше, с вотчдогом глючновато работает.
Период можно измерить в окне SCOPE расставив закладки и посмотрев разницу во времени между ними. Для этого нужно в начале периода какую-нибудь ножку установить в 1, а в конце ноль и на перепады поставить закладки в SCOPE.

Re: посмотрите код...

tormozzz » 21 окт 2009, 16:15

хм... скачал протеус, присобачил на мою программу осцилограф.... он показал что при 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: посмотрите код...

avr123.nm.ru » 21 окт 2009, 16:17

А вы как думаете ? :)

Re: посмотрите код...

tormozzz » 21 окт 2009, 16:32

не могу знать, таварышь avr123.nm.ru
поэтому и спрашиваю... если я ошибаюсь, то укажите хоть где, а если протеус, то выкинуть его нафиг

Re: посмотрите код...

avr123.nm.ru » 21 окт 2009, 16:35

Для указания прожект прицепите.

Re: посмотрите код...

tormozzz » 21 окт 2009, 16:40

Projects.rar
(31.72 КиБ) Скачиваний: 5

это проект CVAVR

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

это протеус


Rambler\'s Top100 Mail.ru counter