andy8mm Пост: 297408 От 26.Mar.2011 (15:33) ДедИван, да, пора наступить на мк-грабли.
Надеюсь подключатся спецы по контроллерам, живее будет и всем интереснее.
Давайте отделим котлеты от мух.
По контроллеру все сюда.
JohnZ Пост: 306584 От 10.May.2011 (00:12)
reti можно и не пользовать. Инкремент стека и sei, - но ведь ОДНА команда короче двух ?
Прерывания сделаны мудро и просто.
Представь- выполняется программа, допустим чего то прибавили или отняли , и приходит прерывание.
МК сначала до конца выполняет загруженную команду и записывает в стек адрес СЛЕДУЮЩЕЙ команды.
После этого уходит по адресу прерывания. Возврашается из него сРазу на следующую комАнду.
Ведь ту команду уже выполнили , не надо отнимать еще раз.
То есть программа корректно продолжается.
В случае с диспетчером смтуация другая- нам не надо продолжать - нам надо выполнить его с начала.
Тут у нас самый простой диспетчер - а бывают и сложные, с внутренними таймерами-
их всегда надо выполнять каждый раз сначала.
А на майн (т.е. reset) оно само заползёт при СЛЕДУЮЩЕМ дёргании проца по питанию
А про сброс еще рано- нам нужно сформировать 33 импульса, после каждого из них будет помеха.
Тут нельзя уходить в цикл- только спать. Поэтому и нужен всегда переход в начало диспетчера.
JohnZ Пост: 306584 От 10.May.2011 (00:12)
reti можно и не пользовать. Инкремент стека и sei, - но ведь ОДНА команда короче двух ?
Прерывания сделаны мудро и просто.
Об этом я в курсе Недавно читал на каком-то сайте про Тесла-свич, Бедини и преобразование энергий. Так там было написано - Знания полученные в детском и юношеском возрасте, позже воспринимаются как "истина в последней инстанции". Знания о прерываниях я получил лет 25 назад
В случае с диспетчером смтуация другая- нам не надо продолжать - нам надо выполнить его с начала.
Тут у нас самый простой диспетчер - а бывают и сложные, с внутренними таймерами- их всегда надо выполнять каждый раз сначала.
ДедИван, - я ведь предлагал ! сделать по классической схеме, и прерывания, и датчики, и майновый цикл ... По правде сказать, это будет сложнее, но за-то надёжнее. А ?
А на майн (т.е. reset) оно само заползёт при СЛЕДУЮЩЕМ дёргании проца по питанию
А про сброс еще рано- нам нужно сформировать 33 импульса, после каждого из них будет помеха.
Тут нельзя уходить в цикл- только спать. Поэтому и нужен всегда переход в начало диспетчера.
Чё-ж рано то ? Ведь есть УЖЕ эти 33 (30) импульсов. Строка 134 !
JohnZ Пост: 306667 От 10.May.2011 (12:18)
Об этом я в курсе
А когда я начинал- мы сидели и придумывали как это вообще можно сделать.
И даже споры были- а надо ли.
Вариантов море было. Это целая эпоха.
Шо правда - то правда ... Я читал про группу разработчиков, которые с нуля спроэктировали (предварительно придумав) ЭВМ не на 2-х состояниях, а на 3-х ! Если-бы тогда им дали "дорогу", сейчас-бы не лизали зад IBM-у и Гейтсу ... ... а имели-бы свою, и получше !
Ведь есть УЖЕ эти 33
Я про тот момент когда только создали первый и переходим ко второму.
JohnZ Пост: 306667 От 10.May.2011 (12:18)
я ведь предлагал ! сделать по классической схеме, и прерывания, и датчики, и майновый цикл ...
Это надо в уме держать. Пока пишем модуль так, чтобы он потом легко встроился в сложную программу.
Так ведь та программа будет совсем по другому писаться, и датчики обрабатывать...
ДедИван, ты не ответил (пропустил ?) на вопрос о использовании ОДНОГО таракана на ДВЕ силовые части !
Будем делать ? Ведь это возможно, хотя и посложней, примерно на порядок Но ведь памяти - вагон !
На выходе логику лепить?
Тогда уж и на 555 можно делать.
Опять же узкая специализация на два канала.
А если 4 надо или 6? переделывать все?
И не смотри ты на них как на микрозвм.
Смотри как на 555 таймер, только дешевле.
Так идет к этому- Мк дешевле чем один времязадающий кондер приличного качества.
dedivan, расскажи с Тинькой13 для обычного зажигания каких результатов достигли?
Хочется разобрать и понимать програмку для 13-ой(под обычное), она сложнее или проще?
Энди, у нас программы пока как таковой вообще нет.
Это всего инициализация таймера- одного из узлов таракана.
А про обычное опережение - мы все с Издалека разобрали.
Только он за аналоговую реализацию остался.
А я за численное дифференцирование. Это целый раздел математики есть.
Со своими профессорами и академиками.
Но там все не так уж и сложно.
Найди картинку с тремя кривульками- это оно и есть.
Всех делов - три раза сложить и разделить. Получишь прогнозируемое время.
А дальше только на это время настроить таймер и запустить.
в схеме "про обычное" тинька-13 для родной катушки разве без програмки используется? (пойду перечитаю тему...
Чуть отвлечемся на обычное зажигание и вычисление времени опережения для старых катушек зажигания(не нанозажигание!)
Найди картинку с тремя кривульками- это оно и есть.
Всех делов - три раза сложить и разделить. Получишь прогнозируемое время.
А дальше только на это время настроить таймер и запустить.
[ссылка]
Прогноз делается по законам геометрии - гладкая кривая через три точки всегда однозначно определяет четвертую.
http://www.skif.biz/index.php?name=Forums&file=viewtopic&p=297471#297471
Простой пример- движок набирает обороты, каждый период получается короче.
Таракану достаточно помнить 3 предыдущих и он вычислит текущий период,
вычтет из него время накопления и вовремя включит катушку, и вовремя даст искру.
Если даже он не угадает, ошибка будет небольшой, движок вещь инерционная,
у него не может быть больших и резких изменений в оборотах.
Тем более за период одного оборота.
Но и эта ошибка сразу будет учтена к следующему такту- путем перезаписи всех
трех ячеек памяти. Всего три ячейки- никаких таблиц.
JohnZ Пост: 306684 От 10.May.2011 (13:34)
.... о использовании ОДНОГО таракана на ДВЕ силовые части !
Женя а что мешает ?
Дед против. Отмашку не даёт ...
dedivan Пост: 306689 От 10.May.2011 (13:49)
На выходе логику лепить?
Тогда уж и на 555 можно делать.
dedivan , чё сразу впадать в такие крайности ? Тут добавить-то и нужно будет всего ОДНУ ЛА3 ! ... всего делов-то
Опять же узкая специализация на два канала.
А если 4 надо или 6 ? переделывать все?
В пределах ДАННОЙ конкретной реализации, считаю ВПОЛНЕ допустимым и оправданным.
А 4 или 6 это на вертолёт (для нашего яныка) ? Куда столько ?
И не смотри ты на них как на микрозвм.
Смотри как на 555 таймер, только дешевле.
Так идет к этому- Мк дешевле чем один времязадающий кондер приличного качества.
Давай порешаем следущую задачку.
Пока мы до искры проверяем таймер быстренько и прячемся от помехи.
Но мы знаем что через 6 мкс она пропадет.
И до 30 мкс будет свободное время, можно чтото поделать.
Нужен диспетчер, который сам просыпается через 6 мкс.
JohnZ Пост: 306667 От 10.May.2011 (12:18)
Ведь есть УЖЕ эти 33
Я про тот момент когда только создали первый и переходим ко второму.
dedivan , извени, я тогда не поЙняв об чём это ты Уже дошло, (после дебугера) что о первом импульсе, вроде-бы...
Вылезла проблемка, и не могу понять кто глючит, - студия или я
В режиме fast PWM при сравнении должно происходить переключение между OCR0A и OCR0B. Т.е. с начала сравнивается с OCR0A, затем сброс в 0, затем сравнивается с OCR0B и опять сброс в 0, и так по кругу. По ДШ вроде-бы так, как я понял. Так он зараза не хочет так работать ! Может студия глючит ? Или я ? Отладчик показывает что счётчик досчитав до OCR0B (он ведь у нас меньше OCR0A) вылазит прерывание сравнения с OCR0B, а счётчик считает далее. Досчитав до OCR0A он только тогда обнуляется и опять вылазит 2 прерывания, сравнения и переполнения, причём переполнение вызывается первым а не сравнение Да и состояние выхода (на выводе) всегда в 0 почему-то ...
Если студия НЕ глючит, тогда решение этой проблемы лично я вижу в полностью программной реализации формирования выхода. Чё ни-ить подскажешь, как победить ситуёвину ? Получается что режим fast PWM нам не подходит ?
Удачи !
PS: А задачку (выше) порешим, обязательно, ... но потом