|
0 / 0 / 0
Регистрация: 03.06.2013
Сообщений: 51
|
||||||
Получение пилообразного сигнала, с использованием прерывания (8051)11.05.2015, 18:26. Показов 2292. Ответов 18
Метки нет (Все метки)
Необходимо получить пилообразный сигнал.
Суть такая: Я использую ЦАП(8 бит), максимальное число 255, при таком числе у меня не получиться период 0.1сек, для этого я использую прерывание, но не работает Подскажите в чем ошибка, что не так я делаю, пожалуйста.
0
|
||||||
| 11.05.2015, 18:26 | |
|
Ответы с готовыми решениями:
18
В чем ошибка? График пилообразного сигнала Прерывания на мк 8051 таймер прерывания 8051 |
|
Модератор
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,857
|
||||
| 11.05.2015, 20:09 | ||||
|
и уже в прерывании ![]() разумеется прерывание больше не вызывается Добавлено через 2 минуты ![]() он больше считать не будет
1
|
||||
|
1184 / 670 / 113
Регистрация: 15.05.2012
Сообщений: 4,078
|
|
| 12.05.2015, 09:18 | |
|
Можно же проще, без прерывания, программной задержкой.
0
|
|
|
0 / 0 / 0
Регистрация: 03.06.2013
Сообщений: 51
|
|
| 12.05.2015, 13:40 [ТС] | |
|
0
|
|
|
0 / 0 / 0
Регистрация: 03.06.2013
Сообщений: 51
|
||||||
| 12.05.2015, 13:49 [ТС] | ||||||
|
ValeryS,
все убрал
![]()
0
|
||||||
|
Модератор
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,857
|
|
| 12.05.2015, 14:05 | |
|
во первых задавай свое число не в аккумуляторе а в каком то регистре
я например не уверен что аккумулятор не портится при заходе в прерывание во вторых если ты используешь Протеус то используй по полной в частности его возможности отладки когда запустишь программу стрелочкой то нажми паузу, и появится окошко с листингом, может не появится в меню нужно добавить и вот там можешь программу и по шагам прогонять и точки останова устанавливать Добавлено через 2 минуты вот что подумал а ты в какой режим таймер загнал? тебе нужен 8 битный с перезагрузкой во всех других нужно записывать значения в TL0 TH0 в прерывании иначе счетчик начинает считать с 0
1
|
|
|
0 / 0 / 0
Регистрация: 03.06.2013
Сообщений: 51
|
|||||
| 12.05.2015, 18:48 [ТС] | |||||
|
программа заработала, большой вам поклон правильно ли я заношу число в регистровую пару? период 0,1 сек. значит делим 0,1/256=0,00039 (это 0,39 мс) получаем число 65145 и заносим его
0
|
|||||
|
Модератор
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,857
|
|||||||
| 12.05.2015, 19:06 | |||||||
|
во первых во вторых ты не сможешь в 8 бтьный регистр загнать это число частота таймера(тик) равен 1/12 частоты кварца значит на 12 мГц это будет 1 мГц 1 тик =1 микросекунде тебе нужно 390 микросекунд это больше чем 256, значит 8 ричным иаймером не обойдемся нужен 16ричный нужно в регистры TL0 TH0 нужно записать такое число чтобы через 390 тиков таймер должен быть равен 0 число это -390 в шеснадцетиричке FE7A вот и записываем
1
|
|||||||
|
0 / 0 / 0
Регистрация: 03.06.2013
Сообщений: 51
|
|||||||||||
| 12.05.2015, 20:14 [ТС] | |||||||||||
|
ValeryS, пытался разобраться со 2ым режимом, почему то не работает, я что то недопонимаю наверное (даже при изменении значения в регисторах, сигнал не меняется) читаю книжку и там написано при каждом переполнении TL0, происходит перезагрузка из TH0 в TL0 (не понимаю это)
0
|
|||||||||||
|
Модератор
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,857
|
|||
| 12.05.2015, 20:27 | |||
|
но это 8 битный режим т.е максимально возможный пересчет 256 (значение 0) 256 мкС, тебе этого мало только в порт скинул новое прерывание и так по кругу
1
|
|||
|
0 / 0 / 0
Регистрация: 03.06.2013
Сообщений: 51
|
|||||||
| 12.05.2015, 20:55 [ТС] | |||||||
![]() да я заметил, что из прерывания я выбраться не могу. Здесь встал и все:
0
|
|||||||
|
Модератор
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,857
|
|||
| 12.05.2015, 21:09 | |||
|
было 0 стало 1 потом 2 и тд когда происходит переполнение т.е из максимального значение превращается в минимальное было 255 стало 0 для 8 битных или было 65535 стало 0 для 16 битных, происходит прерывание, если оно разрешено конечно вот у тебя значение в счетчике TL0 254 один такт стало 255 второй такт стало 0 вызов прерывания в счетчик TL0 записалось значение 254 из TH0 и опять тоже самое ![]()
1
|
|||
|
0 / 0 / 0
Регистрация: 03.06.2013
Сообщений: 51
|
|
| 12.05.2015, 21:26 [ТС] | |
|
ValeryS, ну попытаюсь объяснить как я понимаю.
вот у нас в счетчике TL0(254), проходит 2 такта,происходит вызов прерывания, и содержимое из TH0(122) переходит в TL0 и так далее а тогда я не пойму почему не работает программа я что еще не сделал?
0
|
|
|
Модератор
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,857
|
|||||
| 12.05.2015, 21:31 | |||||
1
|
|||||
|
0 / 0 / 0
Регистрация: 03.06.2013
Сообщений: 51
|
||||
| 12.05.2015, 21:50 [ТС] | ||||
|
MOV TL0,07Ah так я запутался, TL0 254 доходит до максимального, идет прерывание, и из TH0 в TL0 опять приходит 254
0
|
||||
|
Модератор
8979 / 6745 / 921
Регистрация: 14.02.2011
Сообщений: 23,857
|
||||
| 12.05.2015, 22:10 | ||||
|
но частоту в 0.1 секунды не получишь, это будет минимальная частота при 8битном режиме потом можешь поиграться с числами в TH0 и TL0 будет увеличиваться частота Добавлено через 3 минуты
1
|
||||
|
0 / 0 / 0
Регистрация: 03.06.2013
Сообщений: 51
|
||
| 12.05.2015, 22:17 [ТС] | ||
|
я разобрался и много, что понял, спасибо вам
0
|
||
| 12.05.2015, 22:17 | |||
|
Не по теме:
Очистка экрана в консоли у меня начинается раздвоение личности как к Вам обращатся?
0
|
|||
|
0 / 0 / 0
Регистрация: 03.06.2013
Сообщений: 51
|
||
| 12.05.2015, 22:31 [ТС] | ||
![]() живу с одногрупницей, мой компьютер сломался, через нее сижу. надо сменить, а мне лень)
0
|
||
| 12.05.2015, 22:31 | |
|
Помогаю со студенческими работами здесь
19
Объясните механизм работы АЦП с использованием пилообразного напряжения? Влияние ступенчатого сигнала на апериодическое звено (8051) Программа с использованием подпрограмм intel 8051 Вызов прерывания TIM при захвате изменения сигнала со входа в STM32F030 Резидент обработки прерывания int 31h - формирование звукового сигнала заданной длительности и частоты Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|