Например TDA7294

Форум РадиоКот • Просмотр темы - Автодолив для аквариума на PIC16F54, не работает прошивка
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Чт апр 18, 2024 07:58:32

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


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 24 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Автодолив для аквариума на PIC16F54, не работает прошивка
СообщениеДобавлено: Чт апр 26, 2018 01:11:17 
Открыл глаза

Зарегистрирован: Ср сен 24, 2014 11:14:53
Сообщений: 50
Откуда: Москва
Рейтинг сообщения: 0
Доброй ночи коты.
Пару лет назад попал мне в руки ПИК, и мои шаловливые руки начали его ковырять не без вашей помощи. Но отсутствие стимулов в виде реального применения на тот момент отвлекли меня от этого занятия, хотя кое-чему я научился.
Сейчас мое увлечение аквариумистикой дало возможность изготовить нужную вещь - автодолив. (можно купить готовый, но это не интересно)

Естественно столкнулся с трудностями. И так:
Система состоит из 3-х поплавков-герконов. Поплавок замкнут, если он висит, и разомкнут, если плавает.
1-й поплавок - контролирует уровень воды в емкости с осмосом ( чистая вода для долива)
2- других находятся в аквариуме немного на разной высоте.
Логика работы такая:
Если первый поплавок упал, выключаем все что можно, зажигаем светодиод ошибки, ждем, пока нерадивый хозяин нальет воду.
Если упал один поплавок, зажигаем другой светодиод ( готовность) и ждем дальше.
Если упали оба поплавка, включаем помпу, пока оба не всплывут ( для исключения коротковременных включений помпы, что бы не сгорела). Моргаем светодиодом "готовность для визуального контроля - требуется для определения, какой автодолив работает при наличии нескольких банок.
За одно, для контроля работы моргаем еще одним светодиодом, для понимания, что девайс работает.
Далее планирую сделать засыпание контроллера, и еще немного ерунды.

Проблемы:
Пока не трогаю поплавок в резервуаре - все ок. Когда "кончается вода" в симуляции в MPLAB все сбивается на один круг -
при вызове паузы из подпрограммы No_osmos, возврат идет не обратно, а в один из вызовов из основного тела. При заходе на второй круг все возвращается в норму.

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

Очень прошу помочь найти косяк, а так же готов выслушать комментарии по конкретным решениям.
Сама прошивка:
Спойлер
Код:
   list      p=16F54             ; list directive to define processor
   #include <p16f54.inc>         ; processor specific variable definitions

   __CONFIG   _CP_OFF & _WDT_OFF & _RC_OSC


;***** VARIABLE DEFINITIONS
;temp          EQU     0x07        ;example variable definition

pause      EQU   0x07   ; for delays
pause2      EQU   0x08
pause3      EQU   0x09
port_a_temp   EQU   0x0a   ; PORTA
time      EQU   0x0b   ;used for define pause
Ch_Float_Count  EQU     0x0c    ;counters for float normalise
Ch_Float_Osm    EQU     0x0d
Ch_Float_1      EQU     0x0e
Ch_Float_2      EQU     0x0f   ;_____________
Port_b_tmp   EQU     0x10   ;for any case
diag_led        EQU     0x11   ;debug var not used now
Float_stat   EQU     0x12   ;Float flags bit0 - osmos, bit1 first float bit2...
Float_tmp     EQU     0x13   ; used while pump workong
My_flag      EQU   0x14; 0-bit - error, 1 - 1_float_flag
;**********************************************************************

      
      
      ORG     0x1FF             ; processor reset vector
      goto    start
      ORG     0x000

      

;**********************************************************************      
;Variable pause
pr_pause   MOVLW time
      MOVWF pause
      MOVLW b'11111111'
      MOVWF pause2
      MOVWF pause3
timer      decfsz  pause3,1
      GOTO timer   
      decfsz  pause2,1
      GOTO timer
      decfsz  pause,1
      GOTO timer
      RETURN
;end of pr_pause      
;**********************************************************************   
      
;**********************************************************************
; Check float status
Check_float   
      MOVLW  b'00001111'
      MOVWF  Ch_Float_Count   ;set normalise counter
      MOVLW  b'00000000'   ;----------
      MOVWF  Float_stat
      MOVWF  Ch_Float_Osm   ;reset counters
      MOVWF  Ch_Float_1     
      MOVWF  Ch_Float_2   ;_____
Loop      DECFSZ Ch_Float_Count   ; Wile Ch_Float_Count>0
      GOTO contin      ;show must go on
      ;Set float status reg      
      MOVLW   b'00001000'   ;constant for normalise
      ;Osmos level
      BCF   STATUS,0
      SUBWF   Ch_Float_Osm,1   ; if float counter more b1000
      BTFSC   STATUS,0   ; we got STATUS0 =1
      BSF   Float_stat,0   ; and set bit for osm_float to 1
      ;first float level
      BCF   STATUS,0   ;same as Osm_float only for float_1
      SUBWF   Ch_Float_1,1
      BTFSC   STATUS,0
      BSF   Float_stat,1
      ;second float level
      BCF   STATUS,0   ;same as Osm_float only for float_2
      SUBWF   Ch_Float_2,1
      BTFSC   STATUS,0
      BSF   Float_stat,2      
      RETURN
contin      MOVF PORTB       ;check ports
      BTFSC PORTB, 4
      INCF Ch_Float_Osm   ;incrase counters for each float if need
      BTFSC PORTB, 5
      INCF Ch_Float_1
      BTFSC PORTB, 6
      INCF Ch_Float_2
      goto Loop
;end of Check_float
;**********************************************************************      

;**********************************************************************
;No_osmos
No_osmos   BCF   port_a_temp,1 ;stop pump
      BSF   port_a_temp,2 ;raise alarm led
      MOVF    port_a_temp,0
      MOVWF   PORTA    
Wait_water   MOVLW   b'11111111'         
      MOVWF   time
      call   pr_pause
      call   Check_float      
      BTFSC   Float_stat,0   ;wait wile Osm_float swim up
      GOTO    Wait_water   
      
      BCF   port_a_temp,2   ;swich off alarm led
      MOVF    port_a_temp,0
      MOVWF   PORTA
      RETURN
;end No_osmos
;**********************************************************************   
      
;**********************************************************************
;One_float (switch on RA3 led - green indicator) 
One_float   
      BSF   port_a_temp,3
      MOVF    port_a_temp,0
      MOVWF   PORTA
      RETURN
;end One_float
;**********************************************************************   
      
;**********************************************************************
fulling      BSF   port_a_temp,1   ;----------
      MOVF    port_a_temp,0   ;switch on pump
      MOVWF   PORTA      ;___________
      ;TODO set timer for ovewer_level
      
fulling_lp   MOVLW   b'00000001'     ;-----     
      MOVWF   time      ;Pause
      call   pr_pause   ;______
      
      BCF   port_a_temp,3   ;----------
      MOVF    port_a_temp,0   ;switch off RA3 blink
      MOVWF   PORTA      ;___________________
      
      MOVLW   b'00000001'     ;-----     
      MOVWF   time      ;Pause
      call   pr_pause   ;______
      
      call   Check_float      
      
      BTFSC   Float_stat,0   
      call   No_osmos;
      
      ;BCF   port_a_temp,2   ;osmos level control
   ;
      
      BSF   port_a_temp,3   ;switch on RA3 blink
      BSF   port_a_temp,1   ;SW_on pump after No_osmos
      MOVF    port_a_temp,0   ; This part used for restore
      MOVWF   PORTA      ;pump if No_osmos called
      
      call   Check_float   
      
      MOVLW   b'00000000'     ;----------     
      MOVWF   Float_tmp   ;used only 2 bits
      BTFSC   Float_stat,1   ; if one float switched on
      INCF   Float_tmp   ; first bit set   only
      BTFSC   Float_stat,2   ; If two float
      INCF   Float_tmp   ;second bit set only
      MOVLW   b'00000001'   ;
      BSF   STATUS,0   ; STATUS 0 RESET
      SUBWF   Float_tmp,1     ; Float_tmp - 1 -- If both float off
               ; 0-1 =-1 STATUS 0 get 0
               ;_____
      
      BTFSS   STATUS,0   ; if STATUS 0 get 0
      GOTO    fulling_lp_end   ; stop procedure
      
      ;BSF   port_a_temp,2
      BSF   port_a_temp,3   ;switch off RA3 blink
      MOVF    port_a_temp,0
      MOVWF   PORTA
      GOTO    fulling_lp   ;loop.
      
fulling_lp_end 
      BCF   port_a_temp,1   ;pump off
      ;BCF   port_a_temp,2
      BCF   port_a_temp,3   ;indicator off
      MOVF    port_a_temp,0
      MOVWF   PORTA      
      RETURN
;end fulling
;**********************************************************************         
      
;**********************************************************************
;func      
;end func
;**********************************************************************   
      
INIT       
      MOVLW   b'00000000' 
      tris    PORTA
      MOVLW   b'11111111' 
      tris    PORTB
      clrf    port_a_temp
      MOVLW   b'00000000'
      MOVWF    port_a_temp   
       MOVWF   PORTA 
      MOVWF   My_flag
;      MOVWF   port_a_temp   
      RETURN
      ; remaining code goes here
      
      
;**********************************************************************   
start
               CALL INIT
main      
;________________swich on heartbeat LED _____
      MOVLW   b'00000001'         
      MOVWF   time
      call   pr_pause
      BCF   port_a_temp,0
      MOVF    port_a_temp,0
      MOVWF   PORTA
;________________swich on heartbeat LED end _____

      call   Check_float   ; Check_float :-)   
      BTFSC   Float_stat,0   ; if no_osmos
      call   No_osmos   ;No_osmos :-)
      

      
      BCF   port_a_temp,2   ;reset all
      BCF   port_a_temp,3   ;reset all
      MOVLW   b'00000000'     ;reset all     
      MOVWF   Float_tmp   ;reset all
      BTFSC   Float_stat,1   ; if first float dropped
      INCF   Float_tmp   ;inc Float_tmp   
      BTFSC   Float_stat,2   ;same for second one
      INCF   Float_tmp   
      BTFSC   Float_tmp,0   ;if only one float dropped - bit0 will set
      call    One_float   
      BTFSC   Float_tmp,1   ;if both float dropped bit1 will set
      call   fulling      ;start pump & control level
      ;sleep
      
   

      
      
      
;________________swich off heartbeat LED _____      
      MOVLW b'00000001'
      MOVWF   time
      call   pr_pause
      BSF   port_a_temp,0
      MOVF    port_a_temp, 0
      MOVWF   PORTA
;________________swich off heartbeat LED end____________________________________      
      

      Goto    main
      
      END     


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Автодолив для аквариума на PIC16F54, не работает прошивк
СообщениеДобавлено: Чт апр 26, 2018 07:12:24 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21795
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
С какого перепуга программа будет стартовать с 0х1FF?
И почему с нуля размещен какой то вызов заканчивающийся return ?
Вы понимаете смысл того, что пишите?

Код:
ORG     0x1FF             ; processor reset vector
      goto    start
      ORG     0x000
pr_pause
................
................
     return


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Автодолив для аквариума на PIC16F54, не работает прошивк
СообщениеДобавлено: Чт апр 26, 2018 12:33:16 
Друг Кота
Аватар пользователя

