Вопросы начинающих PIC ASM

Поклонники продукции Microchip Technology Inc тусуются тут.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25259
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Вопросы начинающих PIC ASM

Сообщение КРАМ »

Геркон не рассчитан на 5 мс коммутации. Для КЭМ1, например, верхняя частота коммутации - 50 Гц. То есть 20 мс. При дребезге 2 мс.

Добавлено after 1 minute 53 seconds:
[uquote="yor",url="/forum/viewtopic.php?p=4601507#p4601507"]контакты прерывателя механические[/uquote]
Но там дребезг особого значения не имеет. Желаете датчик для электронной системы - делаете электронный датчик. Как в любом ДВС.
Реклама
yor
Говорящий с текстолитом
Сообщения: 1679
Зарегистрирован: Сб янв 19, 2008 23:57:27

Re: Вопросы начинающих PIC ASM

Сообщение yor »

Дайте совет, пож-ста, почему оно не компилится. Я, конечно, ещё не до конца причесал, но уже вроде должно. И объявлены там на что он ругается, а почему "Parser error", вообще непонятно.
pic-uoz.tar.7z
(15.44 КБ) 182 скачивания
Реклама
koms48
Встал на лапы
Сообщения: 132
Зарегистрирован: Пт окт 19, 2012 05:54:55

Re: Вопросы начинающих PIC ASM

Сообщение koms48 »

Неправильно
1T.H equ 0x75 ; ======КОНСТАНТЫ==========
1T.L equ 0x30 ; период 1/2 оборота в тиках TMR OSC/4 LimitRPMin ниже УОЗ=0
2T.H equ 0x3A
2T.L equ 0x98 ; период в точке 2000 об/мин
И далее
Не начинай константы с цифры

Неправильно
Start: goto Init

Правильно
Start
goto Init
Пока хватит.
yor
Говорящий с текстолитом
Сообщения: 1679
Зарегистрирован: Сб янв 19, 2008 23:57:27

Re: Вопросы начинающих PIC ASM

Сообщение yor »

Спасибо. А почему CBLOCK не воспринимается напрочь? Вроде ничего не нарушено.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25259
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Вопросы начинающих PIC ASM

Сообщение КРАМ »

[uquote="koms48",url="/forum/viewtopic.php?p=4601690#p4601690"]Неправильно
Start: goto Init

Правильно
Start
goto Init[/uquote]
С чего бы это? :)
Пример:
Изображение

[uquote="yor",url="/forum/viewtopic.php?p=4601751#p4601751"]почему CBLOCK[/uquote]
Лучше перейти на режим relative и определять переменные через udata/udata_shr:

Код: Выделить всё

bank0	udata 0x20
currPeltier		res 2
setTemp		res 2
tempRad		res 2
tempPeltier	res 2
tempBox		res 2
startTimer		res 1
currPeltierAVG	res 2
bank1	udata 0x120
currSetPID	res 2
currZ1PID		res 3
currZ2PID		res 3
currAccPID	res 5
currOutPID	res 5
		udata_shr
flags			res 1
;--------------------
data_ready	equ	0
two_sec_req	equ	1
first_time		equ	2
alarm_req		equ	3
;--------------------
muxADC		res 1
muxDataADC	res 1
tempParameter	res 1
statFirstTime	res	1
countAlarm	res	2
tempInt		res	4
;==
; functions PID
currPID		equ	0
tempPID		equ	1
peltPID		equ	2
fanPID		equ	3
;==

Реклама
yor
Говорящий с текстолитом
Сообщения: 1679
Зарегистрирован: Сб янв 19, 2008 23:57:27

Re: Вопросы начинающих PIC ASM

Сообщение yor »

А чем лучше?
В описании сказано, что все UDATA* для объектных файлов. Это мне подойдёт, ессли мне нужен только .hex и исходник всего один?

CBLOCK не разбирался из-за отсутствия отступов
Последний раз редактировалось yor Сб июл 13, 2024 08:24:22, всего редактировалось 1 раз.
Реклама
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25259
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Вопросы начинающих PIC ASM

Сообщение КРАМ »

[uquote="yor",url="/forum/viewtopic.php?p=4601766#p4601766"]А чем лучше?[/uquote]
Читаемостью, видимостью переменных в отладке, наконец, просто удобнее иметь одну переменную вместо побайтного разложения на две, три или больше.
[uquote="yor",url="/forum/viewtopic.php?p=4601766#p4601766"]В описании сказано, что все UDATA* для объектных файлов.[/uquote]
Бред сивой кобылы. Вы ничего не поняли. Это просто перемещаемый режим.
[uquote="yor",url="/forum/viewtopic.php?p=4601766#p4601766"]Это мне подойдёт, ессли мне нужен только .hex и исходник всего один?[/uquote]
А кому нужен не только hex при единственном небольшом проекте? Это подойдет всем.
yor
Говорящий с текстолитом
Сообщения: 1679
Зарегистрирован: Сб янв 19, 2008 23:57:27

Re: Вопросы начинающих PIC ASM

Сообщение yor »

Это русские микрочиповцы ничего не поняли, они так пишут в русском переводе.
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25259
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Вопросы начинающих PIC ASM

Сообщение КРАМ »

[uquote="yor",url="/forum/viewtopic.php?p=4601785#p4601785"]Это русские микрочиповцы[/uquote]
Дело не в том, кто и чего пишет. Ничего не поняли именно вы.
И таки да, адрес в перемещаемом режиме определяется линкером и потому можно из исходника скомпилить перемещаемый обжект.
НУ И ЧТО? Можно - не значит нужно. Это просто возможность. Дополнительная фича.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15570
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Вопросы начинающих PIC ASM

Сообщение BOB51 »

Мы говорим относительно мпасма - у топиктартера нечто другое. Могут быть разночтения.
:(
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25259
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Вопросы начинающих PIC ASM

Сообщение КРАМ »

[uquote="BOB51",url="/forum/viewtopic.php?p=4601814#p4601814"]Мы говорим относительно мпасма[/uquote]
У него и есть mpasm. С чего бы быть другому?
yor
Говорящий с текстолитом
Сообщения: 1679
Зарегистрирован: Сб янв 19, 2008 23:57:27

Re: Вопросы начинающих PIC ASM

Сообщение yor »

Ну вообще-то gpasm, совместимый.

Код: Выделить всё

 00084
Error[149]  : Directive only allowed when generating an object file: "UDATA_SHR"
                      00085         UDATA_SHR
0000   3FFF           00086 w_sav   res     1
0002   3FFF           00087 stat_sav res    1
0004   3FFF           00088 pclath_sav res 1
0006   3FFF           00089 AA.L    res     1
Что здесь не так? Переменные однобайтные
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15570
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Вопросы начинающих PIC ASM

Сообщение BOB51 »

Тогда об отличиях написания для абсолютного и относительного режимов должен знать...
:dont_know:
А вот как там в gpasm дела обстоят...
Этого я не ведаю... Может вообще другие директивы должны использоваться...
:roll:
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25259
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Вопросы начинающих PIC ASM

Сообщение КРАМ »

[uquote="yor",url="/forum/viewtopic.php?p=4601823#p4601823"]Ну вообще-то gpasm[/uquote]
Тогда нюансы синтаксиса - только сам. Это плата за маргинальность.
[uquote="yor",url="/forum/viewtopic.php?p=4601823#p4601823"]Переменные однобайтные[/uquote]
Даладна... :)))
А что это там за .L и .H? :tea:
yor
Говорящий с текстолитом
Сообщения: 1679
Зарегистрирован: Сб янв 19, 2008 23:57:27

Re: Вопросы начинающих PIC ASM

Сообщение yor »

Чем это переписывается, команд до этого нет?

Код: Выделить всё

Error[118]  : Overwriting previous address contents: 0x0000
0000   282C           00093 Start:  goto    Init
Спойлер

Код: Выделить всё

gpasm-1.5.2 #1325 (Mar 29 2024) pic-uoz-016.a   13.07.2024  14:53:31        PAGE  1

LOC    OBJECT CODE    LINE  SOURCE TEXT
  VALUE
                      00001 list    p=16f627a
                      00002 #include        p16f627a.inc
                      00001         LIST
                      00002
                      00003 ;====================
                      00004 ; Build date : Oct 21 2015
                      00005 ;  MPASM PIC16F627A processor include
                      00006 ;
                      00007 ;  (c) Copyright 1999-2015 Microchip Technology, All rights reserved
                      00008 ;====================
                      00009
                      00386         LIST
                      00003
                      00004 #define Bank0   bcf STATUS,RP0
0000   1303           00005                 bcf STATUS,RP1
                      00006 #define Bank1   bsf STATUS,RP0
0001   1303           00007                 bcf STATUS,RP1
                      00008 #define Bank2   bcf STATUS,RP0
0002   1703           00009                 bsf STATUS,RP1
                      00010 #define Bank3   bsf STATUS,RP0
0003   1703           00011                 bsf STATUS,RP1
                      00012
2007   3F10           00013         __CONFIG _CPD_OFF & _CP_OFF & _BODEN_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKO
                            UT & _LVP_OFF
                      00014
                      00015 ;; адреса
                      00016         CBLOCK 0x20
  00000058            00017 ;  AL     AM      BL   BM        CL     CM      DL      DM
  00000020            00018  hiAA.L,hiAA.H,loDPZ.L,loDPZ.H,loAA.L,loAA.H,hiDPZ.L,hiDPZ.H,xDPZ.L,xDPZ.H
  0000002A            00019  AB.L,AB.M,AB.H,AB.U,CD.L,CD.M,CD.H,CD.U,CD.UL
  00000033            00020  RES.L,RES.M,RES.H,RES.U,REG.AL,REG.AM,REG.AH                           ; REG.AH - лишний?
  0000003A            00021  Q.REG.L,Q.REG.M,Q.REG.H,REZ.L,REZ.M,REZ.H,REZ.U,REZ.UL
  0000003A            00022 ; loT.H:loT.L период в точке графика, соотв меньшим оборотам hi-l
                            o относительно оборотов, на самом деле период больше, чем
                            hiT
  0000003A            00023 ; hiT.H:hiT.L период в точке графика, соотв большим оборотам hi-l
                            o относительно оборотов, на самом деле период меньше, чем
                            loT
  00000042            00024  loT.H,loT.L,hiT.H,hiT.L
  00000046            00025  cnt_loop               ; регистр проходов антидребезга
  00000047            00026  T.H,T.L                        ; Время полуоборота в тиках TMR OSC/4
  00000049            00027  ton.H,ton.L            ; время накопления в тиках TMR OSC/4
  0000004B            00028  toff.H,toff.L          ; время ожидания, выдержка, в тиках TMR OSC/4
  0000004D            00029  Dact                   ; RA2-3 D1 || D2 актив лог0, активный канал
  0000004E            00030  Stsflg                 ; флаги состояния: 2:_AA.0, 1:AA.0, 0:ICflg
  0000004F            00031  Dlvl                   ; моментальный реальный уровень датчиков, д.
                            .я обнаружения инверсии
  00000050            00032  pTMRoff,TMRoff,pTMRon,TMRon,_pTMRoff,_TMRoff,_pTMRon,_TMRon    ; время вкл бобин вычи.
                            .ленная для загруза в TMRA, _подчерк актив
  00000058            00033  Rtmp2,Rtmp1            ; вспом регистры   56 штук
                      00034         ENDC
                      00035 ;; адреса
  00000070            00036 w_sav   equ     0x70
.gpasm-1.5.2 #1325 (Mar 29 2024) pic-uoz-016.a   13.07.2024  14:53:31        PAGE  2


LOC    OBJECT CODE    LINE  SOURCE TEXT
  VALUE

  00000071            00037 stat_sav equ    0x71
  00000072            00038 pclath_sav equ  0x72
  00000073            00039 AA.L    equ     0x73    ; AA.H:AA.L вычисляемый УОЗ в тиках TMR OSC/4, отступ
                            до зад фронта RearFront
  00000074            00040 AA.H    equ     0x74
                      00041 ;; wghtMSB
                      00042
  00000000            00043 ICflg   equ     0       ; флаг вкл/выкл бобин Dflg 0бит, сигнализирует .
                            . вкл состоянии бобин
  00000002            00044 _AA.0   equ     0x2     ; флаг состояния AA=0 в Stsflg в предыдущем перио.
                            .е
  00000001            00045 AA.0    equ     0x1     ; флаг состояния AA=0 в Stsflg в текущем периоде
  00000007            00046 RBPU    EQU     0x7     ; Бит подтяжек глобально
  00000005            00047 IC1     equ     0x5     ; бобина 1Ц RB5
  00000006            00048 IC2     equ     0x6     ; бобина 2Ц RB6
  00000000            00049 TAHO    equ     0       ; тахометр RB0
  00000001            00050 TMRA    EQU     0x1     ; TMR0 отсчёт toff ton AA (УОЗ)
  0000000E            00051 TMRT    EQU     0xE     ; TMR1 измерение периода
  0000000E            00052 TMRT.L  EQU     0xE
  0000000F            00053 TMRT.H  EQU     0xF
  00000002            00054 D1      equ     0x2     ; RA2 sense in, active LOW ↓↑
  00000003            00055 D2      equ     0x3     ; RA3 sense in, active LOW ↓↑
  00000075            00056 m1T.H   equ     0x75    ; ======КОНСТАНТЫ==================
                            ==========
  00000030            00057 m1T.L   equ     0x30    ; период 1/2 оборота в тиках TMR OSC/4 LimitRPMin ниже У
                            ОЗ=0
  0000003A            00058 m2T.H   equ     0x3A
  00000098            00059 m2T.L   equ     0x98    ; период в точке 2000 об/мин
  00000027            00060 m3T.H   equ     0x27
  00000010            00061 m3T.L   equ     0x10    ;               КОНТРОЛЬНЫЕ ПЕРЕЛОМНЫЕ ТОЧКИ крив.
                            .й УОЗ
  0000001D            00062 m4T.H   equ     0x1D    ;               НЕ ПОДЛЕЖАТ ИЗМЕНЕНИЮ                НЕ П.
                            .ДЛЕЖАТ ИЗМЕНЕНИЮ
  0000004C            00063 m4T.L   equ     0x4C
  00000017            00064 m5T.H   equ     0x17    ; период в точке 5000 об/мин
  00000070            00065 m5T.L   equ     0x70
  00000013            00066 m6T.H   equ     0x13
  00000088            00067 m6T.L   equ     0x88
  00000012            00068 m7T.H   equ     0x12    ; LimitRPMax огр макс обороты, выше УОЗ=0, в тиках TM
                            R OSC/4
  00000099            00069 m7T.L   equ     0x99    ; 6300 RPM
  00000000            00070 m1AA.H  equ     0       ; ==========КОНСТАНТЫ==============
                            ==========
  00000000            00071 m1AA.L  equ     0       ; 0° УОЗ в точке 1000 об/мин
  00000004            00072 m2AA.H  equ     0x4
  000000E2            00073 m2AA.L  equ     0xE2    ; 15° УОЗ в точке 2000 об/мин
  00000004            00074 m3AA.H  equ     0x4
  00000057            00075 m3AA.L  equ     0x57    ; 20° УОЗ в точке 3000 об/мин
  00000003            00076 m4AA.H  equ     0x3
  000000BE            00077 m4AA.L  equ     0xBE    ; 23° УОЗ в точке 4000 об/мин            ПОДЛЕЖАТ ИЗМ.
                            .НЕНИЮ, УОЗ В КОНТРОЛЬНЫХ ТОЧКАХ
  00000003            00078 m5AA.H  equ     0x3
  00000041            00079 m5AA.L  equ     0x41    ; 25° УОЗ в точке 5000 об/мин            ПЕРЕЛОМА КРИ.
.gpasm-1.5.2 #1325 (Mar 29 2024) pic-uoz-016.a   13.07.2024  14:53:31        PAGE  3


LOC    OBJECT CODE    LINE  SOURCE TEXT
  VALUE
  
                            .ОЙ УОЗ
  00000002            00080 m6AA.H  equ     0x2
  000000D2            00081 m6AA.L  equ     0xD2    ; 26° УОЗ в точке 6000 об/мин
  00000002            00082 m7AA.H  equ     0x2
  000000AF            00083 m7AA.L  equ     0xAF    ; 26° УОЗ в точке 6300 об/мин
  00000005            00084 loop_drbzg equ  0x5     ; число проходов антидребезга
  000000FF            00085 fTMRT.L equ     0xff    ; для первого полуоборота TMRT=FFFF, эмуляция пе.
                            .иода ≈65мс
  000000FF            00086 fTMRT.H equ     0xff    ; f - значит FIRST! stage
  00000007            00087 fpTMRoff equ    0x7     ; toff=T-ton=C000
  0000003F            00088 fTMRoff equ     0x3F    ; для первого полуоборота
  00000005            00089 fpTMRon equ     0x5     ; ton=T/4=3FFF
  00000000            00090 fTMRon  equ     0       ; для первого полуоборота ГТО
                      00091
0000                  00092         org     0
Error[118]  : Overwriting previous address contents: 0x0000
0000   282C           00093 Start:  goto    Init
                      00094
0004                  00095         org     4
0004   00F0           00096         movwf   w_sav           ; save context
0005   0E03           00097         swapf   STATUS,w
0006   00F1           00098         movwf   stat_sav
0007   080A           00099         movf    PCLATH,w        ; only required if using more than first page
0008   00F2           00100         movwf   pclath_sav
0009   018A           00101         clrf    PCLATH
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15570
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Вопросы начинающих PIC ASM

Сообщение BOB51 »

Возможно как и у мпасма в gpasm помимо прочего есть различия в указании адреса по . org для относительного и абсолютного режимов. Но то читать юзера гвиду на gpasm надо...
:sleep:
Запуск с командной строки особенно требует знаний документации компилятора...
У меня такое только для MCS51 (привык уже за годы работ), дык и то нашёл способ вывернуться с многофайловиками.
Но это ВРЕМЯ сколько прошло...
:beer:
yor
Говорящий с текстолитом
Сообщения: 1679
Зарегистрирован: Сб янв 19, 2008 23:57:27

Re: Вопросы начинающих PIC ASM

Сообщение yor »

Нету для него никакой гуиды, то же самое что mpasm.
Вот такое успешно компилится. До org то же самое, только без CBLOCK

Код: Выделить всё

        org     0
Init:   Bank1                   ; Переход в 1 банк
        movlw   b'111111'
        movwf   TRISIO          ; 0x3F ; Все ноги в z как входы
        bsf     OPTION_REG,GPPU ; Выключение подтяжек глобально
        clrf    WPU             ; Выключение подтяжек
        clrf    IOC             ; Запрещение прерываний на цифр. входах
        movlw   b'1011000'      ; Выбор входа/ножки/pin АЦП
        movwf   ANSEL           ; 0x58 ; Делитель тактов 16Tosc и выбор AN3
        clrf    PIE1            ; запрет прерываний от АЦП и проч
        Bank0                   ; Переход в 0 банк
        clrf    INTCON          ; Запрет прерываний (глобальных) и от периферии
        movlw   b'111'
        movwf   CMCON           ; 0x7 ; Выкл компаратора
        clrf    GPIO            ; b000000       ; Все выходы в 0
И какое различие?
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25259
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Вопросы начинающих PIC ASM

Сообщение КРАМ »

[uquote="yor",url="/forum/viewtopic.php?p=4601866#p4601866"]До org то же самое, только без CBLOCK[/uquote]
Так это и есть разница, по видимому...
И зачем вы тут публикуете листинги дизасма? Публиковать нужно только исходник.
Еще раз предлагаю перейти на перемещаемый режим. Чтобы не грызть кактус.
Аватара пользователя
BOB51
Друг Кота
Сообщения: 15570
Зарегистрирован: Вт мар 16, 2010 22:02:27
Откуда: ДОНЕЦК

Re: Вопросы начинающих PIC ASM

Сообщение BOB51 »

Различия в стиле указания адреса по директиве org ...
Для мпасма даже специальные шаблон-заготовки для написания проектов относительного и абсолютного режимов прилагаются. Причём "смесь" (одновременно применение абсолютного и относительного режимов в одном проекте) компилятор дико не любит...
:roll:
Относительно документации - при использовании официального дистрибутива она обязательно в комплекте идёт.
Как минимум руководство по ключам командной строки...
:tea:
Аватара пользователя
КРАМ
Друг Кота
Сообщения: 25259
Зарегистрирован: Чт янв 10, 2008 22:01:02
Откуда: Московская область, Фрязино

Re: Вопросы начинающих PIC ASM

Сообщение КРАМ »

[uquote="BOB51",url="/forum/viewtopic.php?p=4601872#p4601872"]Причём "смесь" (одновременно применение абсолютного и относительного режимов в одном проекте) компилятор дико не любит...[/uquote]
В чем заключается эта "нелюбовь"? Естественно, что синтаксис перемещаемого режима в абсолютном работать не будет. А вот наоборот - запросто.
Ответить

Вернуться в «PIC»