Это случайно, в ранних версиях было правильно. Переделал, показания не изменились. Меняются, если только в Протеусе в свойствах источника питания убрать галочку с пункта "Источник тока".
edm2007 писал(а):Это случайно, в ранних версиях было правильно.
Ну правильно, ага. Это чтоб я не расслаблялся, да? А я искал кто садит вход... Да и хрен с ней, с этой галочкой, если делитель пополам (в примере ниже, 0 - 10 В), то он и должен делить пополам. Проценты пока не ковырял...
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Погодите, из-за какой единички? В конфигурации порта ?!!! Да разумеется, если туда 1 записать то пин порта будет настроен на ВЫХОД. А так как на выходе будет изначально 0 то я не думаю что надо объяснять что будет если на ВЫХОД МК подать +. Это Вы шутите так?
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
P = Result * 500 <<<<<<<<<<<< P = P / 1024 <<<<<<<<<<<< P = P * 100 P = P / 750 '---------- Result = Result * 500 <<<<<<<<<<<< Result = Result / 1024 <<<<<<<<<<<< Result = Result * 2
Result = Result * 500 ' расчет напряжения с учетом делителя Result = Result / 1024 Result = Result * 2 '---------- P = Result * 100 ' расчет процентов P = P / 750 '----------
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Да какие уж тут шутки. Замучился я с этим проектом. Ну сейчас, вроде все заработало и проценты тоже. Дело было в том, что подсчет напряжения изменял переменную Result, а она в свою очередь использовалась для подсчета процентов уже в измененном виде. Вот поэтому лажа и получалась. Проблема решилась введением еще одной переменно типа Long.
edm2007 писал(а):Проблема решилась введением еще одной переменно типа Long.
Простите, а зачем? Там все и так выходит замечательно, без дополнительных переменных. Там вполне удобный расчет, кстати. В процентах можно легко под любой предел подогнать изменением одной цифры. Это Вы здорово придумали. Надо под автомобильный аккумулятор сделать.
Или что-то не так?
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Да нет, все так! Это я сначала сделал с дополнительной переменной, а потом как у вас. Пришли к общему знаменателю, только разными путями. А с автомобильным аккумулятором у меня уже был опыт, только не совсем удачный (отчасти). Тот же контроллер тини26, тот же индикатор на 4 разряда, только мерять он должен был зарядный ток. Эту свою фигню я встроил в авто-зарядное "Кедр-10". Короче получилась херня, ток показывает неправильно и индикация мерцает сильно. Переделывать времени не было. Теперь просто перешью контроллер и будет показывать % заряда. Так даже удобнее. Только у меня там индикатор с ОК. Придется код немного исправить...
А, ну все замечательно тогда. Я там правда в своем примере вывод PORTA.6 входом сделал. Как-то внимание не обратил что у Вас он еще дергает зарядку. Ну да у Вас свой исходник, так что не запутаетесь. А так вроде все... Одно непонятным осталось, почему Dim Chislo(8) As Integer. Word уж тогда.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Да и еще: ОГРОМНОЕ СПАСИБО!за помощь. Теперь, думаю, с динамической индикацией справлюсь. Ну так как? Возметесь за статью? P.S.: Про Word и Integer. Размер кода от изменения не страдает, так что похрен...
Последний раз редактировалось Igor_67 Вс апр 17, 2011 19:01:06, всего редактировалось 1 раз.
Вобщем, вот просто как вариант с обычной индикацией (еще убрал второй 0 при процентах менее 10, в принципе не так и нужно, просто от нечего делать). Разумеется, это только протеус, надо и стабилитрон на вход АЦП поставить для защиты и резисторы на сегменты... Да и транзисторы на разряды я бы тоже вкорячил...
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
ПОМОГИТЕ СОВЕТОМ!!! Есть програмка для GPS навигатора с использованием индикатора Сименс - но изначально программа была написана под графический дисплей-128х64. Програмку переписал под Сименс(все работает тип топ) но хотел еще добавить кусочек програмки для контроля напяжения батареи. Написал, добавил и при компиляции выдает ошибку №221. как исправить не совсем понимаю (в Баскоме я пока не силен). Спасибо заранее за ответ.
Во-первых, мне не совсем понятно зачем Вы закрыли измерение в замкнутый цикл. Программа же там будет крутиться бесконечно. А главное, вызова подпрограммы (Call Battery) я не увидел.
P.S. А ругается Bascom на библиотеки и файлы. В проекте их нет просто. Ошибки 221 у меня нет.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
Ага, я тоже сразу глянул... Ну у меня пока ругается на Library file not found, и File not found. Просто в проекте их нет... Там исходник большой, на 3000 строк. Плюс куча подключаемого хлама. Не углублялся, просто АЦП посмотрел.
"Слишком много людей ломаются, даже не подозревая о том, насколько близки к успеху они были в тот момент, когда упали духом". Томас Алва Эдисон
На счет ошибки 221 совершенно верно подметили. На счет "всякого хлама" не согласен(без него никак). А библиотека LCD-S65-L2F50.LBX позаимствована и все компилируется без проблем. Кстати в железе все работает без проблем, и програмирование микроконтролера проходит на ура. занято только где-то 84 процента. И вот решил добавить измерение напряжения аккумулятора от мобилки-думал просто, ага да не тут то было. Выкидывает ошыбку 221 и хоть ты тресни. пробовал разные варианты: например------------------------------------- Dim W1 As Word , Voltage As Single Dim Sw As String * 1 Const V_ref = 3.2 Config Adc = Single , Prescaler = Auto , Reference = Internal Start Adc '---------- Do Gosub Get_var Gosub Check_sw Gosub Show_temp Wait 1 Loop '---------- Get_var: W1 = Getadc(0) Voltage = W1 * V_ref Voltage = Voltage / 1024 'Return '---------- Check_sw: Select Case W1 Case 100 To 200 : Lcdat 160 , 1 , "II " , Red , Yellow Case 200 To 300 : Lcdat 160 , 1 , "III " , Red , Yellow Case 300 To 400 : Lcdat 160 , 1 , "IIII " , Red , Yellow Case 400 To 500 : Lcdat 160 , 1 , "IIIII " , Red , Yellow Case 500 To 600 : Lcdat 160 , 1 , "IIIIII " , Red , Yellow Case 600 To 700 : Lcdat 160 , 1 , "IIIIIII " , Red , Yellow Case 700 To 800 : Lcdat 160 , 1 , "IIIIIIII " , Red , Yellow Case 800 To 900 : Lcdat 160 , 1 , "IIIIIIIII " , Red , Yellow Case 900 To 1000 : Lcdat 160 , 1 , "IIIIIIIIII " , Red , Yellow
Case Else : Sw = "-" End Select 'Return '---------- Show_temp: 'Cls Lcdat 100 , 1 , "VAR1= " ; W1 , Red , Yellow Lcdat 120 , 1 , "VOLT= " ; Voltage , Red , Yellow Lcdat 130 , 1 , "Switch NO. " ; Sw , Red , Yellow
End Sub
интерестно но отдельно одним файлом все работает проверял в протеусе. а когда вставляю в свой проект получается ошибка 221 как это оформить? куда вставить? не получается НАСТАВТЕ НА ПУТЬ ИСТИННЫЙ