Вы не номер смотрите, а саму ошибку читайте. Оно же пишет в чем дело.
_________________ "Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Выше пост от vem566. Свой код покажите, где ошибка.
_________________ "Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Вы решили, что чем читать тот же Help, проще пройти интерактивный курс Bascom? Непонятки ведь не от "запутывания мозгов", а от элементарного незнания. Есть хорошие учебники по Bascomу. Там все это описано.
У меня получается все переменные должны быть Eram Word ?
Переменные могут быть разных типов. Но переменная типа Eram должна быть одинаковой по типу с обычной переменной, в которую вы эту Eram-переменную переписываете. И наоборот. Естественно, что в переменную типа Byte переменная типа Word не влезет, поэтому компилятор и ругается.
Знак равенства ( = ) вовсе не означает "равно". Он означает "берет значение". A_eram = A и A = A_Eram - это две большие разницы.
Так я так и делал , но в память ни чего не пишет , а если переменная типа Word то пишет .
Проверяйте код. Тут проще уже просто некуда. Eeprom затирается когда вы заливаете в мк очередную версию программы. Поставьте фуз "Preserve Eeprom when chip erase" (в баскомовской прошивалке). И Eeprom очищаться не будет.
Я проверяю в протеусе , попробую этот кусок программы отдельно от основной.
Добавлено after 23 minutes 59 seconds: НЕ пойму в чем дело , отдельно кусок программы работает а в основной программе нет, как в протеусе посмотреть что происходит в ячейках памяти , записывается или нет ?
Добавлено after 48 minutes 35 seconds: Нашел где в протеусе смотреть память , и четко видно если Dim U_min_e as eram Word - то ячейки записываются а если Dim U_min_e as eram byte - нет.
Собираю станок для нарезки кабеля, станок почти доделал, осталось только доделать режущую часть. А вот с программой вышли сложности, а именно. Не работает в железе программа, в протеусе все работает чётко, в железе счётчики бегают безостановочно. Вместо энкодера использую две кнопки, но даже с подключённым энкодером толку нет, почему так? Очень нужна ваша помощь.
Проект прикрепил, в том числе и в протеусе. При запуске протеуса первоначально жмем кнопку с подписью "сначала нажать эту", далее жмём либо L meter либоPCS , все работает, а в железе нету, помогите подправить код
Config Int0 = Falling Config Int1 = Falling On Int0 Encod On Int1 Encod2
Gifr = 64 Gifr = 128
Enable Interrupts Enable Int0 Enable Int1
Cls Cursor Off Noblink
Start Adc Do
Locate 2 , 1 Lcd "L=" ; Getadc(1) ; "cm" 'длина If Getadc(1) < 10 Then Locate 2 , 6 Lcd " " End If
If Pind.6 = 1 Then Portb.7 = 1 ' начинаем крутить двигатель Else End If
If Pind.6 = 1 Then 'если нажали кнопку старта If W = Getadc(1) Then Locate 2 , 8 Lcd "-" Waitms 200 Portb.7 = 0 ' останавиваем двигатель пока работает нож Waitms 50 Portb.6 = 1 'отрезаем Waitms 300 Portb.6 = 0 Waitms 100 W = 0 Locate 2 , 8 Lcd " " End If End If
Locate 1 , 1 Lcd W
Locate 1 , 8 Lcd P
Locate 2 , 11 Lcd "pcs:" ; Getadc(2) ' количество If Getadc(2) < 10 Then Locate 2 , 16 Lcd " " End If
Locate 1 , 11 Lcd " "
If P = Getadc(2) Then ' проверяем счетчик Goto Ready Else End If
If P = Getadc(2) Then ' проверяем счетчик 'Locate 1 , 11 'Lcd "READY" Waitms 500 End If
Loop End Return
Encod: ' тут узнаем в каком направлении вращают ручку энкодера If W >= 100 Then 'добавляем условие сброса переменной W = 0 'сбрасываем переменную End If
Waitms 2 ' ждем пока утихнет дребезг контактов
If Pind.5 = 1 Then ' если на ноге единица (импульс не пришел) тогда Incr W ' инкременируем переменную (увеличиваем на 1) Else ' в обратном случае Decr W ' декрементируем переменную (уменьшаем на 1) End If
Gifr = 64 ' сбрасываем регистр хранения прерывания INT0
Return
Encod2: ' тут узнаем в каком направлении вращают ручку энкодера If P >= 100 Then 'добавляем условие сброса переменной P = 0 'сбрасываем переменную End If
Waitms 2 ' ждем пока утихнет дребезг контактов
If Pind.5 = 1 Then ' если на ноге единица (импульс не пришел) тогда Incr P ' инкременируем переменную (увеличиваем на 1) Else ' в обратном случае Decr P ' декрементируем переменную (уменьшаем на 1) End If
Gifr = 128 ' сбрасываем регистр хранения прерывания INT0
Return
Ready: Locate 1 , 11 Lcd "READY" Waitms 500 Portb.7 = 0 ' останавливаем двигатель End
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 27
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения