реклама на сайте
подробности

 
 
> Timer1 mega8, не получается запустить
Метценгерштейн
сообщение Mar 6 2012, 20:37
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



Код
...
//=========================== interrupts =====================================
#pragma vector = TIMER1_COMPA_vect
__interrupt void overflow_timer1(void)
  {
    cpl (LED); //частота прерываний 76 кГц (период 38 кГц)
  }
//============================================================================
//****************************************************************************
//============================================================================
char __low_level_init (void) {  
        
        TCCR1B= (1<<WGM12) | (0<<CS12) | (1<<CS11) | (0<<CS10); //CTC mode, prescaling /8
        TIMSK = (1<<TOIE1)|(1<<OCIE1A);   //for counter counter 1
        OCR1A= 9524;
...


задача- меандр с частотой 38 КГц. Кварц 16 МГц.

нет на осцилле сигнала. Вроде все проинициализировал...
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Метценгерштейн
сообщение Mar 7 2012, 16:08
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 357
Регистрация: 12-04-05
Из: Петербург
Пользователь №: 4 079



Разобрался с проблемой. Она была не в счетчиках.

В настройках ИАРа я указал язык С++, а не СИ. Как только поменял на СИ- все заработало.

Вопрос- что компилятор выкидывал из кода, когда компилил на С++

Код
#include <ioavr.h>       // здесь объявлены все SFR для 2313
#include <stdint.h>      // в нем описан uint32_t
#include <inavr.h>       // здесь объявлены фукции разрешения/запрета прерываний, nop и прочие полезные                          
#include "ascold.h"      // здесь описаны очень удобные макросы дерганья ногами
#include "Hardware.h"
#include "RS232.h"

#define LED_BLINK_PERIOD 500U

volatile uint32_t CntT1_ms;

//=========================== interrupts =====================================
#pragma vector = TIMER1_COMPA_vect
__interrupt void overflow_timer1(void)
  {
    CntT1_ms++; // each ms will interrupt
    cpl (TST);
  }
//============================================================================
//****************************************************************************
//============================================================================
char __low_level_init (void) {   // эта функция вызывается сразу после
                                 // включения процика после установки
                                 // указателей стека.
                                 // Здесь можно настроить периферию
        
        TCCR1B= (1<<WGM12) | (0<<CS12)|(0<<CS11) |(1<<CS10); //CTC mode, no prescaling
        TIMSK = (1<<OCIE1A);   //for counter 0 and counter 1 (1<<TICIE1)
        OCR1A= (OSC / 1000);

        PORTB = (0<<7)|(0<<6)|(0<<5)|(0<<4)|(0<<3)|(0<<2)|(0<<1)|(0<<0);            // все ноги в 0
        DDRB =(1<<7)|(1<<6)|(1<<5)|(1<<4)|(1<<3)|(1<<2)|(1<<1)|(1<<0);              // все ноги на вывод

        PORTD = (0<<7)|(0<<6)|(0<<5)|(0<<4)|(0<<3)|(0<<2)|(0<<1)|(0<<0);            // все ноги в 0
        DDRD =(1<<7)|(1<<6)|(1<<5)|(1<<4)|(1<<3)|(1<<2)|(1<<1)|(1<<0);              // все ноги на вывод
        
        PORTC = (0<<7)|(0<<6)|(0<<5)|(0<<4)|(0<<3)|(0<<2)|(0<<1)|(0<<0);            // все ноги в 0
        DDRC =(1<<7)|(1<<6)|(1<<5)|(1<<4)|(1<<3)|(1<<2)|(1<<1)|(1<<0);              // все ноги на вывод
        
        return 1;            // После возвращения проинициальзировать память                              
}
//============================================================================
//****************************************************************************
//====================== подфункции ==========================================
void  Delay(uint32_t t)         // только с большой буквы Delay!!! Конфликтует.
    {                           // на задержке noop
    volatile uint32_t i;
    for(i = 0; i < t; i++) {
            }
    }

//============================================================================
//****************************************************************************
//================ main ======================================================


  void main (void) {
__enable_interrupt();
uint32_t timeStamp =CntT1_ms;
    for(;;) {              

       if ((CntT1_ms-timeStamp) >= LED_BLINK_PERIOD) {
          cpl (LED);
          timeStamp =CntT1_ms;
     }

  }
}
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Mar 7 2012, 16:48
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(Метценгерштейн @ Mar 7 2012, 18:08) *
Разобрался с проблемой. Она была не в счетчиках.

В настройках ИАРа я указал язык С++, а не СИ. Как только поменял на СИ- все заработало.

Вопрос- что компилятор выкидывал из кода, когда компилил на С++


Последние несколько лет использую IAR AVR настроенный как С++ и никогда компилятор не выкидывал ничего из инициализации. Правда инициализация у меня вызывается в main.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Метценгерштейн   Timer1 mega8   Mar 6 2012, 20:37
- - _Артём_   Цитата(Метценгерштейн @ Mar 6 2012, 22:37...   Mar 6 2012, 23:59
- - vao   А где настройка TCCR1A и порта ?   Mar 7 2012, 03:43
|- - demiurg_spb   А не проще меандр на pwm модуле таймера делать (и ...   Mar 7 2012, 05:22
- - Метценгерштейн   TCCR1A не настраивал, т.к. мне там ничего не нужно...   Mar 7 2012, 07:59
|- - _Pasha   Цитата(Метценгерштейн @ Mar 7 2012, 11:59...   Mar 7 2012, 11:11
- - Метценгерштейн   cpl (LED)- это есть такой Аскольд. Его макрос- т.е...   Mar 7 2012, 12:09
- - _Pasha   У меня постоянно такие проблемы возникают: разреши...   Mar 7 2012, 14:28
- - Метценгерштейн   факт- выкинул. как только на Си заменил- все путем...   Mar 7 2012, 17:02
|- - _Артём_   Цитата(Метценгерштейн @ Mar 7 2012, 19:02...   Mar 7 2012, 17:10
- - ReAl   С IAR-ом мало знаком, но некоторые соображения име...   Mar 7 2012, 17:16
- - Метценгерштейн   да, так и есть. Как только написал extern ...   Mar 7 2012, 19:09
|- - Xenia   Цитата(Метценгерштейн @ Mar 7 2012, 23:09...   Mar 7 2012, 21:56
- - Метценгерштейн   спасибо, развернуто и понятно.   Mar 9 2012, 08:09


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 21:44
Рейтинг@Mail.ru


Страница сгенерированна за 0.01385 секунд с 7
ELECTRONIX ©2004-2016