Jump to content

    

ijor

Участник
  • Content Count

    15
  • Joined

  • Last visited

Community Reputation

0 Обычный

About ijor

  • Rank
    Участник
  1. Большое спасибо за развёрнутый ответ. Хочу воспользоваться случаем и узнать мнение профессионала. Перед нами стоит задача рализовать определённый алгоритм на промышленном контроллере. Важно что бы реализация получилась кросплатформенной, т.к. заказчики иногда предпочитают одного производителя кондроллеров другому и соответственно требуют систему автоматизации выполненую на конткретном контроллере. Алгоритм каждый раз переписывать под разные контроллеры нет возможности. Мы выбрали CoDeSys как платформу для поддержки кросплатформенности. Как Вы думаете насколько обоснован наш выбор, есть-ли другая возможность реализовать кросплатформенность(я имею ввиду не реализацю стандарта МЭК61131). Насколько большие лицензионные отчисления на среду выполнения CoDeSys?
  2. Установил CoDeSys 3.2, Ctrl-C работете , а в версии 2.3 нехочет. С автодекларацией справился, спасибо) Почему вы предпочли бы ST, возможно у меня предвзятое мнение по поводу неудобства этого языка, но с другой стороны я всю жизнь програмил на Си . В связи с кризисом, выбирать особо не из чего, пришлось с кодесисом разбираться, надеюсь дальше програмить на си как только с работой получше станет, а за это время не хочется квалификацию терять)
  3. Приветствую! Как я понял из сообщения необходимо к какому-то устройству (возможно это пром компьютер) имеющему интерфейс ISA добавить возможность обмениватся данными по RS-422. Если на плату не накладываются требования хитрой аппаратной обработки полученных данных, мозможно проще будет взят готовую плату для скажем 232 и добавить небольшой конвертер для согласования с 422. С готовыми платами идут в комплекте дрова а к собственной их ещё придётся писать)
  4. Недавно пришлось столкнутся с прогамммированием на языках МЭК61131 на CoDeSys, после долгого ознакомления со всеми языками выбор упал на ST как на самый продвинутый и более менее похожий на СИ. Через несколько недель прогарммирования на ST от него стало невыносимо воротить, добило, что неработает под codesysом ctrl-c и автоматический вызов регистрации переменных. Решил всё что надо написать на родном Си и ввиде POU загнать в кодесис. Может кто знает как это сделать? Важно что-бы эти POU были кросплатформенныим т.е. по всей видимости надо подключать обьектный файл.
  5. Можно поподробнее? Нет не убрал, вить при вызове SWI прерывания происходит переход в режим supervisor и все прерывания автоматически запрещаются
  6. В общем проблему решил убрав из прерывания I2C вызов SWI прерываний, почему ошибка происходила только в мат функциях так и не понял, хотя может и не только, но в них было заметней всего. Всем спасибо за помощь!
  7. Кажется появилась зацепка. Я в обработчике прерываний I2C использую вложенное SWI прерывание для работы с FIFO буфером, по сей видимости дело может быть в нём... Прерывания происходят довольно часто, i2c работает на частоте 40КГц Использую проц LPC2108, запускал программу на LPC2214 симпттомы были те-же.
  8. Это есть, иначе бы память на I2C не работала) Кажется появилась зацепка. Я в обработчике прерываний I2C использую вложенное SWI прерывание для работы с FIFO буфером, по сей видимости дело может быть в нём... Использую проц LPC2108, запускал программу на LPC2214 симпттомы были те-же.
  9. Глюк пропадает если отказаться от прерывания модуля I2C Очень похоже что у меня то -же что -то с прерываниеями не то. В программе разрешено только два прерывания от I2C и uart. Если закоментировать I2C глюк пропадает. Но вложеные прерывания я не использую, т.е. не включаю, если не ошибаюсь то по умолчанию они отключины
  10. Я смотрел в дебагере в режиме пошагового выполнения.
  11. Помогите разобраться ,pls Может кто сталкивался с проблемой зацикливания программы при выполнении операции взятия остатка от деления signed int temp; temp%=1000; пишу на С, компилятор Keil Ниже приведена функция которую подставляет компилятор для выполнения деления, точками отмечено участок кода в котором программа зацикливается при этом содержимое регистров не меняется ?C?SDIV?A: 0x00015670 E211C102 ANDS R12,R1,#0x80000000 0x00015674 42611000 RSBMI R1,R1,#0x00000000 0x00015678 E03CB040 EORS R11,R12,R0,ASR #32 0x0001567C 22600000 RSBCS R0,R0,#0x00000000 0x00015680 E1B08001 MOVS R8,R1 0x00015684 0A00000D BEQ 0x000156C0 0x00015688 E15800A0 CMP R8,R0,LSR #1 0x0001568C 91A08088 MOVLS R8,R8,LSL #1 0x00015690 3AFFFFFC BCC 0x00015688 · 0x00015694 E1500008 CMP R0,R8 · 0x00015698 E0ACC00C ADC R12,R12,R12 · 0x0001569C 20400008 SUBCS R0,R0,R8 · 0x000156A0 E1380001 TEQ R8,R1 · 0x000156A4 11A080A8 MOVNE R8,R8,LSR #1 · 0x000156A8 1AFFFFF9 BNE 0x00015694 0x000156AC E1A0100C MOV R1,R12 0x000156B0 E1B0B08B MOVS R11,R11,LSL #1 0x000156B4 22611000 RSBCS R1,R1,#0x00000000 0x000156B8 42600000 RSBMI R0,R0,#0x00000000 0x000156BC E12FFF1E BX R14 0x000156C0 E3E01000 MVN R1,#0x00000000 0x000156C4 E3A00000 MOV R0,#0x00000000 0x000156C8 E12FFF1E BX R14 0x000156CC FFFFFFFF (???) По всей видимости проблемы из за стека, хотя изменение размера стека не устраняет глюк. Использую в программе swi, irq Undefined Mode 0x0000 0020 Supervisor Mode 0x0000 0020 Abort Mode 0x0000 0020 Fast Interrupt Mode 0x0000 0020 Interrupt Mode 0x0000 0800 User/System Mode 0x0000 0800 Знающие люди рекомендовали обратить внимание на CSTACK,но чем он отличается от стека User/System режима при условии, находимся в этом режиме я понять не могу?
  12. Не смог найти UserManual для LPC2468 есть только ApplicationNote, Migrating, DataSheet . Подскажите, pls, где можно его найти.