Jump to content
    

sunjob

Участник
  • Posts

    112
  • Joined

  • Last visited

Reputation

0 Обычный

About sunjob

  • Rank
    Частый гость
    Частый гость

Recent Profile Visitors

1,259 profile views
  1. #ifdef __cplusplus extern "C" { #endif static int oldname(int x, int y); static int newname(int x, int y); #ifdef __cplusplus } #endif static int oldname(int x, int y) { return x + y; } static int newname(int x, int y) __attribute__((alias("oldname"))); да, проблему уже решили...(спасибо :о)
  2. день добрей, господа кладуны! :о) исходные следующие - arm-none-eabi - arduino-DUE (платформа) - __attribute__ alias пример-отладка static int oldname(int x, int y) { return x + y; } static int newname(int x, int y) __attribute__((alias("oldname"))); void setup(){;} void loop() {;} согласно url выдает ошибку alias_function:6:12: error: 'int newname(int, int)' aliased to undefined symbol 'oldname' static int newname(int x, int y) __attribute__((alias("oldname"))); ^~~~~~~ exit status 1 первый раз выкрутился препроцессором теперь надо однозначно алиас п.с. спасибо, кидайтесь ... :о)
  3. добрый день исходные: - arm-toolchain (10.3.1, 11.x, 12.2) - arm_gdb-12.1_py3.7 - openocd-0.12.0 - atmel ice (отладчик) - sam3x8e (прототиа arduino-due) - slackware-14.2 x64 отлаживаю "библиотеку" на си - передача данных по 2м проводам (wiegand): - импульс D0 -> получили "0" - импульс D1 -> получили "1" будет использоваться неск. экземпляров RFID-датчиков, поэтому планирую сделать вообще без "механизмов блокировки". в прерывании только устанавливаются флаги, все остальное делается в основном цикле. в силу "обстоятельств" (унаследовано с прототипа) подключение пинов данных D0/D1 - на разных портах (по идее это не проблема, на ардуиновском "тестовом скетче" с таким-же расположением пинов - rfid-карта читается без проблем, но, походу, конечно протестирую еще и "все на одном порту") текущий код на си. читает карту, но с особенностями. к основному номеру карты (в старший разряд) добавляется еденица и последний (младший) разряд, соотв. обрезается. для отладки по шагам вместо "виганда" подключил две кнопки (c rc-цепочкой, сигналы нормальные, дребезг отсутствует, кнопок много, менялись/проверялись) выяснилось (в отладчике): - импульс на D0 - прерывание срабатывает 1 раз и далее все "печенькой" :о) - импульс на D1 - прерывание срабатывает 3 раза 1й раз - все по делу, "на падение сигнала", как и должно быть 2й раз - не по делу, "на подьем" (возвращение кнопки обратно), причем 2раза подряд и еще для "запуток" - при чтении (без отладчика, напрямую) только одна, самая первая, неправильная 1-ца добавляется в начало (в старший разряд) а далее серийник читается правильно. порты D0/D1 инициируются на вход, включается подтяжка, ни чего особенного.код, выкусы (упрощенка) кода: // // структура (выкус) // struct struct_Wiegand { TPinOut d0; // D0 пин TPinOut d1; // D1 пин uint8_t volatile data_flag[2]; // два флага на сработку D0/D1 ... }; typedef struct struct_Wiegand TWiegand; extern TWiegand* lst_rfid[RFID_NUM_DEV]; // список указателей на структуры // // в теле реализации // TWiegand w1={ {PIOA,19}, {PIOC,18}, {PIOA,20}, 0, {0,0}, 0, 0 }; TWiegand* lst_rfid[RFID_NUM_DEV] = { &w1 }; // // регистрация/добавление обработчиков прерываний // механизм/список такой-же как в ардуино // isr_enb_port (lst_rfid[0]->d0.pio, lst_rfid[0]->d0.pin, isr_rfid0_D0, FALLING); // D0 isr_enb_port (lst_rfid[0]->d1.pio, lst_rfid[0]->d1.pin, isr_rfid0_D1, FALLING); // D1 // // обработчики // void isr_rfid0_D0() { lst_rfid[0]->data_flag[0] ++; } void isr_rfid0_D1() { lst_rfid[0]->data_flag[1] ++; } других инициализаций прерываний нет (отрубал все что можно). если закомментировать строку вызова "добавления прерывания" для D1, то прерывание на D1 не срабатывает подобрал ссылки "околотемы" URL1 URL2 URL3 URL4 URL5 URL6 пока буду изучать ссылки, доки, даташит пинайте, кидайте помидоры, идеи, ссылки, все что угодно! можно просто побалагурить по теме! :о) спасибо.
  4. добрый день во время отладки не показывается ничего, связанное с классом так и должно быть или есть куда рыть, чяво настраивать?! в Atmel-Studio/vbox ни каких проблем. p.s. встречал в инете мысли, что это нормально.
  5. DMA заработал! //////////////////////////////////////////////////////////////////////////////// void uart_ini_baud(int32_t baud) //////////////////////////////////////////////////////////////////////////////// { //###!!! // direct access to PIO //###!!! PIOA->PIO_IDR = PIO_PA8A_URXD | PIO_PA9A_UTXD; PIOA->PIO_PDR = PIO_PA8A_URXD | PIO_PA9A_UTXD; PIOA->PIO_ABSR &= ~(PIO_PA8A_URXD | PIO_PA9A_UTXD) & PIOA->PIO_ABSR; PIOA->PIO_PUER = PIO_PA8A_URXD; // | PIO_PA9A_UTXD; PMC->PMC_WPMR = 0x504D4300; PMC->PMC_PCER0 = (1 << PF_ID_UART); PMC->PMC_WPMR = 0x504D4301; PF_UART->UART_CR = UART_CR_RXDIS | UART_CR_TXDIS | UART_CR_RSTRX | UART_CR_RSTTX | UART_CR_RSTSTA; PF_UART->UART_BRGR = (MCLK / baud / 16); PF_UART->UART_MR = UART_MR_PAR_NO | UART_MR_CHMODE_NORMAL; PF_UART->UART_PTCR = UART_PTCR_RXTEN | UART_PTCR_TXTEN; PF_UART->UART_CR = UART_CR_RXEN | UART_CR_TXEN; } //////////////////////////////////////////////////////////////////////////////// всем спасибо!
  6. добрый день т.к. контроллер относится к SAM, то "обычным" способом запустить печать не получилось _FDEV_SETUP_WRITE was not declared in this scope ... ну кто-бы сомневался?! :о) в инете нашел единственный вариант для SAM url / Simple print functions for Atmel SAM microcontrollers using DMA в описании указан "наш чип" как протестированый собирается без проблем (кроме варнингов, возможно следует присмотреться?!, undefined reference - это не хухры мурхры) печать не работает (пробовал по разному) варнинги (пути к тулчейну усечены, для удобства восприятия) проект "перенесен" от сюда url / "Low level" programming of the Arduino DUE SAM3 controller with a custom IDE в нем используются arduino-sam библиотеки ~/.arduino15/packages/arduino/hardware/sam/1.6.12 makefile немного подрихтовал под себя (библиотеки не копируются в каталог проекта, а используются "как-есть", установленные в систему toolchain пробовал разные версии arm-none-eabi - 11.2 - 11.3 - 12.2 - 5.2.1 так-же arduino-toolchain ~/.arduino15/packages/arduino/tools/arm-none-eabi-gcc/4.8.3-2014q1/bin/arm-none-eabi-XXX версия toolchain выбирается установкой TOOL_CHAIN_DEF = ARDUINO TOOL_CHAIN_DEF = ARM_DEF TOOL_CHAIN_DEF = ARM p.s. понимаю, что можно взяться разгрызать - реализацию класса Arduino-Due/Serial.xxx - реализацию стандартной печати в asf-library и то и другое, понятное дело, работает, но хотелось-бы пока разобраться с данной библиотекой как обычно, принимаются любые идеи/ссылки/советы по делу, помидоры в разумных количествах, можно просто побалагуить... но, желательно в тему :о) спасибо #tag: sam3x8e sam3 avr atmel arduino due printf c arm-gcc asf
  7. набросал 2й вариант (на будущее, на доработку) вопрос: как правильно использовать "общий" провод, идущий от обьекта, на стороне контроллера?! по идее, что-бы исключить "замкнутых" контуров контакт должен быть один. пускать еще одну, отдельную жилу, вроде как уже перебор, или нет?
  8. резисторы на входе, сразу после газоразрядника, для подавления "остаточного" разряда... да, думаем над этим... пишут что смд-резисторы сгодятся для коротких импульсов
  9. 0. пробьет, если не будет "защиты/ограничения" 1. "проходная" порядка еденицы пикушек 2. защита изначально и делается, что-бы сливать в "заземление" а не в прибор аргументируйте опторазвязка тут наиболее оптимальна (имхо)
  10. 1. без опто-развязки 2. грязный сигнал -> на +3В (чистое питание процессора) 3. у виганда лог. уровни 5В
  11. --> т.е. схемы в данном топике "и есть разработанные разработчиком", далее рассматриваются небольшие моды данной "разработки" (они небольшие, например, добавлен двойной разрядник, загрубляющий токовый резистор параллельно светодиоду оптопары итд) в наших используют еще много чего... аргументируйте, рисуйте, поясняйте... пожалуйста! будем думать! в чистое питание (процессор)... вы серьезно?! + у виганда лог. уровни 5В все сделано согласно даташиту производителя на чип, бОльшая защита в данном случае не нужна
  12. есть некоторые мысли, сделал набросок вигад - две версии, первая подтянута к маломощному LDO-5V, вторая к 12V критикуйте, аргументируйте, швыряйте помидорами, но аргументированными
  13. уважаемые господа! немного задержался, примите извинения, есть причины! ВНИМАНИЕ - в данном топике мы обсуждаем текущую реализацию, ее плюсы/минусы а так-же ПРАВИЛЬНЫЕ, по вашему мнение, решения/доработки кот. можно сделать (аргументированно, конечно-же), в частности наше предложение сделать/добавить ШИНУ ЗАЗЕМЛЕНИЕ-КОРПУС так-же приветствуются другие/подобные решения ... дополнил схему, добавил виганд датчик. из хотелок/доработок виганд: - добавить так-же заземление - немного загрубить "ток срабатывания" требования на "носители и длины" --------------------------------------------------------------------------------------------------- Типы датчиков | Носитель | Длина метр (макс) --------------------------------------------------------------------------------------------------- RFID датчик | витая пара | 100м концевики (зам./разм) | обычный провод (телефонка) | 500м --------------------------------------------------------------------------------------------------- если считаете, что "все и что-то еще" не правильно, пожалуйста, высказывайтесь аргументированно - как по вашему мнению "лучше/должно быть" итд если нужны еще более дотошные уточнения по схеме, пожалуйста, пишите спасибо
×
×
  • Create New...