Форум по микроконтроллерам: Проблемы С Третьим Таймером-Счетчиком На Atmega128 - Форум по микроконтроллерам

Перейти к содержимому

Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

Проблемы С Третьим Таймером-Счетчиком На Atmega128 "undefined symbol TCNT3".

#1 Пользователь офлайн   bager 

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 6
  • Регистрация: 01 Январь 13

Отправлено 01 Январь 2013 - 19:39

Всем привет.
Друзья нужна ваша помощь.
Работаю с: Atmega128 в CodeVision AVR (2.04.4a).
Запустил первый счетчик на измерение длительности положительного импульса (с прерыванием по захвату) - работает как часы.
Теперь необходимо запустить третий счетчик для точно такой же функции. Вроде все просто, но... Компайлер ругается; "undefined symbol ICR3" и "undefined symbol TCNT3". В чем проблема, не могу понять. Очень прошу вашей помощи.
Зарание благодарен.
0

#2 Пользователь офлайн   korsaj 

  • Активный участник
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 51
  • Регистрация: 14 Март 12

Отправлено 02 Январь 2013 - 11:21

Смотрите содержание вашего хейдера (если прикреплен тот что надо). Если он прикрепляется автоматом то смотрите настройки среды (выберите нужный мка в среде).
0

#3 Пользователь офлайн   bager 

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 6
  • Регистрация: 01 Январь 13

Отправлено 02 Январь 2013 - 13:13

Привет korsaj. Спасибо за ответ и за помощь.
Хедер прикреплен правельный, проверил. Первый счетчик работает великолепно, а вот третий... В хедере прописаны TCNT1 и ICR1 как 16-ти разрядные регистры, но TCNT3 и ICR3 нет (только TCNT3H,TCNT3L,ICR3H и ICR3L, как 8-ми разрядные). Собственно говоря поэтому компайлер и ругается, но может кто нибудь знает как их прописать в хедере как 16-ти разрядные?
0

#4 Пользователь офлайн   korsaj 

  • Активный участник
  • PipPipPip
  • Группа: Пользователи
  • Сообщений: 51
  • Регистрация: 14 Март 12

Отправлено 03 Январь 2013 - 08:54

Добавь в хедер после строки #pragma used-
строки:
#define ICR3 (*(unsigned int *) 0x80) // 16 bit access
#define TCNT3 (*(unsigned int *) 0x88) // 16 bit access
тогда кодвижен будет понимать их как 16 битные регистры.
0

#5 Пользователь офлайн   bager 

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 6
  • Регистрация: 01 Январь 13

Отправлено 03 Январь 2013 - 10:15

Попробую. Спасибо за совет. Как добавлю и проверю, так сразу дам знать если работает.
0

#6 Пользователь офлайн   Admin 

  • Администратор
  • PipPipPip
  • Группа: Администратор
  • Сообщений: 585
  • Регистрация: 08 Август 08

Отправлено 06 Январь 2013 - 17:12

Ну а ещё, как вариант, можно работать напрямую с регистрами TCNT3H, TCNT3L, ICR3H, ICR3L. Дабы не привязываться к хедерам именно кодвижена.
Но главное при этом учитывать порядок записи и чтения слов в эти регистры.
0

#7 Пользователь офлайн   bager 

  • Новичок
  • Pip
  • Группа: Пользователи
  • Сообщений: 6
  • Регистрация: 01 Январь 13

Отправлено 06 Январь 2013 - 18:09

Привет админ. Я именно так и сделал. Работал напрямую с регистрами TCNT3H, TCNT3L, ICR3H, ICR3L. Все работает великолепно.
Хочу попробовать как korsaj выше посоветовал, просто сейчас на это времени нет.
Спасибо за помощь!
0

Поделиться темой:


Страница 1 из 1
  • Вы не можете создать новую тему
  • Вы не можете ответить в тему

1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей