0 / 0 / 0
Регистрация: 13.10.2015
Сообщений: 31
|
|
1 | |
Timer1 считает до 32768, а не до 6553631.10.2015, 13:12. Показов 3314. Ответов 51
Метки нет (Все метки)
Нужен больший диапазон, т.е. чтобы измерять можно было до 50 тысяч единиц, а на деле получается, что таймер не уходит дальше 32768, переваливая эту цифру он начинает считать в обратном порядке но уже со знаком минус перед числом.
Как его заставить считать в положительной области до конца диапазона? Искренне не могу понять в каком регистре была допущена ошибка.
0
|
31.10.2015, 13:12 | |
Ответы с готовыми решениями:
51
Вывод числа +32768 STM32F407 и генератор 32768 Hz Видео карта загружена на 65536% Что за сессия Windows id 65536? |
484 / 331 / 32
Регистрация: 15.08.2011
Сообщений: 1,071
|
|
31.10.2015, 13:41 | 2 |
Наверно режим таймера не тот установлен.
Только вам конкретно никто ничего не скажет пока вы не расскажете какой процессор, какой включаете режим, итп.
0
|
0 / 0 / 0
Регистрация: 13.10.2015
Сообщений: 31
|
|
31.10.2015, 13:47 [ТС] | 3 |
paskal,
Не знаю, правильно ли я понял, что от меня требуется, но попытаюсь объяснить: atmega16 Timer/Counter 1 initialization Clock source: System Clock Clock value: 8000,000 kHz Mode: Normal top=0xFFFF Noise Canceler: Off Input Capture on Falling Edge Timer Period: 8,192 ms Input Capture Interrupt: On
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,516
|
|
31.10.2015, 16:25 | 4 |
Сообщение было отмечено ValeryS как решение
Решение
gin_1995,
используй unsigned int а не int 32767 это 0x7FFF после добавления 1 получится 0x8000 так эти 0x8000 int видит как минус 32768 unsigned int как 32768
1
|
0 / 0 / 0
Регистрация: 13.10.2015
Сообщений: 31
|
||||||
31.10.2015, 17:46 [ТС] | 5 | |||||
ValeryS, к сожалению, не помогло. Всё равно он так же считает обратно, перевалив за 32767 и пошло -32767, -32766 и т.д. до общего числа "65535" и начинает считать от нуля и выше.
а такой вопрос, как правильно снимать данные с регистров TCNT1H/TCNT1L ? я делаю так
0
|
0 / 0 / 0
Регистрация: 13.10.2015
Сообщений: 31
|
||||||
31.10.2015, 18:42 [ТС] | 7 | |||||
ValeryS, как получается, так и смотрю, через одно место, никак иначе не выходит
Вот, вообще я собираю паузометр. Но т.к. в регистрах я разбираюсь с трудом, как и в остальном, прошу сильно не ругать, а пояснить доступно. Кусок кода:
0
|
0 / 0 / 0
Регистрация: 13.10.2015
Сообщений: 31
|
|
31.10.2015, 18:44 [ТС] | 8 |
ValeryS, вот что показывает мне ТЖКИ при 55мс
0
|
0 / 0 / 0
Регистрация: 13.10.2015
Сообщений: 31
|
||||||
31.10.2015, 18:56 [ТС] | 10 | |||||
ValeryS, пардон, не захватил верхнюю часть кода.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,516
|
|||||||||||
31.10.2015, 18:59 | 11 | ||||||||||
напиши так
%u выводит число без знака Добавлено через 2 минуты нужно, как минимум
тоже и для второй строки
1
|
0 / 0 / 0
Регистрация: 13.10.2015
Сообщений: 31
|
|
31.10.2015, 19:02 [ТС] | 12 |
ValeryS, спасибо! сам бы не додумался.
но теперь не срабатывает прерывание. как его правильно настроить, чтобы он прерывал при достижении 65536? когда я это делал до 32 тысяч с копейками, всё срабатывало и выводил сообщение при переполнении. а теперь при аналогичной схеме показывает сообщение 61057 и не выводит нужное сообщение.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,516
|
||||||||||||||||
31.10.2015, 19:12 | 13 | |||||||||||||||
прерывание то срабатывает
но число не может быть больше чем 65535 1 тут несколько путей решения использовать сторонний флаг, который возводить в прерывании 2 использовать переменную pause больше чем 16 бит типа
1
|
0 / 0 / 0
Регистрация: 13.10.2015
Сообщений: 31
|
|
31.10.2015, 19:19 [ТС] | 14 |
ValeryS, к сожалению, второй путь не помог почему-то.
всё равно прыгает сообщение с 61 тысячью и копейками. а более никак по данному пути не получится пройти? а что за первый путь, подробнее можно?
0
|
179 / 164 / 30
Регистрация: 14.02.2013
Сообщений: 1,464
|
|||||||||||
31.10.2015, 20:29 | 15 | ||||||||||
Запишите не так
0
|
0 / 0 / 0
Регистрация: 13.10.2015
Сообщений: 31
|
|
31.10.2015, 20:43 [ТС] | 16 |
VladimirU, увы, но нет. всё равно тоже самое. вместо вывода сообщения о переполненни Tpause>65536 mks, он выводит Tpause=61057 mks, которое постоянно моргает.
0
|
Модератор
8908 / 6677 / 918
Регистрация: 14.02.2011
Сообщений: 23,516
|
|||||||||||
31.10.2015, 20:59 | 17 | ||||||||||
ну все же просто
0
|
0 / 0 / 0
Регистрация: 13.10.2015
Сообщений: 31
|
||||||
31.10.2015, 22:57 [ТС] | 18 | |||||
ValeryS,
вот не поверите, всё равно не работает, даже если это просто. может я чайник полный и не понимаю элементарного, но вот вам кусок кода. Кликните здесь для просмотра всего текста
так же могу приложить основные файлы проекта
0
|
179 / 164 / 30
Регистрация: 14.02.2013
Сообщений: 1,464
|
|
31.10.2015, 23:54 | 19 |
65535 unsigned (int)
как вы хотите проверить pause>65536 если после 65535 идёт 0.
0
|
0 / 0 / 0
Регистрация: 13.10.2015
Сообщений: 31
|
|
31.10.2015, 23:59 [ТС] | 20 |
VladimirU, ну как-то хочу проверить, потому что это суть задания. На железе можно выдать куда больше чем эти 65536, и я в этом случае должен выдать данное сообщение.
0
|
31.10.2015, 23:59 | |
31.10.2015, 23:59 | |
Помогаю со студенческими работами здесь
20
Является ли число 32768 степенью 2 Timer1 в STM8L atmega32A Timer1 timer1 и файлы timer1 - 16 bit Ошибка: out of memory allocating 65536 bytes Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |