Форум Микро-Чип
Поиск и заказ электронных компонентов
 

Вернуться   Форум Микро-Чип > Вопросы начинающих

Вопросы начинающих Прежде чем задать вопрос, стоит воспользоваться поиском

Ответ
 
Опции темы Опции просмотра
Старый 15.02.2018, 21:23   #1
hfmscan
Senior Member
 
Аватар для hfmscan
 
Регистрация: 17.01.2013
Адрес: Москва
Возраст: 43
Сообщений: 415
Вес репутации: 243/26
hfmscan has a spectacular aura abouthfmscan has a spectacular aura abouthfmscan has a spectacular aura about
Отправить сообщение для hfmscan с помощью ICQ
По умолчанию Может испортиться FSR0 или FSR2 из-за прерываний?

Здравствуйте,

сначала опишу суть девайса.
принимается команда по USART1 (прием в прерывании), далее основной код ее обрабатывает примерно 20-50 мсек и отдает ответ по USART1.
При этом при старте работы устройства заполняется один массив параметров. Далее этот массив только читается.
Большинство работы с массивами в программе реализовано через загрузку адреса в FSR0\FSR2 и дальше POSTINC бегаю по массивам.

Так вот, если во время обработки команды послать в порт мусор или другую команду то после этого работа устройства нарушается из-за того что испорчен массив параметров. Большая часть массива зануляется...

Я предположил что проблема в том при при заходе в прерывание не сохраняются и не восстанавливаются регистры FSR0\FSR2
и поэтому например любая очистка массива может тереть любую область памяти...

Возможно такое? как лечить?
__________________
STM32F042
PIC18F25k80
hfmscan вне форума   Ответить с цитированием
Старый 15.02.2018, 23:40   #2
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,696
Вес репутации: 3274/70
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Может испортиться FSR0 или FSR2 из-за прерываний?

hfmsca
посмотрите disasm.
ну или в отладке гляньте значение на входе и на выходе.

поведения, указанного Вами, за с18 не замечал.
besogon вне форума   Ответить с цитированием
Старый 16.02.2018, 10:01   #3
siargy
Senior Member
 
Аватар для siargy
 
Регистрация: 03.07.2007
Адрес: Минск
Возраст: 38
Сообщений: 857
Вес репутации: 1266/61
siargy has much to be proud ofsiargy has much to be proud ofsiargy has much to be proud ofsiargy has much to be proud ofsiargy has much to be proud ofsiargy has much to be proud ofsiargy has much to be proud ofsiargy has much to be proud ofsiargy has much to be proud of
По умолчанию Re: Может испортиться FSR0 или FSR2 из-за прерываний?

уменя после приема отключаются прерывания а включаю после отправки пакета
__________________
Построил тепличку, посеял литопсы, вырастил кактусы
siargy вне форума   Ответить с цитированием
Старый 16.02.2018, 12:34   #4
DimaS
Senior Member
 
Регистрация: 05.04.2008
Адрес: Israel
Возраст: 45
Сообщений: 1,465
Вес репутации: 2283/74
DimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond reputeDimaS has a reputation beyond repute
По умолчанию Re: Может испортиться FSR0 или FSR2 из-за прерываний?

Цитата:
Сообщение от siargy Посмотреть сообщение
уменя после приема отключаются прерывания а включаю после отправки пакета
А если во время отправки еще чего пришло?
Правильнее не отключать прерывание приемника, а складывать в нем в буфер для последующего разбора.
Отправлять пакет тоже по прерыванию (или ПДП).
Ввиду конечного размера буфера, теоретически тоже возможно что-то пропустить, но практически маловероятно, если все по уму делать.
DimaS вне форума   Ответить с цитированием
Старый 16.02.2018, 13:10   #5
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,722
Вес репутации: 5285/161
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: Может испортиться FSR0 или FSR2 из-за прерываний?

Цитата:
Сообщение от siargy Посмотреть сообщение
уменя после приема отключаются прерывания а включаю после отправки пакета
зачем в программе на С явно использовать эти FSR-ы для организации массивов?
Greg вне форума   Ответить с цитированием
Старый 16.02.2018, 13:56   #6
tsb58
Senior Member
 
Аватар для tsb58
 