Карма: 49
Рейтинг сообщений: 390
Зарегистрирован: Вс июл 12, 2009 19:15:29
Сообщений: 7010
Откуда: Ижевск
Рейтинг сообщения: 0
ORG 0x1FF
Навеяно, надо полагать, тем, что где-то в конце стоит какая-то команда, которая что-то возвращает.

_________________
Docendo discimus


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Автодолив для аквариума на PIC16F54, не работает прошивк
СообщениеДобавлено: Чт апр 26, 2018 15:30:11 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21795
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Возможно и навеяно, но по факту там будет goto, а программа начнет с порчи стека.


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Автодолив для аквариума на PIC16F54, не работает прошивк
СообщениеДобавлено: Чт апр 26, 2018 17:31:45 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
КРАМ, ты не застал что ли сию древность? У него вектор сброса там...


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Автодолив для аквариума на PIC16F54, не работает прошивк
СообщениеДобавлено: Пт апр 27, 2018 00:05:11 
Открыл глаза

Зарегистрирован: Ср сен 24, 2014 11:14:53
Сообщений: 50
Откуда: Москва
Рейтинг сообщения: 0
С какого перепуга программа будет стартовать с 0х1FF?

Честно? не до конца. С векторами сброса и прерываний планировал разбираться позже. Конкретно этот кусок списано... эээ... т.е. взят из примеров на сайте микрочипа и из стандартного файла начального к нему.
Если немного разжуете, буду рад.
КРАМ",url="/forum/viewtopic.php?p=3363163#p3363163 писал(а):
И почему с нуля размещен какой то вызов заканчивающийся return ?
Вы понимаете смысл того, что пишите?

Я правильно понял по интонации, что мне требуется убрать вызовы ниже основного тела?
Если бы я все понимал я бы не задавал вопросов.
dosikus писал(а):
КРАМ, ты не застал что ли сию древность? У него вектор сброса там...

Таки да.

Добавлено after 8 minutes 7 seconds:
Re: Автодолив для аквариума на PIC16F54, не работает прошивка
Ну и еще, если верить симуляции, программа нормальностартует и работает именно до стечения обстоятельств, что процедура Pr_pause вызыаается из процедуры No_osmos.
Практика подтверждает это за тем отличием, что на симуляции все потом выходит на нормальный режим, а на реальном железе где то уходит в разнос не зависая.
Это действительно может быть связано с тем что я неправильно пользуюсь векторами? Если да, то еще раз прошу пояснить. Чуть подробнее.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Автодолив для аквариума на PIC16F54, не работает прошивк
СообщениеДобавлено: Пт апр 27, 2018 04:05:21 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21795
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Странно, что Вы не увидели, что стартовая позиция симулятора - адрес НОЛЬ.
Все программы для PIC10...PIC16 имеют стандартный код начала программного флеша:
Код:
    ORG  0x000  ; это вектор сброса
  nop
  goto   Start
    ORG  0x004  ; это вектор прерываний
  <код обработчика прерываний>
..............
..............
..............
Start
   <начало программы>


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Автодолив для аквариума на PIC16F54, не работает прошивк
СообщениеДобавлено: Пт апр 27, 2018 07:00:15 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
КРАМ, здесь шаблон 16F54TMPO.ASM с мЫпЫАСМ ...
Увы, для меня совершенно непонятно -на кой товарищу нужно сношаться с этим г. мамонта...

Код:
    list      p=16F54             ; list directive to define processor
    #include <p16F5x.inc>         ; processor specific variable definitions

    __CONFIG   _CP_OFF & _WDT_OFF & _RC_OSC

; '__CONFIG' directive is used to embed configuration word within .asm file.
; The lables following the directive are located in the respective .inc file.
; See respective data sheet for additional information on configuration word.

;***** VARIABLE DEFINITIONS
TEMP_VAR    UDATA
temp        RES     1             ;example variable definition

;**********************************************************************
RESET_VECTOR   CODE   0x1FF       ; processor reset vector
        goto    start

