Все элементарно.
Кто то читает по диагонали и невнимательно.
Тема уже не единожды обсуждалась на форуме.
При заливке ЛЮБОГО скетча, он подстраивает таймеры на нужные ему частоты. Для запуска tone()/millis() и тд и тп.
Соответственно без предварительного обнуления регистра, устанавливать в нем биты бессмысленно...
Так я не пытался добиться скоростей в МГц, просто пока изучал документацию, проще же видеть заработал вобще таймер или нет по нему, а не переключаться на осциллограф, что тут не понятного
Тут другое интересно. Один и тот же код - из сообщения #114 - по словам ТС сначала выдавал 96 Гц, а потом когда я достал Нану и доказал человеку, что код рабочий - и у него стал генерить 4 МГц, как положено :)
3d_killer Ну как так-то?
Подозреваю, что вы опять что-то перепутали и либо запускали не этот код или измеряли частоту на неверном пине или еще что... не обижайтесь, но нельзя быть настолько невнимательным. Когда вы делаете совсем не то, что пишете - найти ошибку очень трудно.
не, и пин верный и код я запускал тот который присылал, после добавления данных строк заработало же
TCCR0 =0;
TCCR0=0;
TCNT0 =0;
Код, который я вам выкладывал в сообщении 114 - уже содержит эти строчки. Но он, по вашему уверению, у вас не работал. Так что либо вы вчера врали. что запускали мой код, либо вы неисправимый путаник и ваши руки делают не то, о чем думает голова.
avrdude обратные фьюзы все отключено, да и я сегодня их не менял, вчера все таймеры заработали по этой программе потом загрузил другую, в ней возникли проблемы и опять загрузил эту проверить и вобщем вот так
вчера, то есть это было уже сегодня в 2 или 3 ночи не помню, все выходы заработали как выставлено, а теперь не работает, то есть выход на лапы есть но совсем что-то не то что выставлено
Вот код полностью рабочий, единственное не пойму, по калькулятору я выставляю что мне нужно получить частоту на первом таймере 1600 Гц или на любом другом, в итоге получаю частоту в 2 раза меньшую.
когда я включаю таймер2, то ложится все, отдельно он отлично работает, далее в таком виде в loop, выставление другой частоты не работает, а стоит мне закомментировать таймер 3, то то, что находится в loop начинает работать, это как так вообще может быть?
3д киллер, я больше не буду вам помогать, потому что это бесполезно. Вы не слушаете ничего того, что вам говорят .
Вы задаете вопрос про одно, а код выкладываете про другое. Как я могу ответить,почему частота неверная, если вы не показали код, как ее настраиваете?
И вечно эта неряшливость в коде. Какие-то закомментированные куски, пустые прерывания, всякий мусор...
Вам писали уже про прерывания, я только что писал про лишние биты... И что - опять херня в коде.
я этот код записал на плату меги 128 только пин 13 поставил, 4мгц ровно
а теперь поменяйте на таймер3 и пин на 3.
НИЧЕГО НЕ ДОБАВЛЯЙТЕ
я не придавал значения, вроде присваиваешь сразу регистрам и как бы смысл их обнулять, а тут вот как оказалось
поменял, тоже 4 Мгц на OC3A
только на нулевом 31.25кГц
я не придавал значения, вроде присваиваешь сразу регистрам и как бы смысл их обнулять, а тут вот как оказалось
да нет, дело не в этом.
Похорошему надо начинать с обнуления регистров, чтобы предыдущие настройки не мешали. Но в данном случае это не имеет значения
только на нулевом 31.25кГц
на 16 МГц так и должно быть, читайте даташит внимательнее. Если CTC включите - будет 4 МГц, как на других таймерах
Вот тут не понял, делителя нет, предел счетчика 1, одинаково же должно быть
Вот тут не понял, делителя нет, предел счетчика 1, одинаково же должно быть
СТС забыли
Вот тут не понял, делителя нет, предел счетчика 1
без СТС предел счетчика 255
16 МГц / (256 *2) = 31.25 КГц
вот спасибо, вы столько времени потратили на меня, пишите адрес с меня магар
да не за что
Все элементарно.
Кто то читает по диагонали и невнимательно.
Тема уже не единожды обсуждалась на форуме.
При заливке ЛЮБОГО скетча, он подстраивает таймеры на нужные ему частоты. Для запуска tone()/millis() и тд и тп.
Соответственно без предварительного обнуления регистра, устанавливать в нем биты бессмысленно...
Так же, щас проц перепаяю у меня их много
Жаль что вам мозг нельзя перепаять так же быстро...
Вы очень любезны
А как еще ? Настроить прерывания от таймера на 4 такта = 2 Мгц и ждать их в прерывании, где внутри digitaRead digitalWrite - это нонсенс !
Голое прерывание на АСМ с одним SBI и одним RETI и то не каждый раз срабатывает при 24 тактах таймера !!!
Только при 26 (меняем 11 на 12) тактах начинает работать правильно ! Из них полезных всего 2 !!!
Так я не пытался добиться скоростей в МГц, просто пока изучал документацию, проще же видеть заработал вобще таймер или нет по нему, а не переключаться на осциллограф, что тут не понятного
Komandir, да не о прерываниях речь.
Тут другое интересно. Один и тот же код - из сообщения #114 - по словам ТС сначала выдавал 96 Гц, а потом когда я достал Нану и доказал человеку, что код рабочий - и у него стал генерить 4 МГц, как положено :)
3d_killer Ну как так-то?
Подозреваю, что вы опять что-то перепутали и либо запускали не этот код или измеряли частоту на неверном пине или еще что... не обижайтесь, но нельзя быть настолько невнимательным. Когда вы делаете совсем не то, что пишете - найти ошибку очень трудно.
Если режим работы таймера меняется, то первым делом надо таймер остановить - выставить все биты делителя в 0. Поменять настройки и потом включать.
не, и пин верный и код я запускал тот который присылал, после добавления данных строк заработало же
не, и пин верный и код я запускал тот который присылал, после добавления данных строк заработало же
Код, который я вам выкладывал в сообщении 114 - уже содержит эти строчки. Но он, по вашему уверению, у вас не работал. Так что либо вы вчера врали. что запускали мой код, либо вы неисправимый путаник и ваши руки делают не то, о чем думает голова.
не я не вру, вот сейчас ковыряюсь, загрузил опять код
больше ничего нет, он опять 95 Гц выдает, ппц какой-то
вчера заработало, сегодня не работает я честно в растерянности
вчера заработало, сегодня не работает я честно в растерянности
про то и говорю. Нет у вас уверенности в том, что вы делаете - потому ничего и не выходит.
Но я больше с вами ночами сидеть не буду, сами косяк ищите.
если не сложно скиньте hex файл попробовать, не могу понять в чем причина такого поведения
3d_killer@mail.ru
Выслал HEX - 2 МГц на OC3A
залил, 92 Гц на выходе, на плате кроме проца, 2х конденсаторов и кварца ничего нет, спасибо буду уже разбираться с железом, проблема не в программе
...дело было не в бобине...)))
А что с фьюзами ? Внешний кварц - все cksel и sut надо поднимать.
avrdude обратные фьюзы все отключено, да и я сегодня их не менял, вчера все таймеры заработали по этой программе потом загрузил другую, в ней возникли проблемы и опять загрузил эту проверить и вобщем вот так
вчера, то есть это было уже сегодня в 2 или 3 ночи не помню, все выходы заработали как выставлено, а теперь не работает, то есть выход на лапы есть но совсем что-то не то что выставлено
Вот код полностью рабочий, единственное не пойму, по калькулятору я выставляю что мне нужно получить частоту на первом таймере 1600 Гц или на любом другом, в итоге получаю частоту в 2 раза меньшую.
это вот тут вы пытаетесь 1600 Гц получить или где?
ничего похожего не вижу.
Вы даташит-то прочитали или продолжаете вслепую биты в регистрах тасовать? Зачем в TCCR!B старший бит используется, посмотрите.
Да прочитал я все, я не имел в виду именно 1600, любую частоту которую я выставляю, осликом вижу в 2 раза меньшую.
Вобще как-то странно работает, вот например весь код:
когда я включаю таймер2, то ложится все, отдельно он отлично работает, далее в таком виде в loop, выставление другой частоты не работает, а стоит мне закомментировать таймер 3, то то, что находится в loop начинает работать, это как так вообще может быть?
3д киллер, я больше не буду вам помогать, потому что это бесполезно. Вы не слушаете ничего того, что вам говорят .
Вы задаете вопрос про одно, а код выкладываете про другое. Как я могу ответить,почему частота неверная, если вы не показали код, как ее настраиваете?
И вечно эта неряшливость в коде. Какие-то закомментированные куски, пустые прерывания, всякий мусор...
Вам писали уже про прерывания, я только что писал про лишние биты... И что - опять херня в коде.
Я долго терпел, но надоело. Трахайтесь сами.
подавление шума
убрал его, ничего не поменялось. Просто я его ставил, пробовал, так как не работает
подавление шума
какого нахер шума? Вы идиот? Это работает только в режиме захвата! Где у вас захват в коде?Вы когда даташит прочитаете?
Короче, нахер. Когда ДШ выучите наизусть - тогда приходите.
вот все по документации, должны работать одинаково, OC1A - 800Гц,OC3A - 800Гц, OC0 - 1600Гц
а не, у них нет делителя 32
вот так все на 64