Список разделов Flyback.org.ru » не HV » Микроконтроллеры и всё, что с ними связано
Тему сейчас просматривают - зарегистрированных: 0, скрытых: 0 и гостей: 1
Зарегестрированные - Нет
Ответить с цитатой

Николай
 


понял. вычитываем, накладываем, записываем назад.
интересно, а почему он не в sbi закомпилил, ведь команд столько же, да и регистр занимать не надо.

Добавлено: Sun Mar 19, 2017 10:58 pm
Ответить с цитатой

Behram
 


SilverRay писал(а):
Не понял, откуда три команды, когда одна -- SBI xx, 0x7 ?
Хуй его знает, у кодвижена всегда прошивка получается больше, чем скомпиленная винАВРом.

Добавлено: Sun Mar 19, 2017 11:01 pm
Ответить с цитатой

TAN
 


Думаю, нефига контроллеру не будет. С такой длительностью и скважностью. Главное, что по питанию не глючит.

Добавлено: Sun Mar 19, 2017 11:05 pm
Ответить с цитатой

SilverRay
 


Не, все правильно, я тупанул -- загадочность АВРовской системы команд в том, что команды SBI/CBI работают с битами, а команды SBR/CBR -- с масками. Так что увы, три команды.

Добавлено: Sun Mar 19, 2017 11:05 pm
Ответить с цитатой

Николай
 


Сильверрей, а почему одна? ведь SBI это сетбит! а мы тут байт накладываем, в котором три бита единички


UPD ухтыжебать в какую конструкцию оно скомпилилось... :D увидел апдейт поста

Добавлено: Sun Mar 19, 2017 11:06 pm
Ответить с цитатой

Денис
 


Расслабься Коль, АВР это спокойно перенесет Smile

Добавлено: Mon Mar 20, 2017 12:40 am
Ответить с цитатой

Николай
 


кстати кто там говорил что биться за оптимизацию кода не надо!? посмотрел размер текущей прошивки - 6,5К блеа. петеряхнул код, подужарил на 500байт. итого осталось 2К свободного места. что довольно мало, а впихнуть еще много чего хочется.
и оперативы осталось байт 50

Добавлено: Mon Mar 20, 2017 1:01 am
Ответить с цитатой

Behram
 


Народ, Atmega8L-8PU заведется от 12МГц кварца или нужно 16PU ставить?

Добавлено: Sun Mar 26, 2017 4:53 pm
Ответить с цитатой

Николай
 


заводилась вроде. я так понял различие у них в основном по внутреннему rc генератору, с внешкой вроде как одинаково работают.
я их конечно мало встречал, но все что видел запускал на макс штатной частоте без оглядки на индексы

Добавлено: Sun Mar 26, 2017 5:02 pm
Ответить с цитатой

Анна
 


Где-то встречалась информация, при таком разгоне они запускаются, но не полностью и неадекватно - например, могут глючить 16-разрядные таймеры, команды с автоинкрементной адресацией, прерывания, умножение и еще что угодно... Так что лучше ненужно.

Добавлено: Sun Mar 26, 2017 8:36 pm
Ответить с цитатой

Behram
 


Ну нафиг 8, поставил 8А, тем более она дешевле.

Добавлено: Sun Mar 26, 2017 8:46 pm
Ответить с цитатой

Денис
 


Для таких экспериментов, наверное, лучше питающее 5-5,4 обеспечить. Хотя, еще лучше юзать вещи по назначению Smile

Добавлено: Mon Mar 27, 2017 8:03 am
Ответить с цитатой

ivan_1989
 


Доброго вечера. Прошу помощи, в программировании я не силен "совсем". Нужен таймер и отдельно реверсивный счетчик нажатий. Статью про таймер нашел (с исходником), но он с авто запуском через три секунды, а мне надо что бы старт происходил с кнопки. Про счетчик вообще ничего похожего нет. Но как я понял программу этого таймера надо только убрать авто запуск, остальное я вроде исправил ( на сколько я понимал)


не могу вставить исходник.

Добавлено: Mon Mar 27, 2017 5:38 pm
1393396619_kct_schemat.jpg (107.71 Кб)

Ответить с цитатой

Behram
 


Какую задачу должен выполнять МК?

Добавлено: Mon Mar 27, 2017 5:50 pm
Ответить с цитатой

ivan_1989
 


Первый МК должен отсчитывать заданное время и выводить его семи сегментный четырех разрядный индикатор.
Второй МК должен считать нажатие на кнопки и выводить показание также на семи сегментный четырех разрядный индикатор.

во вложении исходник и то убожество которое получилось у меня.

Добавлено: Mon Mar 27, 2017 6:24 pm
.rar (2.91 Кб)
Ответить с цитатой

Behram
 


Все равно низуя не понятно.
Кем или чем это время задается?
Какие показания должен выводить второй мк?

Добавлено: Mon Mar 27, 2017 6:53 pm
Ответить с цитатой

ivan_1989
 


Первому мк идет управление с пяти кнопок "+1мин"; "+5мин"; "+10мин"; "старт"; "сброс". мк отсчитывает время до 0 и подает звуковой сигнал. время показывается на семи сегментных индикаторах.