MAIN    CODE    0x000
start   
        nop                       ; example code
        movlw   0xFF              ; example code
        movwf   temp              ; example code

; remaining code goes here



Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Автодолив для аквариума на PIC16F54, не работает прошивк
СообщениеДобавлено: Пт апр 27, 2018 12:47:15 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21795
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
Опаньки, какого же он года?
:dont_know:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Автодолив для аквариума на PIC16F54, не работает прошивк
СообщениеДобавлено: Пт апр 27, 2018 12:54:41 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
Точно не помню, я таким в 90х баловался причем был один единственный . Еще были 16С84 ...

Упс, вру . В 90х был 16C54, а 16F54 это его реинкарнация 2003г.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Автодолив для аквариума на PIC16F54, не работает прошивк
СообщениеДобавлено: Пт апр 27, 2018 17:19:26 
Открыл глаза

Зарегистрирован: Ср сен 24, 2014 11:14:53
Сообщений: 50
Откуда: Москва
Рейтинг сообщения: 0
Как приятно послушать диалог умных и опытных людей. :)) ( ни малейшей иронии в утверждении, если что. )
И так, мы вроде разобрались, что:

КРАМ писал(а):
Странно, что Вы не увидели, что стартовая позиция симулятора - адрес НОЛЬ.
Все программы для PIC10...PIC16 имеют стандартный код начала программного флеша:
Код:
    ORG  0x000  ; это вектор сброса
      ORG  0x004  ; это вектор прерываний
 Start
   


У F54 нет вектора прерываний от слова совсем, и мой код не совсем мертвый вроде?
Единственное сомнение у меня в этом направлении осталось в правильности расположения переменных. т.е. вроде и они с нулевого адреса, и программа, а в банке отдельного раздела под переменные я не вижу. Но в примерах опять же было так же.

Но и хотелось бы вернуться к первоначальной проблеме.

dosikus писал(а):
КРАМ, здесь шаблон 16F54TMPO.ASM с мЫпЫАСМ ...
Увы, для меня совершенно непонятно -на кой товарищу нужно сношаться с этим г. мамонта...


Все же считаю нужным ответить. :-) они мне достались "по наследству" в горсти, и для моей цели (в т.ч. изучение азов работы с МК) меня устраивают. В т.ч. тем что у них нет ни какой переферии, с которой надо пол-года разбираться прежде чем начать хотя-бы моргать светодиодами. Как только освою этот - подумаю, что бы перейти на другие ( так же лежит 16f685 и еще какой то, достаточно современный с 54 ногами. можель не помню, лежит далеко в коробке.)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Автодолив для аквариума на PIC16F54, не работает прошивк
СообщениеДобавлено: Пт апр 27, 2018 17:53:18 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 1
Медали: 5
Получил миской по аватаре (5)
Shk_Alex, Примите мои поздравления. Вам удалось обрушить STACK.
У PIC16F54 только два уровня STACK-а. В вашей программе, после 3-го я уже смотреть не стал.
Из main: call fulling > call No_osmos > call pr_pause


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Автодолив для аквариума на PIC16F54, не работает прошивк
СообщениеДобавлено: Пт апр 27, 2018 18:02:50 
Друг Кота
Аватар пользователя

Карма: 57
Рейтинг сообщений: 777
Зарегистрирован: Чт апр 19, 2007 16:10:43
Сообщений: 9271
Откуда: г.Москва
Рейтинг сообщения: 0

_________________
Правило для российского гражданина: Во всем принимай сторону России, независимо от того, кто Россию возглавляет в данный момент, и какая страна или страны ей противостоят. Руководствуйся мудростью: "Россия, - всё, остальное - ничто!"


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Автодолив для аквариума на PIC16F54, не работает прошивк
СообщениеДобавлено: Пт апр 27, 2018 18:44:41 
Открыл глаза