Регистрация: 04.11.2008
Адрес: Харьков
Сообщений: 359
Вес репутации: 992/48
tsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to behold
По умолчанию Re: Может испортиться FSR0 или FSR2 из-за прерываний?

Цитата:
Сообщение от hfmscan Посмотреть сообщение
Большинство работы с массивами в программе реализовано через загрузку адреса в FSR0\FSR2 и дальше POSTINC бегаю по массивам.
Цитата:
Сообщение от Greg Посмотреть сообщение
зачем в программе на С явно использовать эти FSR-ы для организации массивов?
Вот именно. Компилятор активно использует FSR-ы для своих целей. А Вы своим прямым обращением к ним "конкурируете" с компилятором. То, что до использования прерываний всё это как то работало и не "выстрелило" - просто счастливое совпадение обстоятельств.
Нужно использовать СИшные конструкции для работы с массивами, а компилятор сам для этого задействует FSRы корректным способом.
tsb58 вне форума   Ответить с цитированием
Старый 16.02.2018, 14:28   #7
hfmscan
Senior Member
 
Аватар для hfmscan
 
Регистрация: 17.01.2013
Адрес: Москва
Возраст: 43
Сообщений: 415
Вес репутации: 243/26
hfmscan has a spectacular aura abouthfmscan has a spectacular aura abouthfmscan has a spectacular aura about
Отправить сообщение для hfmscan с помощью ICQ
По умолчанию Re: Может испортиться FSR0 или FSR2 из-за прерываний?

Да, Вы правы.
Дело в том что я никогда не использовал прерывания... поэтому у меня особых глюков не было, когда-то я пробежался по коду и понял что FSR0 и FSR2 не используются, поэтому юзал их спокойно...
сейчас посмотрел програм мемори, а там работа с этим FSR2, только вот мне теперь надо понять что там делается с ними, ибо я не знаток asm совсем
Код:
 Line         Address         Opcode         Label         DisAssy    
