Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 10 
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 02.05.2009
Откуда: Ростов-на-Дону
Собственно схемотехнически управление не представляется сложным, через подтягивающие резисторы к +5 В подключается 2 кнопки и к GND. На двух портах настроенных на ввод считывается состояние и задается соответствующая последовательность двоичная на 6 выводах настроенных на вывод.
при последовательном нажатии той или иной кнопки состояние суммируется с предыдущим или вычитается из предыдущего. по включению питания идет сброс на некое нулевое состояние, записанное как данные в EEPROM.
Все бы ничего, но как простую логику программную, связать с логикой VID шим контроллера?
я уже весь мозг себе вынес, помогите други, сильно перегружать не охото программу для МК, чем примитивнее и проще, тем лучше.
VID представляют из себя две убывающие последовательности десятичных чисел по сути.
Табличка VID во вложении.
Помогите плиз!?
Нужен пинок по части програмной по сути в нужную сторону...
можно конечно было DIP-переключателем управлять, но это не эстетично и не практично
#77

_________________
Team Russia-сильнейшая команда по бенчмаркингу и оверклокингу в мире и на просторах СССР. Присоединяйтесь!!!



Партнер
 

Member
Статус: Не в сети
Регистрация: 04.10.2004
{max=010101, min=010100, No_CPU>=111110}

Проверка на max/min.
Если не max/min, то декремент/инкремент.
Накладывание маски.
Проверка на No_CPU.
Если No_CPU, то коррекция до допустимого значения.
Использование результата.


 

Member
Статус: Не в сети
Регистрация: 02.05.2009
Откуда: Ростов-на-Дону
окей, спасибо, вроде так и набросали?
Код:
ORG   0
   goto   INIT
;----------------------------------------------
SMALL_DELAY
   movlw   .50
   goto   $+2
DELAY
   clrw   
   movwf   COUNT
   clrf   COUNT1
DELAY_LOOP
   decfsz   COUNT1,f
   goto   DELAY_LOOP
   decfsz   COUNT,f
   goto   DELAY_LOOP
   return
;----------------------------------------------
INIT
;   cofigurate ports
;   read EEPROM
;   set peripheral
;   etc
   movlw   b'00110100'   ;set start value (for TEST only)
   movwf   VID_OUT     
;----------------------------------------------
MAIN_LOOP
   btfss   PORTA,0      ;press key '+' ?
   goto   ADD_VALUE   ;yes
   btfss   PORTA,1      ;press key '-' ?
   goto   DEC_VALUE   ;yes
   goto   MAIN_LOOP
;--------------
ADD_VALUE
   call   SMALL_DELAY
   btfsc   PORTA,0      ;still press key '+' ?
   goto   MAIN_LOOP   ;no
   call   DELAY
   btfss   PORTA,0      ;release key '+' ?
   goto   $-1      ;no
   decf   VID_OUT,f   ;VID step up
   movf   VID_OUT,w   ;check max VID
   sublw   b'00010110'   ;VID>1.600v ?
   btfss    STATUS,Z
   goto    SET_VID      ;yes
   movlw   b'00010101'   ;no
   movwf   VID_OUT
   goto    SET_VID
;--------------
DEC_VALUE
   call   SMALL_DELAY
   btfsc   PORTA,1      ;still press key '-' ?
   goto   MAIN_LOOP   ;no
   call   DELAY
   btfss   PORTA,1      ;release key '-' ?
   goto   $-1      ;no
   incf   VID_OUT,f   ;VID step down
   movf   VID_OUT,w   ;check min VID
   sublw   b'00010101'   ;VID<0.8375v ?
   btfss    STATUS,Z
   goto    SET_VID      ;yes
   movlw   b'00010100'   ;no
   movwf   VID_OUT
;--------------
SET_VID
   movf   VID_OUT,w
   movwf   PORTB
   goto   MAIN_LOOP
;----------------------------------------------

   END

ALS помог невообразимо!
вроде все так и есть как описали? с инкриментами/декрементами было понятно, не понятен был блок опроса кнопок...

_________________
Team Russia-сильнейшая команда по бенчмаркингу и оверклокингу в мире и на просторах СССР. Присоединяйтесь!!!


 

Member
Статус: Не в сети
Регистрация: 04.10.2004
maco писал(а):
Накладывание маски.
Проверка на No_CPU.
Если No_CPU, то коррекция до допустимого значения.
Отсутствует.

