Вопрос такой. Функция прерывания стоит ДО ЦИКЛА. По идее прерывание должно стоять внутри цикла, чтоб исполняться несколько раз, иначе вся программа должна будет посчитать только одну секунду и всё.
Отлаживаю на макетке с 128 мегой с кварцем 8мгц. Флоукод 6. Добиться реальных секунд получилось выставив делитель таймера 1:1024 и сделав счетчик в прерывании до 244. Почему так получается не понятно.
Здравствуйте. Изучаю Ваши уроки. Подскажите, пустой цикл Loop не должен совпадать с выбранной частотой МК? Частота в настройках МК и в Flowcode и Proteus в Attiny13 9.6 Мгц. Делаю в цикле вывод 1 на порт B0 и следом за ним вывод 0. В протеусе с помощью COUNTER TIMER замеряю частоту и вижу 960000 (не понятно почему не 9600000, фьюзы выставлены без деления частоты), я думал таким образом можно попробовать проверить на какой частоте работает МК. .
Здравствуйте. Все операции в контроллере выполняются за 1 или более тактов контроллера, такт - это один импульс генератора, то есть 1/9600000 сек. команды которые вы используете для вывода на пин B0 на самом деле содержать в себе несколько простейших команд, вот и получается что один ваш цикл выполняется примерно за 10 тактов - в результате частота в десять раз меньше.
Здравствуйте. Вы не подскажите почему в функции delay значения только до 2000 у меня не получается из за этого сделать плавное диммирование Если ставишь например 3000 пишет в выскакивающем окне от 0-2000
подскажите, с легкостью перелетело прерывание на страницу "2page" по нажатию INT0 (кнопка поставлена на INT0 и вызывает успешно прерывание отправляя на "2page" но если код программы "2 page" разместить в LOOP происходит "забывание" как вернуться назад в MAIN. просмотрел 2 урока, так и не заставил Flowcode вернуться в MAIN назад, если в LOOP происходит все, без LOOP он сам знает назад дорогу, прыгает назад в MAIN сам успешно выполнив все, а если в LOOP то это пропавший без вести код, который остался в LOOP из которого даже еще одно прерывание размещенное в LOOP не может выйти, да и даже не дает выбрать "Main", а если добавить "page3" туда не выпрыгивает, хоть и добавив "решение" видит что ему нажали INT0 и срабатывает "да" но прерывание и LOOP какая то безвозвратная долина и билет в один конец. А требовалось не так и много, при нажатии прерывания заставить мигать лампочку, именно мигать а не гореть. Если лампочку заставить гореть, то прерывание работает без вопросов. Но как только добавить мигание лампочкой вкл.выкл порт через DELAY или без DELAY то взамен отваливается прерывание этому миганию которое там же в LOOP еще добавлено. Решение его видит, что INT0 нажимается, но при нажатии INT0 из LOOP выхода нет как из пропасти. Выход был убрать LOOP, но очень нужно мигание, а не горение лампочки. Код простейший, отлично работает - нажав кнопку включается лампочка, нажав повторно - выключается. Все работает четко. Но если добавить "помигать" а это ну очень нужно (даже убрав мигать оставив LOOP - это безвыходный результат), то отваливается прерывание словно его и нет в коде. Оно в коде есть, но не хочет работать, как муляж. Почему LOOP и прерывание невозможно подружить ? Как мигать без LOOP, в уроках 6 и 7 не нашли ответ сами. LOOP от жадности не дал прерыванию уйти назад в MAIN и на другие макросы не пустил. Мы в тупике из за этого LOOP. Помогите найти выход) Спасибо большое ! Или прерывание в LOOP это билет в один конец. Но очень нужно мигать именно лампочке, и единственная проблема это это прерывание, которое "застряло" хоть и отлично видит что LOOP его понимает, даже решение делает а выходить и не собирается, как и не замечает что там стоит прерывание и пора назад в MAIN из LOOP вернуться.
потому что нельзя ставить бесконечный цикл LOOP. как он из него выйдет? программа которая выполняется по прерыванию должна быть максимально короткой и в идеале не содержать пауз DELAY. в этом суть прерывания. в программе почти всегда должен быть ТОЛЬКО ОДИН бесконечный цикл. все остальные операторы LOOP должны иметь условие, по которому цикл прекращается
RADIOSOFT большое пребольшое спасибо, попробуем 2 микросхемы) вместо прерывания 2 микросхема получит сигнал на выполнение команды мигать или не мигать диодом, а первая обработает нажатие кнопки, 2 шт. atmega8 не так и много) разделим получившуюся прошивку на 2 микросхемы, получив активный вход вторая микросхема сработает как вкл-выкл мигание, но еще дешевле решение кнопка с залипанием и 1 микросхема, а если без залипания, то только 2 микросхемы, причем с 2 микросхемами даже интереснее выйдет, портов там много,
RADIOSOFT вполне возможно сделать без loop, добавив счетчик x=x+1 циклов, delay 1сек, каждый цикл выйдет 1сек. и удастся мигать сделав счетчик скорее всего, пришла идея заказать attiny13 они за 10шт. 2.7$ и сделать на их прошивку
Здравствуй, не могу разобратся с прерыванием по таймеру TMR0 overflow на Аттини85 . Не происходит компиляция, пишет вот такое - error: 'TIMSK0' undeclared (first use in this function) . error: (Each undeclared identifier is reported only once. error: for each function it appears in.
у тебя прерывание стоит до цикла а программа осн крутится в нем ... мб фк не эмулирует прерывание по причине что проц его воспроизведет один раз до того как уйдет в цикл
Поясните, пожалуйста, что имелось ввиду. У меня при выборе прерываний по таймеру все паузы увеличиваются в разы. Если в коде 250 мс, то реально это 1 сёк. Почему так?
вот в моей программе сделато как в примере в протеусе все работает ibb.co/mGrFnw4 в железе то же пробовал простой секундомер до 9 все работает могу скинуть файл
сейчас проверил да действительно не совпадает с реальным временем, по моему скрину где zachel надо поставить 15 а не 30 походу столько времени тратится на вывод индикатора на LCD такого не заметил.
+Vadim Buba там прерывания не по компаратору, я неправильно назвал. у меня отличается потому что менял некоторые файлы программы. пришли мне свой флоукодовский файл и протеуса
+RADIOSOFT Прерывания в программе ставил по переполнению счетчика, как в уроке. Я просто описал отличия своего фловкода от вашего. Файлик сброшу позже, т.к. пишу с телефона, не дома.
Спасибо!👍
Вопрос такой. Функция прерывания стоит ДО ЦИКЛА. По идее прерывание должно стоять внутри цикла, чтоб исполняться несколько раз, иначе вся программа должна будет посчитать только одну секунду и всё.
функция ВКЛЮЧАЕТ прерывания и далее они работаю самостоятельно.
@@RADIOSOFT1 понял. спасибо
Отлаживаю на макетке с 128 мегой с кварцем 8мгц. Флоукод 6. Добиться реальных секунд получилось выставив делитель таймера 1:1024 и сделав счетчик в прерывании до 244. Почему так получается не понятно.
Здравствуйте. Изучаю Ваши уроки.
Подскажите, пустой цикл Loop не должен совпадать с выбранной частотой МК?
Частота в настройках МК и в Flowcode и Proteus в Attiny13 9.6 Мгц. Делаю в цикле вывод 1 на порт B0 и следом за ним вывод 0.
В протеусе с помощью COUNTER TIMER замеряю частоту и вижу 960000 (не понятно почему не 9600000, фьюзы выставлены без деления частоты), я думал таким образом можно попробовать проверить на какой частоте работает МК.
.
Здравствуйте. Все операции в контроллере выполняются за 1 или более тактов контроллера, такт - это один импульс генератора, то есть 1/9600000 сек. команды которые вы используете для вывода на пин B0 на самом деле содержать в себе несколько простейших команд, вот и получается что один ваш цикл выполняется примерно за 10 тактов - в результате частота в десять раз меньше.
"Properties" (пропертиз) это "Свойства", а не "Пропорции".
В остальном всё хорошо и доступно рассказывается.
I realize it's quite off topic but do anybody know of a good website to watch newly released tv shows online ?
@Augustus Edgar flixportal xD
@Magnus Payton thank you, I went there and it seems to work :) I appreciate it!!
@Augustus Edgar happy to help xD
Здравствуйте. Вы не подскажите почему в функции delay значения только до 2000 у меня не получается из за этого сделать плавное диммирование Если ставишь например 3000 пишет в выскакивающем окне от 0-2000
в 5 версии такой проблемы нет
@@RADIOSOFT1 Спасибо
подскажите, с легкостью перелетело прерывание на страницу "2page" по нажатию INT0 (кнопка поставлена на INT0 и вызывает успешно прерывание отправляя на "2page" но если код программы "2 page" разместить в LOOP происходит "забывание" как вернуться назад в MAIN.
просмотрел 2 урока, так и не заставил Flowcode вернуться в MAIN назад, если в LOOP происходит все, без LOOP он сам знает назад дорогу, прыгает назад в MAIN сам успешно выполнив все, а если в LOOP то это пропавший без вести код, который остался в LOOP из которого даже еще одно прерывание размещенное в LOOP не может выйти, да и даже не дает выбрать "Main", а если добавить "page3" туда не выпрыгивает, хоть и добавив "решение" видит что ему нажали INT0 и срабатывает "да" но прерывание и LOOP какая то безвозвратная долина и билет в один конец. А требовалось не так и много, при нажатии прерывания заставить мигать лампочку, именно мигать а не гореть. Если лампочку заставить гореть, то прерывание работает без вопросов. Но как только добавить мигание лампочкой вкл.выкл порт через DELAY или без DELAY то взамен отваливается прерывание этому миганию которое там же в LOOP еще добавлено. Решение его видит, что INT0 нажимается, но при нажатии INT0 из LOOP выхода нет как из пропасти. Выход был убрать LOOP, но очень нужно мигание, а не горение лампочки. Код простейший, отлично работает - нажав кнопку включается лампочка, нажав повторно - выключается. Все работает четко. Но если добавить "помигать" а это ну очень нужно (даже убрав мигать оставив LOOP - это безвыходный результат), то отваливается прерывание словно его и нет в коде. Оно в коде есть, но не хочет работать, как муляж. Почему LOOP и прерывание невозможно подружить ? Как мигать без LOOP, в уроках 6 и 7 не нашли ответ сами. LOOP от жадности не дал прерыванию уйти назад в MAIN и на другие макросы не пустил. Мы в тупике из за этого LOOP. Помогите найти выход) Спасибо большое ! Или прерывание в LOOP это билет в один конец. Но очень нужно мигать именно лампочке, и единственная проблема это это прерывание, которое "застряло" хоть и отлично видит что LOOP его понимает, даже решение делает а выходить и не собирается, как и не замечает что там стоит прерывание и пора назад в MAIN из LOOP вернуться.
потому что нельзя ставить бесконечный цикл LOOP. как он из него выйдет? программа которая выполняется по прерыванию должна быть максимально короткой и в идеале не содержать пауз DELAY. в этом суть прерывания.
в программе почти всегда должен быть ТОЛЬКО ОДИН бесконечный цикл. все остальные операторы LOOP должны иметь условие, по которому цикл прекращается
RADIOSOFT
большое пребольшое спасибо, попробуем 2 микросхемы) вместо прерывания 2 микросхема получит сигнал на выполнение команды мигать или не мигать диодом, а первая обработает нажатие кнопки, 2 шт. atmega8 не так и много) разделим получившуюся прошивку на 2 микросхемы, получив активный вход вторая микросхема сработает как вкл-выкл мигание, но еще дешевле решение кнопка с залипанием и 1 микросхема, а если без залипания, то только 2 микросхемы, причем с 2 микросхемами даже интереснее выйдет, портов там много,
master kit
можно сделать и на одной, просто грамотно использовать прерывания и задержки
RADIOSOFT
вполне возможно сделать без loop, добавив счетчик x=x+1 циклов, delay 1сек, каждый цикл выйдет 1сек. и удастся мигать сделав счетчик скорее всего, пришла идея заказать attiny13 они за 10шт. 2.7$ и сделать на их прошивку
Здравствуй, не могу разобратся с прерыванием по таймеру TMR0 overflow на Аттини85 .
Не происходит компиляция, пишет вот такое - error: 'TIMSK0' undeclared (first use in this function)
.
error: (Each undeclared identifier is reported only once.
error: for each function it appears in.
ruclips.net/video/POa2YrXwcgg/видео.html
@@RADIOSOFT1 Все разобрались с этим.Спасибо
у тебя прерывание стоит до цикла а программа осн крутится в нем ... мб фк не эмулирует прерывание по причине что проц его воспроизведет один раз до того как уйдет в цикл
а вот для пик прерывания нужно выбрать вот так
ibb.co/DwnMxtN
иначе не эмулирует ни в железе, ни в протеусе
Поясните, пожалуйста, что имелось ввиду. У меня при выборе прерываний по таймеру все паузы увеличиваются в разы. Если в коде 250 мс, то реально это 1 сёк. Почему так?
вот в моей программе сделато как в примере в протеусе все работает ibb.co/mGrFnw4
в железе то же пробовал простой секундомер до 9 все работает
могу скинуть файл
сейчас проверил да действительно не совпадает с реальным временем, по моему скрину где zachel надо поставить 15 а не 30 походу столько времени тратится на вывод индикатора на LCD такого не заметил.
блин я кварц изменил на 4 мгц поэтому и 15 надо выставить
вот пример cloud.mail.ru/public/31m1/2vi9bQk7M
работает в железе
А что бы эмуляция была совсем точная то кварц нужен 3,932100
sao của bạn có ngắt UART vậy?
у меня в протеусе не работает, считает первую секунду и дальше стоит на месте
+Vadim Buba
а счетчик времени в самом низу программы что в этот момент показывает? продолжает считать или останавливается?
+RADIOSOFT счётчик внизу протеуса считает дальше, значит контроллер не висит, но и секунды не считает. Я уже и программу передирал Вашу один в один.
+RADIOSOFT
В моем Flowcod в выборе прерываний нет прерывания от компаратора. Может все дело во Flowcod? У меня ломаная версия 5.5.
+Vadim Buba
там прерывания не по компаратору, я неправильно назвал. у меня отличается потому что менял некоторые файлы программы. пришли мне свой флоукодовский файл и протеуса
+RADIOSOFT
Прерывания в программе ставил по переполнению счетчика, как в уроке. Я просто описал отличия своего фловкода от вашего. Файлик сброшу позже, т.к. пишу с телефона, не дома.
кури матчасть , только что написал таймер всё он эмулирует как надо