Вопросы начинающих PIC ASM
- КРАМ
- Друг Кота
- Сообщения: 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]
Но там дребезг особого значения не имеет. Желаете датчик для электронной системы - делаете электронный датчик. Как в любом ДВС.
Добавлено after 1 minute 53 seconds:
[uquote="yor",url="/forum/viewtopic.php?p=4601507#p4601507"]контакты прерывателя механические[/uquote]
Но там дребезг особого значения не имеет. Желаете датчик для электронной системы - делаете электронный датчик. Как в любом ДВС.
- Реклама
Re: Вопросы начинающих PIC ASM
Дайте совет, пож-ста, почему оно не компилится. Я, конечно, ещё не до конца причесал, но уже вроде должно. И объявлены там на что он ругается, а почему "Parser error", вообще непонятно.
Re: Вопросы начинающих PIC ASM
Неправильно
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
Пока хватит.
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
Пока хватит.
Re: Вопросы начинающих PIC ASM
Спасибо. А почему 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:
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
;==
- Реклама
Re: Вопросы начинающих PIC ASM
А чем лучше?
В описании сказано, что все UDATA* для объектных файлов. Это мне подойдёт, ессли мне нужен только .hex и исходник всего один?
CBLOCK не разбирался из-за отсутствия отступов
В описании сказано, что все 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 при единственном небольшом проекте? Это подойдет всем.
Читаемостью, видимостью переменных в отладке, наконец, просто удобнее иметь одну переменную вместо побайтного разложения на две, три или больше.
[uquote="yor",url="/forum/viewtopic.php?p=4601766#p4601766"]В описании сказано, что все UDATA* для объектных файлов.[/uquote]
Бред сивой кобылы. Вы ничего не поняли. Это просто перемещаемый режим.
[uquote="yor",url="/forum/viewtopic.php?p=4601766#p4601766"]Это мне подойдёт, ессли мне нужен только .hex и исходник всего один?[/uquote]
А кому нужен не только hex при единственном небольшом проекте? Это подойдет всем.
Re: Вопросы начинающих PIC ASM
Это русские микрочиповцы ничего не поняли, они так пишут в русском переводе.
- КРАМ
- Друг Кота
- Сообщения: 25259
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Вопросы начинающих PIC ASM
[uquote="yor",url="/forum/viewtopic.php?p=4601785#p4601785"]Это русские микрочиповцы[/uquote]
Дело не в том, кто и чего пишет. Ничего не поняли именно вы.
И таки да, адрес в перемещаемом режиме определяется линкером и потому можно из исходника скомпилить перемещаемый обжект.
НУ И ЧТО? Можно - не значит нужно. Это просто возможность. Дополнительная фича.
Дело не в том, кто и чего пишет. Ничего не поняли именно вы.
И таки да, адрес в перемещаемом режиме определяется линкером и потому можно из исходника скомпилить перемещаемый обжект.
НУ И ЧТО? Можно - не значит нужно. Это просто возможность. Дополнительная фича.
Re: Вопросы начинающих PIC ASM
Мы говорим относительно мпасма - у топиктартера нечто другое. Могут быть разночтения.

- КРАМ
- Друг Кота
- Сообщения: 25259
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Вопросы начинающих PIC ASM
[uquote="BOB51",url="/forum/viewtopic.php?p=4601814#p4601814"]Мы говорим относительно мпасма[/uquote]
У него и есть mpasm. С чего бы быть другому?
У него и есть mpasm. С чего бы быть другому?
Re: Вопросы начинающих PIC ASM
Ну вообще-то 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 1Re: Вопросы начинающих PIC ASM
Тогда об отличиях написания для абсолютного и относительного режимов должен знать...

А вот как там в gpasm дела обстоят...
Этого я не ведаю... Может вообще другие директивы должны использоваться...

А вот как там в gpasm дела обстоят...
Этого я не ведаю... Может вообще другие директивы должны использоваться...
- КРАМ
- Друг Кота
- Сообщения: 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?
Тогда нюансы синтаксиса - только сам. Это плата за маргинальность.
[uquote="yor",url="/forum/viewtopic.php?p=4601823#p4601823"]Переменные однобайтные[/uquote]
Даладна...
А что это там за .L и .H?
Re: Вопросы начинающих PIC ASM
Чем это переписывается, команд до этого нет?
Код: Выделить всё
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 PCLATHRe: Вопросы начинающих PIC ASM
Возможно как и у мпасма в gpasm помимо прочего есть различия в указании адреса по . org для относительного и абсолютного режимов. Но то читать юзера гвиду на gpasm надо...

Запуск с командной строки особенно требует знаний документации компилятора...
У меня такое только для MCS51 (привык уже за годы работ), дык и то нашёл способ вывернуться с многофайловиками.
Но это ВРЕМЯ сколько прошло...

Запуск с командной строки особенно требует знаний документации компилятора...
У меня такое только для MCS51 (привык уже за годы работ), дык и то нашёл способ вывернуться с многофайловиками.
Но это ВРЕМЯ сколько прошло...
Re: Вопросы начинающих PIC ASM
Нету для него никакой гуиды, то же самое что mpasm.
Вот такое успешно компилится. До org то же самое, только без CBLOCK
И какое различие?
Вот такое успешно компилится. До 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]
Так это и есть разница, по видимому...
И зачем вы тут публикуете листинги дизасма? Публиковать нужно только исходник.
Еще раз предлагаю перейти на перемещаемый режим. Чтобы не грызть кактус.
Так это и есть разница, по видимому...
И зачем вы тут публикуете листинги дизасма? Публиковать нужно только исходник.
Еще раз предлагаю перейти на перемещаемый режим. Чтобы не грызть кактус.
Re: Вопросы начинающих PIC ASM
Различия в стиле указания адреса по директиве org ...
Для мпасма даже специальные шаблон-заготовки для написания проектов относительного и абсолютного режимов прилагаются. Причём "смесь" (одновременно применение абсолютного и относительного режимов в одном проекте) компилятор дико не любит...
Относительно документации - при использовании официального дистрибутива она обязательно в комплекте идёт.
Как минимум руководство по ключам командной строки...

Для мпасма даже специальные шаблон-заготовки для написания проектов относительного и абсолютного режимов прилагаются. Причём "смесь" (одновременно применение абсолютного и относительного режимов в одном проекте) компилятор дико не любит...
Относительно документации - при использовании официального дистрибутива она обязательно в комплекте идёт.
Как минимум руководство по ключам командной строки...
- КРАМ
- Друг Кота
- Сообщения: 25259
- Зарегистрирован: Чт янв 10, 2008 22:01:02
- Откуда: Московская область, Фрязино
Re: Вопросы начинающих PIC ASM
[uquote="BOB51",url="/forum/viewtopic.php?p=4601872#p4601872"]Причём "смесь" (одновременно применение абсолютного и относительного режимов в одном проекте) компилятор дико не любит...[/uquote]
В чем заключается эта "нелюбовь"? Естественно, что синтаксис перемещаемого режима в абсолютном работать не будет. А вот наоборот - запросто.
В чем заключается эта "нелюбовь"? Естественно, что синтаксис перемещаемого режима в абсолютном работать не будет. А вот наоборот - запросто.