Второй мк управляется тремя кнопками "+1"; "-1"; "сброс". выводит на семи сегментный индикатор число от 0 до 999.


Нашел другой исходник который смог исправить под второй вариант устройства.

Теперь возник вопрос есть ли разница в точности часов смоделированных в протеусе и собранных в железе?

Во вложении проект протеуса.

Добавлено: Thu Mar 30, 2017 8:36 am
timer_m8.rar (18.65 Кб)
Ответить с цитатой

Николай
 


Точность определяется кварцем.камень эмулируется такт-в-такт. Разницы быть не должно

Добавлено: Thu Mar 30, 2017 12:22 pm
Ответить с цитатой

ivan_1989
 


Спасибо. Но у меня при изменении частоты в протеусе меняется только скорость динамической индикации, а время также отстает примерно на 12 секунд за минуту.

Буду пробовать собирать в железе. посмотрим что будет.

Добавлено: Thu Mar 30, 2017 3:44 pm
timer_m8.rar (18.65 Кб)
проект ПРОТЕУС
Ответить с цитатой

Николай
 


не могу прочитать исходник поскольку нет протеуса сейчас под рукой, но осмелюсь предположить что таймер сделан на задержках, тобишь на вызовах типа delay_ms() которые компилятором автоматически пересчитываются под частоту камня (расчитвается исходя из значения дефа F_CPU) и при изменении частоты в протеусе при запуске происходит перекомпиляция под новую частоту, соответвенно частота хода останется плюсминус такаяже
12сек в минуту это просто конская погрешность, безкварцевая тинька у меня дает где-то +-1минуту в сутки.
треба заводить аппаратные таймеры, чтобы они счетчик секунд инкрементировали в своем прерывании, а потом с ним уже работаем в основном теле как хотим

Добавлено: Thu Mar 30, 2017 10:13 pm
Ответить с цитатой

ivan_1989
 


Во вкладке исходники и схема этого таймера.
Но я не могу скомпилировать исходники даже без изменений, atmel studio выдает 2 ошибки: Error 1attempt to use poisoned "SIG_OVERFLOW0"
Error 2 attempt to use poisoned "SIG_OVERFLOW2"
Вот код где находится первая ошибка[list=]
Код:
ISR(SIG_OVERFLOW0, ISR_NOBLOCK){ // Разрешены вложенные прервания
volatile unsigned char ucTemp = 0;  //
//volatile unsigned char ucKey_Run_Timeout;
   TCNT0 = T0_VALUE; // Перезагрузка таймера
   sm_ucIndNum++;
      if (sm_ucIndNum > 3){
         sm_ucIndNum = 0;
      }

Как я понял из ответов "гугла" (моего 3 часового обучения программированию) команду
Код:
SIG_OVERFLOW0
надо заменить как устаревшую на
Код:
TIMER0_OVF_vect
. После исправлении второй ошибки код компилируется, но в протеусе перестает адекватно работать.


Судя по коду здесь задействованы два таймера одновременно. Внутренний гениратор на 1Мгц и внешний кварцевый на 32768.

Что делать дальше не понимаю!!!!!!!!

Это мой первый опыт связанный с программированием.


Добавлено: Thu Mar 30, 2017 11:40 pm
схема.rar (116.18 Кб)
Ответить с цитатой

Shad
 


Согласен с Николаем, онли аппаратные таймеры нужно включать, иначе это мазохизм. Например, я до сих пор не знаю что делает МК, когда выполняет команду delay.
P.S. подсказал бы, да только сам ассемблер учу.

Добавлено: Fri Mar 31, 2017 8:43 am
Ответить с цитатой

Behram
 


Shad писал(а):
delay
Ебашит в пустом цикле заданное количество раз.
ivan_1989 писал(а):
Это мой первый опыт связанный с программированием.
Тебе надо научится программировать или просто этот прибор сделать? Если последнее, то поставь CVAVR, в нем есть кодогенератор.

Добавлено: Fri Mar 31, 2017 8:58 am
Ответить с цитатой

ivan_1989
 


Одно другому не мешает. Думаю что это не последняя поделка на МК. Поэтому буду учится дальше. Спасибо а подсказку с CVAVR, посмотрим что за зверь такой.

Добавлено: Fri Mar 31, 2017 9:53 am
Ответить с цитатой

Shad
 


Behram писал(а):
Ебашит в пустом цикле заданное количество раз.
Поэтому и получается пустая трата сил МК. Избавляться от этой команды надо и использовать в крайних случаях.

Добавлено: Fri Mar 31, 2017 11:01 am
Список разделов Flyback.org.ru » не HV » Микроконтроллеры и всё, что с ними связано
На страницу Пред.  1, 2, 3 ... 101, 102, 103 ... 150, 151, 152  След.     Просмотр темы целиком



Лицензионное соглашение

(c)Flyback.org.ru
Российское общество любителей высоких напряжений.
Использование материалов с данного сайта и форума возможно только с разрешения администрации.