1281           0A00           EFA5           _entry         GOTO 0x794A    
1282           0A02           F03C                          NOP            
1283           0A04           0012                          RETURN 0       
1284           0A06           0000                          NOP            
1285           0A08           EF0F           high_interrupt GOTO 0xA1E     
1286           0A0A           F005                          NOP            
1287           0A0C           0012                          RETURN 0       
1288           0A0E           0012     __init         RETURN 0       
1289           0A10           FFFF                          NOP            
1290           0A12           FFFF                          NOP            
1291           0A14           FFFF                          NOP            
1292           0A16           FFFF                          NOP            
1293           0A18           EF19           low_interrupt  GOTO 0xA32     
1294           0A1A           F005                          NOP            
1295           0A1C           0012                          RETURN 0       
1296           0A1E           CFDA     InterruptHandlerHigh  MOVFF FSR2H, PREINC1
1297           0A20           FFE4                          NOP            
1298           0A22           CFE2                          MOVFF FSR1H, FSR2H
1299           0A24           FFDA                          NOP            
1300           0A26           52E6                          MOVF POSTINC1, F, ACCESS
1301           0A28           0000                          NOP            
1302           0A2A           52E5                          MOVF POSTDEC1, F, ACCESS
1303           0A2C           CFE5                          MOVFF POSTDEC1, FSR2H
1304           0A2E           FFDA                          NOP            
1305           0A30           0011                          RETFIE 1       
1306           0A32           CFDA     InterruptHandlerLow  MOVFF FSR2H, PREINC1
1307           0A34           FFE4                          NOP            
1308           0A36           CFE9                          MOVFF FSR0L, PREINC1
1309           0A38           FFE4                          NOP            
1310           0A3A           CFEA                          MOVFF FSR0H, PREINC1
1311           0A3C           FFE4                          NOP            
1312           0A3E           52E6                          MOVF POSTINC1, F, ACCESS
1313           0A40           0100                          MOVLB 0x0      
1314           0A42           696D                          SETF Flag_Interrupt_Occurred, BANKED
1315           0A44           AAA4                          BTFSS PIR3, 5, ACCESS
1316           0A46           D011                          BRA 0xA6A      
1317           0A48           5160                          MOVF packet_cnt, W, BANKED
1318           0A4A           ECDA                          CALL 0x27B4, 0 
1319           0A4C           F013                          NOP            
1320           0A4E           507A                          MOVF RCREG2, W, ACCESS
1321           0A50           6EEE                          MOVWF POSTINC0, ACCESS
1322           0A52           6AEF                          CLRF INDF0, ACCESS
1323           0A54           5160                          MOVF packet_cnt, W, BANKED
1324           0A56           E103                          BNZ 0xA5E      
1325           0A58           0104                          MOVLB 0x4      
1326           0A5A           5100                          MOVF timer, W, BANKED
1327           0A5C           E002                          BZ 0xA62       
1328           0A5E           0100                          MOVLB 0x0      
1329           0A60           2B60                          INCF packet_cnt, F, BANKED
1330           0A62           0100                          MOVLB 0x0      
1331           0A64           0E01                          MOVLW 0x1      
1332           0A66           6F61                          MOVWF packet_need_check, BANKED
1333           0A68           D7ED                          BRA 0xA44      
1334           0A6A           0E06                          MOVLW 0x6      
1335           0A6C           14A6                          ANDWF RCSTA2, W, ACCESS
1336           0A6E           E007                          BZ 0xA7E       
1337           0A70           98A6                          BCF RCSTA2, 4, ACCESS
1338           0A72           6989                          SETF USART2_was_fault, BANKED
1339           0A74           88A6                          BSF RCSTA2, 4, ACCESS
1340           0A76           0EFF                          MOVLW 0xFF     
1341           0A78           5D7A                          SUBWF iUSART2ExErr, W, BANKED
1342           0A7A           E201                          BC 0xA7E       
1343           0A7C           2B7A                          INCF iUSART2ExErr, F, BANKED
1344           0A7E           AA9E                          BTFSS PIR1, 5, ACCESS
1345           0A80           D00B                          BRA 0xA98      
1346           0A82           CFAE                          MOVFF RCREG1, query_last_char
1347           0A84           F08A                          NOP            
1348           0A86           0101                          MOVLB 0x1      
1349           0A88           5100                          MOVF timer, W, BANKED
1350           0A8A           EC96                          CALL 0x272C, 0 
1351           0A8C           F013                          NOP            
1352           0A8E           C08A                          MOVFF query_last_char, POSTINC0
1353           0A90           FFEE                          NOP            
1354           0A92           6AEF                          CLRF INDF0, ACCESS
1355           0A94           2B00                          INCF timer, F, BANKED
1356           0A96           D7F3                          BRA 0xA7E      
1357           0A98           0E06                          MOVLW 0x6      
1358           0A9A           14AB                          ANDWF RCSTA1, W, ACCESS
1359           0A9C           E008                          BZ 0xAAE       
1360           0A9E           98AB                          BCF RCSTA1, 4, ACCESS
1361           0AA0           0100                          MOVLB 0x0      
1362           0AA2           6988                          SETF USART_was_fault, BANKED
1363           0AA4           88AB                          BSF RCSTA1, 4, ACCESS
1364           0AA6           0EFF                          MOVLW 0xFF     
1365           0AA8           5D77                          SUBWF iUartExErr, W, BANKED
1366           0AAA           E201                          BC 0xAAE       
1367           0AAC           2B77                          INCF iUartExErr, F, BANKED
1368           0AAE           52E5                          MOVF POSTDEC1, F, ACCESS
1369           0AB0           CFE5                          MOVFF POSTDEC1, FSR0H
1370           0AB2           FFEA                          NOP            
1371           0AB4           CFE5                          MOVFF POSTDEC1, FSR0L
1372           0AB6           FFE9                          NOP            
1373           0AB8           CFE5                          MOVFF POSTDEC1, FSR2H
1374           0ABA           FFDA                          NOP            
1375           0ABC           0011                          RETFIE 1
__________________
STM32F042
PIC18F25k80

Последний раз редактировалось hfmscan; 16.02.2018 в 14:47.
hfmscan вне форума   Ответить с цитированием
Старый 16.02.2018, 14:52   #8
hfmscan
Senior Member
 
Аватар для hfmscan
 
Регистрация: 17.01.2013
Адрес: Москва
Возраст: 43
Сообщений: 415
Вес репутации: 243/26
hfmscan has a spectacular aura abouthfmscan has a spectacular aura abouthfmscan has a spectacular aura about
Отправить сообщение для hfmscan с помощью ICQ
По умолчанию Re: Может испортиться FSR0 или FSR2 из-за прерываний?

если я правильно понял асм код, то он сохраняет регистры и это не должно быть проблемой...
Код:
1306           0A32           CFDA     InterruptHandlerLow  MOVFF FSR2H, PREINC1
1307           0A34           FFE4                          NOP            
1308           0A36           CFE9                          MOVFF FSR0L, PREINC1
1309           0A38           FFE4                          NOP            
1310           0A3A           CFEA                          MOVFF FSR0H, PREINC1
1311           0A3C           FFE4                          NOP
.......................
.......................
.......................
1369           0AB0           CFE5                          MOVFF POSTDEC1, FSR0H
1370           0AB2           FFEA                          NOP            
1371           0AB4           CFE5                          MOVFF POSTDEC1, FSR0L
1372           0AB6           FFE9                          NOP            
1373           0AB8           CFE5                          MOVFF POSTDEC1, FSR2H
1374           0ABA           FFDA                          NOP            
1375           0ABC           0011                          RETFIE 1
__________________
STM32F042
PIC18F25k80
hfmscan вне форума   Ответить с цитированием
Старый 16.02.2018, 15:22   #9
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,696
Вес репутации: 3274/70
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Может испортиться FSR0 или FSR2 из-за прерываний?

hfmscan
если не замесить стек. замесили стек - все.
я плотно не работал с C18 и работал давно.
я работал с sdcc.
в sdcc mpic16 FSR1 и FSR2 служебные регистры - указатель стека и фрейма. их нужно использовать с осторожностью.

наверняка в С18 есть руководство, какие регистры зарезервированы компилятором под служебные нужды.
besogon вне форума   Ответить с цитированием
Старый 16.02.2018, 15:46   #10
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,722
Вес репутации: 5285/161
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: Может испортиться FSR0 или FSR2 из-за прерываний?

Цитата:
Сообщение от hfmscan Посмотреть сообщение
если я правильно понял асм код, то он сохраняет регистры и это не должно быть проблемой...
как там - "узнают по плодам их..."
если оно работало, а потом перестало - значит проблема есть.
Вернее ее бы не было, но вы сами создали на ровном месте какую-то хрень. У вас килобайты нормальной ОЗУ, синтаксис Си для работы с массивами (указатели, индексы и т.д.), так нет - докопались до каких-то трех мутных регистров...
Greg вне форума   Ответить с цитированием
Старый 16.02.2018, 15:54   #11
hfmscan
Senior Member
 
Аватар для hfmscan
 
Регистрация: 17.01.2013
Адрес: Москва
Возраст: 43
Сообщений: 415
Вес репутации: 243/26
hfmscan has a spectacular aura abouthfmscan has a spectacular aura abouthfmscan has a spectacular aura about
Отправить сообщение для hfmscan с помощью ICQ
По умолчанию Re: Может испортиться FSR0 или FSR2 из-за прерываний?

Greg и другие, кто по поводу правильной писанины на С - Я вас понимаю... когда я пишу на персоналке то мне не нужно тех извращений... а тут понадобилось, поэтому везде где можно я на эти регистры переписал еще много лет назад.
причина http://www.microchip.su/showthread.php?t=16913

по поводу проблема была ли ранее и точно ли она сейчас возникла - посмотрел коменты в программе, увидел что ранее я тоже ловил похожий глюк (он немного не так формировался), но проблема что портилась таблица - было... сейчас видимо осложняется чем-то (добавился второй уарт, и переписал на прерывания)...
самое главное я пока не понимаю каким методом это искать... одно хоть хорошо - воспроизводится глюк на ура )))
__________________
STM32F042
PIC18F25k80
hfmscan вне форума   Ответить с цитированием
Старый 16.02.2018, 15:59   #12
besogon
Senior Member
 
Регистрация: 12.07.2012
Возраст: 31
Сообщений: 1,696
Вес репутации: 3274/70
besogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond reputebesogon has a reputation beyond repute
По умолчанию Re: Может испортиться FSR0 или FSR2 из-за прерываний?

hfmscan
Вы можете смотреть содержимое на входе и выходе из прерывания.

сомневаетесь - сделайте костыль на asm который сохраняет то, в чем Вы сомневаетесь в какое-то место и из него восстанавливает по выходу.

если Вы используете нетривиальную, то у Вас и коды будет нетривиальные для всего.
besogon вне форума   Ответить с цитированием
Старый 16.02.2018, 17:31   #13
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,722
Вес репутации: 5285/161
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: Может испортиться FSR0 или FSR2 из-за прерываний?

Цитата:
Сообщение от hfmscan Посмотреть сообщение
т.е. там какой-то готовый кусок асма решили обрамить на Си?
Greg вне форума   Ответить с цитированием
Старый 16.02.2018, 17:42   #14
hfmscan
Senior Member
 
Аватар для hfmscan
 
Регистрация: 17.01.2013
Адрес: Москва
Возраст: 43
Сообщений: 415
Вес репутации: 243/26
hfmscan has a spectacular aura abouthfmscan has a spectacular aura abouthfmscan has a spectacular aura about
Отправить сообщение для hfmscan с помощью ICQ
По умолчанию Re: Может испортиться FSR0 или FSR2 из-за прерываний?

нет, просто там написано отчего я использую в программе на C работу с массивами через FSR0 и POSTINC0
__________________
STM32F042
PIC18F25k80
hfmscan вне форума   Ответить с цитированием
Старый 16.02.2018, 18:17   #15
hfmscan
Senior Member
 
Аватар для hfmscan
 
Регистрация: 17.01.2013
Адрес: Москва
Возраст: 43
Сообщений: 415
Вес репутации: 243/26
hfmscan has a spectacular aura abouthfmscan has a spectacular aura abouthfmscan has a spectacular aura about
Отправить сообщение для hfmscan с помощью ICQ
По умолчанию Re: Может испортиться FSR0 или FSR2 из-за прерываний?

этот баг победил вроде.
исторически я работал всегда с одним массивом query, в него и принимал данные, там же обрабатывал и туда же ответ писал для отправки назад.
понятно что такой способ работает только в режиме когда во время формирования ответа мы ничего не принимаем... переписал на 2 буфера - приемный и ответный и пока глюка нет. возможно просто потому что где-то адреса массивов поменялись и что-то куда-то сместилось...
теперь вот я репу чешу над такой проблемой.
скорость UART у меня 38400, это значит что буфер приемный (2 байта ) заполнится за 0.5мс... а мне в программе нужно выключать прерывания на время примерно 1.2 мс... т.е. сейчас я теряю приемные байты что не есть хорошо... причина того что мне нужно запрещать прерывания - софтовый уарт, который общается на скорости 9600, плюс еще на прием ведется на ноге 12, куда никакое прерывание не прицепить... да и оптравка у меня втупую сделана что нужно монопольное владение контроллером...
пока не знаю как по уму это разрулить... скорее всего прерывания будут включены, а если во время отправки или приема софтовым уартом произошло прерывание, то буду повторять обмен
__________________
STM32F042
PIC18F25k80
hfmscan вне форума   Ответить с цитированием
Старый 16.02.2018, 18:38   #16
tsb58
Senior Member
 
Аватар для tsb58
 
Регистрация: 04.11.2008
Адрес: Харьков
Сообщений: 359
Вес репутации: 992/48
tsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to behold
По умолчанию Re: Может испортиться FSR0 или FSR2 из-за прерываний?

Цитата:
Сообщение от hfmscan Посмотреть сообщение
причина того что мне нужно запрещать прерывания - софтовый уарт, который общается на скорости 9600...
Т.е. в вашем ПИКе есть 2 аппаратных EUSARTа, а еще + софтовый? Не многовато ли интерфейсов на один камень?
Какова у Вас тактовая частота?
tsb58 вне форума   Ответить с цитированием
Старый 16.02.2018, 18:46   #17
hfmscan
Senior Member
 
Аватар для hfmscan
 
Регистрация: 17.01.2013
Адрес: Москва
Возраст: 43
Сообщений: 415
Вес репутации: 243/26
hfmscan has a spectacular aura abouthfmscan has a spectacular aura abouthfmscan has a spectacular aura about
Отправить сообщение для hfmscan с помощью ICQ
По умолчанию Re: Может испортиться FSR0 или FSR2 из-за прерываний?

4 МГц,
да, 2 аппаратных (но по логике я работаю всегда только с одним источником), а вот софтовый он да, тоже есть и можно сказать основной... суть такая что запросы я получаю по аппаратным UART, а для того чтобы сформировать ответ, мне нужно через софтовый уарт поговорить с ЭБУ двигателя.

в прицнипе при шттаной работе (когда все приходит как нужно) проблем не возникает и все работает... но сейчас задача стоит так, что нужно в фоне, пока нет запросов, читать ЭБУ, так сказать подготавливать данные для быстрого ответа потом... связано с тем что мне на запрос нужно ответить быстро (тайминги протокола) а я не могу уложиться за это время, поэтому хочу делать фоновое чтение...
пока не написал, но проблема как бы видна, что я во время запрещения прерываний могу получить запрос, и по факту сейчас я теряю его (не получил один два байта, значит потерял запрос)...
__________________
STM32F042
PIC18F25k80

Последний раз редактировалось hfmscan; 16.02.2018 в 18:54.
hfmscan вне форума   Ответить с цитированием
Старый 16.02.2018, 19:22   #18
tsb58
Senior Member
 
Аватар для tsb58
 
Регистрация: 04.11.2008
Адрес: Харьков
Сообщений: 359
Вес репутации: 992/48
tsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to behold
По умолчанию Re: Может испортиться FSR0 или FSR2 из-за прерываний?

Да уж, 4 Мгц маловато будет... А ведь Ваш ПИК позволяет легко получить тактовую 16 Мгц, а с внешним кварцем и до 25. Это я к тому, что на большей тактовой легче было бы разруливать работу софтового УАРТа и прерываний...
tsb58 вне форума   Ответить с цитированием
Старый 16.02.2018, 19:30   #19
hfmscan
Senior Member
 
Аватар для hfmscan
 
Регистрация: 17.01.2013
Адрес: Москва
Возраст: 43
Сообщений: 415
Вес репутации: 243/26
hfmscan has a spectacular aura abouthfmscan has a spectacular aura abouthfmscan has a spectacular aura about
Отправить сообщение для hfmscan с помощью ICQ
По умолчанию Re: Может испортиться FSR0 или FSR2 из-за прерываний?

железо менять не могу, ибо это готовые промышленные девайсы. я только свою прошивку туда лью.

В теории, я могу переписать софтовый уарт на таймер и сделать его прерывание высокого уровня... с отправкой проблем точно не должно возникнуть, а вот с приемом будут...
но пока пытаюсь обойти меньшими затратами (если придумаю).

PS: все таки глюк остался но вызвать его теперь очень проблематично... это надо насиловать проц командами очень сильно, думаю в реальной жизни такого быть не должно.
__________________
STM32F042
PIC18F25k80
hfmscan вне форума   Ответить с цитированием
Старый 16.02.2018, 19:47   #20
tsb58
Senior Member
 
Аватар для tsb58
 
Регистрация: 04.11.2008
Адрес: Харьков
Сообщений: 359
Вес репутации: 992/48
tsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to beholdtsb58 is a splendid one to behold
По умолчанию Re: Может испортиться FSR0 или FSR2 из-за прерываний?

Цитата:
Сообщение от hfmscan Посмотреть сообщение
PS: все таки глюк остался но вызвать его теперь очень проблематично... это надо насиловать проц командами очень сильно, думаю в реальной жизни такого быть не должно.
Даже если вероятность события мала, но не 0%, то рано или поздно "в реальной жизни" оно произойдет.
tsb58 вне форума   Ответить с цитированием
Старый 16.02.2018, 19:50   #21
hfmscan
Senior Member
 
Аватар для hfmscan
 
Регистрация: 17.01.2013
Адрес: Москва
Возраст: 43
Сообщений: 415
Вес репутации: 243/26
hfmscan has a spectacular aura abouthfmscan has a spectacular aura abouthfmscan has a spectacular aura about
Отправить сообщение для hfmscan с помощью ICQ
По умолчанию Re: Может испортиться FSR0 или FSR2 из-за прерываний?

согласен полностью. посмотрю, может сделаю контроль таблицы этой и если изменилась то буду ее обновлять... тупо конечно, но не могу предположить в каком месте оно портится, и главное не понимаю каким методом искать, тем более когда уже и вызвать проблема не так просто
__________________
STM32F042
PIC18F25k80
hfmscan вне форума   Ответить с цитированием
Старый 17.02.2018, 08:34   #22
siargy
Senior Member
 