Код:
decf   VID_OUT,f   ;VID step up
movf   VID_OUT,w   ;check max VID
sublw   b'00010110'   ;VID>1.600v ?
btfss    STATUS,Z
goto    SET_VID      ;yes
movlw   b'00010101'   ;no
movwf   VID_OUT
goto    SET_VID
Есть небольшая ошибка :).

P.S. В штатной IDE симулятор есть, пользуйтесь.


 

Member
Статус: Не в сети
Регистрация: 02.05.2009
Откуда: Ростов-на-Дону
maco писал(а):
P.S. В штатной IDE симулятор есть, пользуйтесь.

спасибо за наводку, не знал о ее существовании

_________________
Team Russia-сильнейшая команда по бенчмаркингу и оверклокингу в мире и на просторах СССР. Присоединяйтесь!!!


 

Member
Статус: Не в сети
Регистрация: 19.08.2005
sheffline писал(а):
Собственно схемотехнически управление не представляется сложным, через подтягивающие резисторы к +5 В подключается 2 кнопки и к GND. На двух портах настроенных на ввод считывается состояние и задается соответствующая последовательность двоичная на 6 выводах настроенных на вывод.
при последовательном нажатии той или иной кнопки состояние суммируется с предыдущим или вычитается из предыдущего. по включению питания идет сброс на некое нулевое состояние, записанное как данные в EEPROM.

Дополню ранние рекомендации.
Задавать не только мин/макс. значение, но hardware_min/max. (те пороги, выше и ниже которого выставлять нельзя. Пример - SB: ниже 0.9В не работает, выше 1.5 сгорает). Эти значения следует хранить не в eeprom, а в коде программы (что исключает их модификацию. (eeprom иногда сваливается)
Второе - надеюсь, процедуры приема кнопок подразумевают антидребезг? Иначе 1 нажатие будет приводить ... и маленькая свечка.


 

Member
Статус: Не в сети
Регистрация: 02.05.2009
Откуда: Ростов-на-Дону
Chibiusa писал(а):
SB: ниже 0.9В не работает, выше 1.5 сгорает

санди бридж? вы приувеличили, до 1,7-1,75 В не сгорает, т.е. можно юзать в потолок до 1,65 В не боясь последствий при должном охлаждении (фреон, сухой лед...), хотя зачем это нужно для него не понятно, там мать обладает большим потенциалом.
А так идея понятна, но это трудоемко все, данные цифры проще держать в голове.
Chibiusa писал(а):
Второе - надеюсь, процедуры приема кнопок подразумевают антидребезг?

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

_________________
Team Russia-сильнейшая команда по бенчмаркингу и оверклокингу в мире и на просторах СССР. Присоединяйтесь!!!


 

Member
Статус: Не в сети
Регистрация: 25.01.2009
Откуда: Севастополь
:D Шэф, привет радиокоту.
Только там тупо флудят, а здесь указывают на "возможные проблемы", которых в этом коде в принципе нет.
в комментах still press key и release key ни на какие мысли не наводят ?
а check max VID и указание в прямом виде ЧИСЛА, а не переменной ?

в куске, который выделил maco - да, ошибка
Код:
decf   VID_OUT,f   ;VID step up
movf   VID_OUT,w   ;check max VID
sublw   b'00010100'   ;VID>1.600v ?

далее по тексту.
No_CPU - тоже не делал, это уже сам.
Успехов !

_________________
У меня маленький :(
http://forums.overclockers.ru/viewtopic.php?f=118&t=436249


 

Member
Статус: Не в сети
Регистрация: 02.05.2009
Откуда: Ростов-на-Дону
а там я не получил вообще ответов на свои вопросы -
http://radiokot.ru/forum/viewtopic.php?f=20&t=85928
с таким же успехом я мог с женою пообщаться на эту тему :D :lol:
alen писал(а):
Успехов !

спс огромное еще раз, будем стараться :-)

_________________
Team Russia-сильнейшая команда по бенчмаркингу и оверклокингу в мире и на просторах СССР. Присоединяйтесь!!!


 

Member
Статус: Не в сети
Регистрация: 04.10.2004
alen
IMHO проще писать более понятно и компактно, если язык это позволяет. Хотя это дело вкуса :).
Для примера (нет проблем с путаницей между (MAX_VID+1) и (MAX_VID-1), есть только MAX_VID):
Код:
MAX_VID   equ   b'00010101'
...
   movf   VID_OUT,w
   sublw   MAX_VID   ; check max VID
   btfss   STATUS,Z
   decf   VID_OUT,f   ; VID step up
   goto   SET_VID


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 10 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  

Лаборатория














Новости

Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan