Вопрос по таймеру на PIC 16

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
Закрыто
Аватара пользователя
adrin02
Открыл глаза
Сообщения: 55
Зарегистрирован: Вс мар 04, 2012 01:41:48
Откуда: Двинск
Контактная информация:

Вопрос по таймеру на PIC 16

Сообщение adrin02 »

Добрый день. Как правильно запускать таймер. Прерывания.

В мейне пишу

TRISB = 0; //Выходы
T0IE = 1;
GIE = 1;

Перед мейном функцию

void interrupt I(void)
{
RB7 = 1;
T0IF = 0;
}

Но на выходе порта нету напряжения.

Подскажите пожалуйста как правильно нужно делать?
Реклама
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Вопрос по таймеру на PIC 16

Сообщение Аlex »

Его(таймер) нужно сначала настроить.
Реклама
Аватара пользователя
adrin02
Открыл глаза
Сообщения: 55
Зарегистрирован: Вс мар 04, 2012 01:41:48
Откуда: Двинск
Контактная информация:

Re: Вопрос по таймеру на PIC 16

Сообщение adrin02 »

Аlex писал(а):Его(таймер) нужно сначала настроить.
Я новичёк, Не подскажите как это сделать? =) Простого мануала по этой теме на С не нашёл =(
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Вопрос по таймеру на PIC 16

Сообщение Аlex »

А причём тут Си ? Все ответы есть в даташите на Ваш МК.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
adrin02
Открыл глаза
Сообщения: 55
Зарегистрирован: Вс мар 04, 2012 01:41:48
Откуда: Двинск
Контактная информация:

Re: Вопрос по таймеру на PIC 16

Сообщение adrin02 »

Аlex писал(а):А причём тут Си ? Все ответы есть в даташите на Ваш МК.
Ничего незная, там не ответы а чёрный лес. По примерам легче ориентироватся когда ничего не знаешь. А не лезть в эти дебри. :(
Реклама
Аватара пользователя
Shapa
Встал на лапы
Сообщения: 127
Зарегистрирован: Пт июн 20, 2008 09:38:05
Откуда: Харьков
Контактная информация:

Re: Вопрос по таймеру на PIC 16

Сообщение Shapa »

Новичку и правда трудно разобраться с 0. Не видя в глаза примеров.
1) Вы используете таймер0? Ищите его в даташите на ваш контроллер, там описание регистров. Выставляя в регистрах нужные биты - вы настраиваете свой таймер
2) Не знаю, как в пиках, но в АВРках, хэндлер прерывания должет иметь ветор прерывания в параметрах
3) собственно нужно настроить прерывания по переполнению. За это отвечают или регистры самого таймера 0, или спец регистр настройки всех прерываний (или и то и другое).
4) В черном лесе рано или поздно придется разобраться, чем раньше, там меньше косяков будет
Реклама
Аватара пользователя
Аlex
Модератор
Сообщения: 4614
Зарегистрирован: Чт мар 18, 2010 23:09:57
Откуда: Планета Земля
Контактная информация:

Re: Вопрос по таймеру на PIC 16

Сообщение Аlex »

Никакого леса, все предельно ясно. Русским по белому всё расписано, разжёвано. Осталось только в рот положить.
http://www.microchip.ru/files/d-sheets-rus/pic16_11.pdf
Аватара пользователя
adrin02
Открыл глаза
Сообщения: 55
Зарегистрирован: Вс мар 04, 2012 01:41:48
Откуда: Двинск
Контактная информация:

Re: Вопрос по таймеру на PIC 16

Сообщение adrin02 »

Спасибо. Нашёл пример, пытаюсь вникнуть.

Код: Выделить всё

unsigned cnt;

void interrupt() {
  cnt++;                   // Increment value of cnt on every interrupt
  TMR0L  = 96;
  INTCON = 0x20;           // Set T0IE, clear T0IF
}

void main() {
  ADCON1      = 0x0F;      // Set AN pins to Digital I/O
  T0CON       = 0xC4;      // Set TMR0 in 8bit mode, assign prescaler to TMR0
  TRISB = 0;               // PORTB is output
  PORTB = 0xFF;            // Initialize PORTB
  TMR0L = 96;              // Timer0 initial value
  INTCON = 0xA0;           // Enable TMRO interrupt
  cnt = 0;                 // Initialize cnt

  do {
    if (cnt == 400) {
      PORTB = ~PORTB;      // Toggle PORTB LEDs
      cnt = 0;             // Reset cnt
      }
    } while(1);
}
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»