#51 Re: Апаратні питання » Производительность AVR » 2017-06-02 08:23:13

Для чпу ли мне это? Отчасти да, устройство будет подсчитывать импульсы и крутить двигатель, но это не чпу. Есть такой недостаток при большом разрешении энкодра наблюдается такой эффект, двигатель стоит о импульсы бегут! Дребезжание вала двигатель приводит к ложному подсчету импульсов

#52 Re: Апаратні питання » Производительность AVR » 2017-06-01 16:34:49

Мне нужен код для энкодер с 400 - 1000 импульсов на оборот потянет ли ардуино такой подсчёт sad

#53 Re: Апаратні питання » Производительность AVR » 2017-06-01 13:12:36

Компиляция операторов СИ на ASM происходит по стандартным процедурам а меняется только условие и от них как я понимаю зависит время выполнения, поэтому я и поделил производительность на 4, видимо мало...
Собственно к чему это все, на какую производительность можно рассчитывать скажем при обсчете энкодера на двигателе? или переходить на ASM? Так всё равно придется писать тоже только на ASM, выиграть пару тактов при условии досконального знания ассемблера? sad

#55 Апаратні питання » Pro Mini » 2017-06-01 11:40:11

goodspeedmen
відповідей: 4

Нормально не могу прошить, приходиться перед прошивкой держать reset и отпускать когда начинается прошивка, только тогда с 5 попытки получается прошить. Есть два переходника USB to TTL на PL2303 и CH340 на первом вообще прошить не получается на втором с "бубном" , в чём может быть дело?

#56 Апаратні питання » Производительность AVR » 2017-06-01 11:25:15

goodspeedmen
відповідей: 8

Привет всем, хочу обсудить производительность AVR, собственно я столкнулся с таким фактом. Код программного таймера или что-то похожее на это, в моём понимании.
В книге написано, что архитектура AVR позволяет давать производительность 1000000 операций на мегагерц, если частота ардуино 16 мегагерц то должна быть производительность 16000000 операций в секунду. Понятно, что даже в этом коде есть не только обратный счёт но и условия цикла и прочие. Допустим разделим производительность на 4 то получим 4000000 операций в секунду, то есть за секунду должно насчитать до 4000000 делим 65535 и получим 61 раз полное заполнение переменной а поскольку числа меньше то заход в if должен произойти еще чаще. Но в реальность это происходить примерно раз в 0.2 секунды. Возникает мысль толе я что-то не правильно делаю, понимаю или это так и должно быть. hmm sad
Смотря на библиотеки там и вызов функций из функций и структуры и ссылки, указатели и прочий дремучий лес и все это работает быстро а тут обычный счётчик и такой конфуз sad
int temp = 0x3800;

while(1)
       {
        if (temp ==0)
           {
            какой то код...
            temp = 0x3800;
           }
        temp--;
       }

#57 Re: Апаратні питання » выводы А6 А7 » 2017-05-29 09:57:44

Tам куча кнопок, мотор, lcd и энкодер? У меня она пока только в голове.

#58 Re: Апаратні питання » Arduino mega и блок из 16 реле ничего не получается » 2017-05-27 21:40:49

DDRA = 11111111;
PORTA = 11111111;
DDRC = 11111111;
PORTC = 11111111;
Я предпочитаю так настраивать порты и внутренние резисторы.
Очевидно, что дело в питании, там и копайте, возможно китайцы где то ошиблись или "соплю" повесели neutral

#59 Re: Апаратні питання » выводы А6 А7 » 2017-05-27 21:11:09

По идеи они должны работать и программа компилируется, у меня LCD висит на A 0 - 5 при 5 заменить на 6 результат нулевой LCD перестаёт работать hmm

#61 Апаратні питання » выводы А6 А7 » 2017-05-27 14:31:42

goodspeedmen
відповідей: 19

Парни мне для проекта не хватает выводов, осталась только два выше упомянутых, но они работают только как аналоговые?  sad

#62 Re: Апаратні питання » Arduino mega и блок из 16 реле ничего не получается » 2017-05-27 14:09:47

Проверьте цепь между силовыми выводами реле и входами в плату, также если земля общая то возможно могут быть помехи от ЭДС самоиндукции клапанов.

#63 Re: Апаратні питання » Arduino mega и блок из 16 реле ничего не получается » 2017-05-27 14:00:53

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

#65 Re: Програмування Arduino » Помогите создать скетч для станка » 2016-10-26 22:30:16

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

#66 Re: Програмування Arduino » Lcd » 2016-10-19 11:11:22

Nefreemen пише:

Капец, ну глаз, мерцание...А кода значение меняется Вы то же мерцание видите smile ?
Интересно если сделать так...Тоже будет "мерцать"
      lcd.setCursor(2, 0);
      lcd.print("     "); - стираете 5 символов
      lcd.setCursor(2, 0);
      lcd.print(n) - печатаете переменную n не больше 5 символов с той же позиции.
Возможно топорно но просто ( без каких то вычислений длины печати и пр. лабуды).
Ну если лишний код, извините я уж не знаю "лишняя ли у попа жена" lol

Спасибо нужно будет попробовать. И всё же две попы тоже не ахти.  big_smile

#67 Re: Програмування Arduino » Lcd » 2016-10-19 09:47:39

if (update_lcd==0)
  {
   lcd.setCursor(0,0);                    //курсор.
   lcd.print("Counter:");                 //выводит текст.
   lcd.print(lcd_Counter_0);           //выводит значение переменной.       
   lcd.print(lcd_Counter_1);           //выводит значение переменной.
   lcd.print(lcd_Counter_2);           //выводит значение переменной.
   lcd.print(".");                           //выводит текст.
   lcd.print(lcd_Counter_3);           //выводит значение переменной.
   lcd.print("MM");                       //выводит текст.
   lcd.setCursor(0,1);                   //курсор 0 символ 2 строка       
   lcd.print("Сaliber:");                 //выводит текст.
   lcd.print(lcd_caliber_0);           //выводит значение переменной.
   lcd.print(lcd_caliber_1);           //выводит значение переменной.
   lcd.print(lcd_caliber_2);           //выводит значение переменной.
   lcd.print(".");                         //выводит текст.
   lcd.print(lcd_caliber_3);           //выводит значение переменной.
   lcd.print("MM");                      //выводит текст.
   
   update_lcd = 4095;             
  }
   update_lcd = update_lcd--;

#68 Re: Програмування Arduino » Lcd » 2016-10-18 22:17:52

Nefreemen пише:

goodspeedmen, Какой у Вас ЛЦД? Если типа 1602 или аналогичный то перед выводом на дисплей очистите  соответственно количество символов с позиции которой Вы выводите на экран. С графическим немножко сложнее нужно очистить прямоугольник.
Если не очищать то получается примерно такое:
102.4
98.74 - а должно быть (хотелось вывести) 98.7 smile .

Да 1602. Я думал передвигать курсор, очищать его if (lcd... < 100) но получается мерцание при очистке ну и к тому же упираемся в лишний код который не нужен...

#69 Re: Програмування Arduino » Lcd » 2016-10-18 21:12:08

Ребята я очень всем благодарен всем за ваши ответы но поймите я не умею читать мысли, если их пишите то излагайте из в виде кода, мы же тут "программисты" всё же big_smile

#70 Re: Програмування Arduino » Lcd » 2016-10-18 20:50:12

Честно сказать после ваших ответов я чувствую себя ущербным (я не обидчивый и готов выслушивать конструктивную критику если от неё есть польза)...  Как придумал, смотрел видео, читал про работу контроллеров для вывода информации на экран нужен байт как по мне вполне очевидный вывод учитывая вводные параметры. Опрос if происходит по мере необходимости соответственно процессору легче оперировать этими цифрами (мне так казалось) neutral И оно отлично работает к тому же. Просто возникла проблема, нужно сравнивать эти цифры на  "<" ">" с таким же количество байтов и тут иногда по каким то непонятным мне причинам определяется, сумма отпала сразу так как "от перемены мест слагаемых сумма не изменяется"  x_0 > y_0 || x_1 > y_1 результат тоже не ахти.

#71 Re: Програмування Arduino » Lcd » 2016-10-17 17:09:10

Я же не специалист и не писал что бы кто то чего то исправлял. Я сужу из того что контроллер 8 битный его регистры тоже (значит с байтами ему работать проще), есть пары регистровые но все же это занимает его время на обработку инициализация long деление его, вывод информации и прочие. Честно я надеялся увидеть нечто совсем другое...
lowByte()
highByte()

#72 Re: Програмування Arduino » Lcd » 2016-10-16 21:56:32

alex_dol пише:

Я так понял нужен форматированный вывод на дисплей. Варианта 3: преобразовать число в строку как вам надо и уже ее выводить на дисплей, использовать функции вывода поддерживающие форматирование, написать что-то свое.

0. 99 - это 9.9, 157 - это 15.7 и не надо никаких 2-х, 3-х или 4-х переменных, достаточно одной, NoName вам все написал.
1. 99/10 = 9. Выводим {009} или {   9} или форматируем как надо.
2. Выводим точку {.}
3. 99 [10] = 9. выводим {9}
Результат 009.9 или    9.9
Как-то так.


Я конечно не специалист но после деления в перемененной останется число деления а не исходное вот поэтому я и использовал переменный для сохранения результата и вывода его на экран

#73 Re: Програмування Arduino » Lcd » 2016-10-15 18:53:48

а можно как то подробней что то у меня ерунда получается какая то  sad  long хранит четыре бита но запятая то как получается hmm

Допустим записываем в неё 157 / 10 = 15 дробная часть опускается  значит её нужно выделить перед преобразованием 157 [10] = 7 и здесь это работает, но вот проблема начинается если если в переменной  99 / 10 получается 9 а не 90  yikes и всё ровно мне пришлось использовать  две байтовых переменных для вывода на экран, что как то совсем странно использовать 6 байт вместо 4. Изначально я использовал 4 байтовых переменных который  отображаясь на экране считаются с право налево в порядке возрастания.
............
lcd_3++
if(lcd_3==10)
  {
    lcd_3 =0;
    lcd_2++;
  }
if(lcd_3==10)
  {
    lcd_3 =0;
    lcd_1++;
  }
if(lcd_1==10)
  {
    lcd_1 =0;
    lcd_0++
  }
if(lcd_0==10)
  {
    lcd_0 =0;
  }

#74 Re: Програмування Arduino » Математика. » 2016-10-15 17:31:33

ночные посиделки не очень хорошо сказываются на мыслительных процессах  mad

Підвал форуму