Схемы металлоискателей MD4U
http://md4u.ru/

Проблемы при програмировании С++
http://md4u.ru/viewtopic.php?f=24&t=2375
Страница 1 из 1

Автор:  OSTIN [ Сб: 25 окт 2008 18:06 ]
Заголовок сообщения:  Проблемы при програмировании С++

вот пишу код, который измерит длину сигнала на 0 й ноге порта С.
Не получается: при срабатывании прирываний переменная col почему-то не увеличивает свое значение на 1. :cry: . Кто подскажет в чем проблема?
Код:
#include <mega8.h>   
#include <stdio.h>

int col=0;

interrupt [TIM0_OVF] void timer0_ovf_isr(void) //функция прерывания
{
TCNT0=0xFF;
col++;


void main(void)

UCSRA=0x00; // для работы усарта
UCSRB=0x08;
UCSRC=0x86;
UBRRH=0x00;
UBRRL=0x33;

TCNT0=0xFF; // Таймер стартует с 255
#asm("sei")
while (1) {
if (PINC.0) {
  TCCR0=0x03; // запускаем таймер с частотой 125,000 kHz
  while (PINC.0) { // ничего не делаем пока на PINC.0 еденица
  }
  TCCR0=0x00; // останавливаем таймер
  printf("Kolichestvo = %d\r\n", col); //выводим на терминал количество прерываний
}
}
}

Автор:  Andy_F [ Сб: 25 окт 2008 19:12 ]
Заголовок сообщения: 

Идеологически написанное не правильно - Timer1 и Timer2 могут работать в режимах счёта и захвата, совершенно незачем "уродоваться" с Timer0 и перезаписывать его в прерывании. Но вникать в идею мне лень...

А переменная col не инкрементируется в прерывании по той простой причине, что прерывания не происходит - кроме глобального разрешения прерываний надо разрешить прерывание по переполнению таймера 0 - бит TOIE0 регистра TIMSK.

Автор:  zxpirate [ Сб: 25 окт 2008 19:16 ]
Заголовок сообщения: 

А PINC.0 как вход назначил?
TCNT0=0xFF; // Таймер стартует с 255 ---- попробуй с 254

Автор:  OSTIN [ Сб: 25 окт 2008 21:17 ]
Заголовок сообщения: 

да, поставил порты с входом и TIMSK=0x01; и все заработало, спасибо :)

Автор:  Andy_F [ Сб: 25 окт 2008 21:21 ]
Заголовок сообщения: 

P.S. Кстати, это не C++, а C.
P.P.S. А порты по-умолчанию и так на вход :wink:

Автор:  OSTIN [ Вт: 28 окт 2008 18:13 ]
Заголовок сообщения: 

особо то разници невижу С/С++, главное что бы работало :D

Автор:  Andy_F [ Вт: 28 окт 2008 19:31 ]
Заголовок сообщения: 

OSTIN писал(а):
особо то разници невижу С/С++, ...

А она есть...

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/