Аватар для siargy
 
Регистрация: 03.07.2007
Адрес: Минск
Возраст: 38
Сообщений: 857
Вес репутации: 1266/61
siargy has much to be proud ofsiargy has much to be proud ofsiargy has much to be proud ofsiargy has much to be proud ofsiargy has much to be proud ofsiargy has much to be proud ofsiargy has much to be proud ofsiargy has much to be proud ofsiargy has much to be proud of
По умолчанию Re: Может испортиться FSR0 или FSR2 из-за прерываний?

Цитата:
Сообщение от DimaS Посмотреть сообщение
А если во время отправки еще чего пришло?
Правильнее не отключать прерывание приемника, а складывать в нем в буфер для последующего разбора.
конечно, это все зависит от условий работы и возможностей устройства.
в моем варианте у ведомого контроллера не было необходимости получать несколько запросов подряд не выдав ответа.

Цитата:
Сообщение от Greg Посмотреть сообщение
зачем в программе на С явно использовать эти FSR-ы для организации массивов?
из первого сообщения можно зделать вывод что программа на асме.
__________________
Построил тепличку, посеял литопсы, вырастил кактусы
siargy вне форума   Ответить с цитированием
Старый 17.02.2018, 10:07   #23
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,722
Вес репутации: 5285/161
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: Может испортиться FSR0 или FSR2 из-за прерываний?

Цитата:
Сообщение от siargy Посмотреть сообщение
из первого сообщения можно зделать вывод что программа на асме.
нет, это было не очевидно и это не так (программа не на асме). В соседней теме была ссылка ещё куда-то. Человек годами тянет какой-то асмовый кусок из проекта в проект. забавный опыт из серии "мертвецы хватают за ноги"...
Greg вне форума   Ответить с цитированием
Старый 17.02.2018, 10:49   #24
hfmscan
Senior Member
 
Аватар для hfmscan
 
Регистрация: 17.01.2013
Адрес: Москва
Возраст: 43
Сообщений: 415
Вес репутации: 243/26
hfmscan has a spectacular aura abouthfmscan has a spectacular aura abouthfmscan has a spectacular aura about
Отправить сообщение для hfmscan с помощью ICQ
По умолчанию Re: Может испортиться FSR0 или FSR2 из-за прерываний?

точки на i
1. проект с 2013 года, просто иногда что-то дописываю
2. проект на C
3. на асме ничего нет, просто использую FSRx
4. тут выложил сгенерированый компилятором кусок на асме, т.к. сказали поглядеть в него на предмет порчи регистров
5. штатно контроллер тоже не должен получить следующий запрос пока не обработал этот, НО это только если он успевает в отведенное время (А разные читалки могут ждать разное время). ну и запрос может прийти из другого источника (другой USART), который является более приоритетным (после этого запрет работы с источником 1 и переключаемся на обработку запросов источника 2)... плюс есть необходимость сделать фоновое чтение.
6. разные извращения в писанине во имя скорости (редко) а в основном для уменьшения размера кода. размер памяти программ 32к (из них 2.5 занимает бутлоадер). На асме писать не умею, поэтому это не выход. камень поменять тоже не могу (покупаю готовое)
__________________
STM32F042
PIC18F25k80

Последний раз редактировалось hfmscan; 17.02.2018 в 10:57.
hfmscan вне форума   Ответить с цитированием
Старый 17.02.2018, 11:20   #25
Greg
Super Moderator
 
Регистрация: 25.02.2007
Адрес: Moscow, ODBS
Сообщений: 6,722
Вес репутации: 5285/161
Greg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond reputeGreg has a reputation beyond repute
По умолчанию Re: Может испортиться FSR0 или FSR2 из-за прерываний?

Цитата:
Сообщение от hfmscan Посмотреть сообщение
3. на асме ничего нет, просто использую FSRx
но зачем, Холмс?!
это называется горе от ума...

Последний раз редактировалось Greg; 17.02.2018 в 11:40.
Greg вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 
Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Многофункциональные часы. Н.Заяц.Книга 4. samko Вопросы начинающих 11 12.06.2012 09:26
Имитатор DS18B20 Filya44 Вопросы начинающих 14 12.03.2012 17:39


Часовой пояс GMT +3, время: 14:30.


Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd. Перевод: zCarot