Зарегистрирован: Ср сен 24, 2014 11:14:53
Сообщений: 50
Откуда: Москва
Рейтинг сообщения: 0
Shk_Alex, Примите мои поздравления. Вам удалось обрушить STACK.
У PIC16F54 только два уровня STACK-а. В вашей программе, после 3-го я уже смотреть не стал.
Из main: call fulling > call No_osmos > call pr_pause


Спасибо.
тут понятнее. Спасибо. Действительно, забыл, что это требуется контролировать.
И три уровня там только в этом месте.
Тогда вопрос. Будут ли правильными прыжки:
Main > fulling > no_osmos > fulling > no_osmos > fulling >no_osmos > fulling > main

Или обязательно спускаться до конца стека?
Main > fulling > no_osmos > fulling > main
Есть ли способы "обойти" эти ограничения?

Добавлено after 4 minutes 2 seconds:


Информативно. Но не понятно...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Автодолив для аквариума на PIC16F54, не работает прошивк
СообщениеДобавлено: Пт апр 27, 2018 18:47:16 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 0
Медали: 5
Получил миской по аватаре (5)
Максимум может быть два уровня по CALL от main. Превысите - программа обрушится.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Автодолив для аквариума на PIC16F54, не работает прошивк
СообщениеДобавлено: Пт апр 27, 2018 18:58:24 
Открыл глаза

Зарегистрирован: Ср сен 24, 2014 11:14:53
Сообщений: 50
Откуда: Москва
Рейтинг сообщения: 0
Максимум может быть два уровня по CALL от main. Превысите - программа обрушится.


Это я понял, хоть и прощелкал.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Автодолив для аквариума на PIC16F54, не работает прошивк
СообщениеДобавлено: Пт апр 27, 2018 19:05:53 
Друг Кота
Аватар пользователя

Карма: 90
Рейтинг сообщений: 1859
Зарегистрирован: Чт сен 12, 2013 00:54:12
Сообщений: 4119
Откуда: ЗаМКАДье. Там, где ЦУП
Рейтинг сообщения: 1
Медали: 5
Получил миской по аватаре (5)
Если там сейчас не более 3-х вложений - перетащите fulling в main.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Автодолив для аквариума на PIC16F54, не работает прошивк
СообщениеДобавлено: Пт апр 27, 2018 22:22:25 
Открыл глаза

Зарегистрирован: Ср сен 24, 2014 11:14:53
Сообщений: 50
Откуда: Москва
Рейтинг сообщения: 0
Если там сейчас не более 3-х вложений - перетащите fulling в main.

Лучше немного логику переделаю все-таки. а то запутаюсь с включением выключением... помпу сжечь или воду в аквариум перелить.....

А так всем спасибо за помощь. завалился на ерунде, сам бы не нашел.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Автодолив для аквариума на PIC16F54, не работает прошивк
СообщениеДобавлено: Сб апр 28, 2018 03:43:11 
Друг Кота
Аватар пользователя

Карма: 138
Рейтинг сообщений: 2712
Зарегистрирован: Чт янв 10, 2008 22:01:02
Сообщений: 21795
Откуда: Московская область, Фрязино
Рейтинг сообщения: 0
замените вызовы макросами и можно ничего не переделывать


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Автодолив для аквариума на PIC16F54, не работает прошивк
СообщениеДобавлено: Сб апр 28, 2018 10:45:52 
Открыл глаза

Зарегистрирован: Ср сен 24, 2014 11:14:53
Сообщений: 50
Откуда: Москва
Рейтинг сообщения: 0
После коррекции все заработало.
Смущает, что при дебаггинге MPLAB ругается cannot be resolved to a valid program memory address
На строках
ORG 0x1FF ; processor reset vector
INIT
CALL INIT


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


Короче не ломаю ли я как раз правильную адресацию? куда класть переменные правильно?


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 24 ]  1,  

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


Кто сейчас на форуме

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


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

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y