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

 
 
> 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, 19:09
Сообщение #2


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

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



да, так и есть. Как только написал

extern "C" char __low_level_init (void)

сразу на С++ все заработало. Без extern "C" - на С++ не работает.

А что тут получается? Что дает extern "C" ? Принудительно эту функцию компилит как Си?
Go to the top of the page
 
+Quote Post
Xenia
сообщение Mar 7 2012, 21:56
Сообщение #3


Гуру
******

Группа: Модератор FTP
Сообщений: 4 479
Регистрация: 20-02-08
Из: Москва
Пользователь №: 35 237



Цитата(Метценгерштейн @ Mar 7 2012, 23:09) *
Без extern "C" - на С++ не работает.
А что тут получается? Что дает extern "C" ? Принудительно эту функцию компилит как Си?

А потому что у C++ того - ... полиморфизм sm.gif. То бишь в нем разрешается иметь много одинаково названных функций, отличающихся только списком параметров и/или возвращаемым значением. А простой C такие вольности не позволяет.

А чтобы разные функции под C++ не перепутались, компилятору приходится их назвать по-разному, придумывая им названия из комбинации имени функции, которую ей дал программист, с шифром, указывающим на типы возвращаемого значения и параметров. Например, функцию:
char __low_level_init(void)
C++ компилятор мог бы скопилировать (дать метку) под именем C_V__low_level_init или как-нибудь в том же роде.

Поэтому на C++ обычно невозможно создать такую метку функции, чтобы она линковалась с "нормальными" библиотеками или ассемблерным кодом. Разве что на ассемблере можно создать метку, чтобы она с C++ой компиляцией совпадала. Впрочем, посредством extern "C" или других экстернов можно заставить С++ компилить функцию по другим правилам, только это уже не будет C++.

У обычного же C имена функций обычно предсказуемы, хотя и этот частенько модифицирует данное програмистом имя, добавляя к нему спереди префикс (чаще подчеркивание). И лишь славный ассемблер sm.gif компилит функции с тем же именем, как ее назвал программист.
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, 16:08
|- - _Артём_   Цитата(Метценгерштейн @ Mar 7 2012, 18:08...   Mar 7 2012, 16:48
- - Метценгерштейн   факт- выкинул. как только на Си заменил- все путем...   Mar 7 2012, 17:02
|- - _Артём_   Цитата(Метценгерштейн @ Mar 7 2012, 19:02...   Mar 7 2012, 17:10
- - ReAl   С IAR-ом мало знаком, но некоторые соображения име...   Mar 7 2012, 17:16
- - Метценгерштейн   спасибо, развернуто и понятно.   Mar 9 2012, 08:09


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

 


RSS Текстовая версия Сейчас: 26th July 2025 - 01:39
Рейтинг@Mail.ru


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