Jump to content

    

kuka_v

Участник
  • Content Count

    13
  • Joined

  • Last visited

Community Reputation

0 Обычный
  1. Пытаюсь оживить Season интерфейс. Это такой эмулятор смарт карты. Ведет он себя ровно как смарт или сим карта. Он вставляется в слот считывателя и после сброса по питанию выдает считавателю ATR ответ и после этого считыватель он же ридер готов общаться с помощью APDU команд. Устанавливается обмен по последовательному порту со скоростью 9600 N-8-1. Season подключает три провода RX TX и Reset. Reset он же сброс по питанию я вижу по прерыванию меняю значение LED на одно их IO портов. А вот дальше я забуксовал. Нужно отправить десяток HEX-ов через порт во временных рамках 40000 циклов, но ридер меня не видет и никак не реагирует. Может у кого остались исходники работы с Season интерфейсом? Или есть идеи как его побороть? Прерывание (P00) запаяно на первую ножку DB9 оно же сброс который от ридера. По прерыванию у меня переключается LED1. Это происходит и когда вставляю в ридер Season и если если задаю reset в программе управления ридером. //----------------------------------------------------------------------------- // MAIN Routine //----------------------------------------------------------------------------- void main (void) { char atr[16] = {0x3B, 0xF7, 0x11, 0x00, 0x40, 0x96, 0x70, 0x70, 0x07, 0x0E, 0x6C, 0xB6, 0xD6}; PCA0MD &= ~0x40; // Disable Watchdog timer Oscillator_Init(); // Initialize the system clock Port_Init (); // Initialize crossbar and GPIO Ext_Interrupt_Init(); // Initialize External Interrupts EA = 1; if(!LED1) { uart_tx(0x3B); uart_tx(0xF7); uart_tx(0x11); uart_tx(0x00); uart_tx(0x40); uart_tx(0x96); } while(1); } // void uart_msg(unsigned char *c) { while(*c != 0) { uart_tx(*c++); } } void uart_tx(unsigned int sdata) { while(!TI0); SBUF0 = sdata; while(!TI0); TI0 = 0; } //----------------------------------------------------------------------------- void INT0_ISR (void) interrupt 0 { LED1 = !LED1; }
  2. А внешний UART должен работать? Я и внешний цепляю и терминалкой пробую смотреть, там тоже тишина... У китайцев выпросил диск с примерами. Но на вопросы по ошибкам ничего не ответили
  3. настройки UART вроде как на сайте Keil прописаны. проверял
  4. Есть JTAG/C2 отладчик и подключенная к нему китайская плата EX-F34x-Q48 Пытаюсь в режиме отладки получить сообщение Hello world #include <stdio.h> #include <c8051F340.h> void main(void) { SCON0 = 0x50; TH1 = 0xFD; TMOD |= 0x20; TR1 = 1; TI0 = 1; printf(“Hello, World!\n”); while (1); } Keil отладчик вроде видит, по крайней мере в него что то "плюет" Во только в окне UART ничего не появляется... А по книжке вроде бы должно
  5. Да вроде видит. alex@alex-VirtualBox:~/Desktop$ lsusb Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub Bus 002 Device 003: ID 0483:3748 STMicroelectronics ST-LINK/V2 Bus 002 Device 002: ID 80ee:0021 VirtualBox USB Tablet Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub Перепроверил и о чудо, все заработало.... alex@alex-VirtualBox:~/Desktop$ openocd -f interface/stlink-v2.cfg -f target/stm32f4x.cfg Open On-Chip Debugger 0.9.0 (2018-01-24-01:05) Licensed under GNU GPL v2 For bug reports, read http://openocd.org/doc/doxygen/bugs.html Info : auto-selecting first available session transport "hla_swd". To override use 'transport select <transport>'. Info : The selected transport took over low-level target control. The results might differ compared to plain JTAG/SWD adapter speed: 2000 kHz adapter_nsrst_delay: 100 srst_only separate srst_gates_jtag srst_open_drain connect_deassert_srst Info : Unable to match requested speed 2000 kHz, using 1800 kHz Info : Unable to match requested speed 2000 kHz, using 1800 kHz Info : clock speed 1800 kHz Info : STLINK v2 JTAG v27 API v2 SWIM v0 VID 0x0483 PID 0x3748 Info : using stlink api v2 Info : Target voltage: 2.909307 Info : stm32f4x.cpu: hardware has 6 breakpoints, 4 watchpoints Похоже на то что и хостовую машину и плату надо было все выключить и включить. Спасибо за помощь! За то что отозвались!
  6. Нашел вот такую книжицу: https://japaric.github.io/discovery/README.html и решил попробовать наконец Rust for Embedded. Споткнулся на подключении моей платки к Ubuntu. Ubuntu 16 у меня в virtualbox-е. По опыту знаю бывают проблемы с прокидыванием USB внутрь виртуальной машины.... Вопрос: ошибка возникает на попытке присоединиться по stlink-ку типа: can't connect to OpenOCD - "Error: open failed" у автора она вроде как описана, но все права и пр вроде проверил по два раза. Есть ликакие рекомендации? Помогите добрым советом. Здесь его рекомендации, у меня не сработало: https://japaric.github.io/discovery/appendi...ror-open-failed
  7. Добрее надо к людям относится! Свою "крутизну" в другом месте показывать надо... Чел прочитал и даташит несколько раз и видео инструкции послушал. И только выполнял урок из видео, использую метод "шаг в сторону" В коде была ошибка-опечатка и другой "опытный! чел мог бы и указать на нее. Ошибка была в адресе бита-регистра потому компилятор это не видел.
  8. Спасибо! За материал к классу особенно! Сколько ни мучал гугл, сюда он меня не приводил. Я еще раз все проверю. Вообщем то я ожидал что пройдя все что для UART0 и поправив все на значения для UART1 у меня все получится. Но не тут то было. У меня сейчас на PB0/PB1GND (это UART1) висит Profilic преобразователь и воткнут в отдельную винду. Но пока там тишина, как я не мучал плату. Когда две неизвестных сложнее искать причину. Если бы я был уверен в коде, то грешил бы на преобазователь. Ан нет на этот курс я натыкался. Он показался мне длинноватым. Да и материалов к курсу я не увидел. Буду пересматривать. Еще раз спасибо!
  9. И? а по существу что то можете сказать? Ну если не знаете или не хотите говорить, ну прошел мимо и все! В чем проблема, то? Вы не поверите, с системой тактирования давно разобрался и не только с этим процом.
  10. Меня устроил бы любой АРМ Кортех, а этот пылился в коробке. Пока никаких симпатий-антипатий. В силу того что потребуется отладка на уровне ассемблера, хочется понять что же написано в документации. Но вот "забуксовал" чего то.
  11. Да с UART0 все работает. Маленький фолт был замечен при работе команды switch: выключить вообще все светодиоды возможно только после красного. А так все переключается
  12. Вкуривание документации и просмотр учебных видео мне не помогло. Помогите, что надо поправить в коде, чтобы задействовать UART1 на плате TI Tiva TM4C123? Вот код из учебника, который рассказывает иностранный дядечка. Первые две строчки я понял как расширить на пару портов, я вот дальше... Я хочу оставить UART0 для отладочных сообщений, тогда как UART1 работает с внешней аппаратурой. Даташит на плату вот: http://www.ti.com/general/docs/lit/getlite...mp;fileType=pdf #include <lm4f120h5qr.h> char readChar(void); void printChar(char c); void printString(char * string); int main(void) { char c; // 1. Enable the UART module using the RCGCUART register (see page 344). SYSCTL->RCGCUART |= (1<<0)|(1<<1); // 2. Enable the clock to the appropriate GPIO module via the RCGCGPIO register (see page 340). SYSCTL->RCGCGPIO |= (1<<0)|(1<<1); // 3. Set the GPIO AFSEL bits for the appropriate pins (see page 671 To determine which GPIOs to // configure see table 23-4 on page 1344 GPIOA->AFSEL = (1<<1)|(1<<0); // 4. Configure the GPIO current level and/or slew rate as specified for the mode selected (see // page 673 and page 681 // 5. Configure the PMCn fields in the GPIOPCTL register to assign the UART signals to the appropriate // pins (see page 688 and Table 23-5 on page 1351). GPIOA->PCTL = (1<<0)|(1<<4); GPIOA->DEN = (1<<0)|(1<<1); // Find the Baud-Rate Divisor // BRD = 16,000,000 / (16 * 9600) = 104.1666666666666666666666666666666 // UARTFBRD[DIVFRAC] = integer(0.166667 * 64 + 0.5) = 11 // With the BRD values in hand, the UART configuration is written to the module in the following order // 1. Disable the UART by clearing the UARTEN bit in UARTCTL register UART0->CTL &= ~(1<<0); // 2. Write the integer portion of the BRD to the UARTIBRD register UART0->IBRD = 104; // 3. Write the fractional portion of the BRD to the UARTFBRD register UART0->FBRD = 11; // 4. Write the desired serial parameters to the UARTLCTL register UART0->LCRH = (0x3<<5); // 5. Configure the UART clock source by written to the UARTCC register UART0->CC = 0x0; // 6. // 7. Enable the USRT by setting the UARTEN bit in the UARTCTL register UART0->CTL = (1<<0)|(1<<8)|(1<<9); //Configure LED pins SYSCTL->RCGCGPIO |= (1<<5); // enable clock on PortF GPIOF->DIR = (1<<1)|(1<<2)|(1<<3); //make LED pins (PF1 PF2 PF3) outputs GPIOF->DEN = (1<<1)|(1<<2)|(1<<3); // enable digitalfunctions for the LED pins GPIOF->DATA &= ~((1<<1)|(1<<2)|(1<<3)); // turn off leds while(1) { printString("Enter \"r\", \"g\", or \"b\":\n\r"); c = readChar(); printChar©; printString("\n\r"); switch© { case 'r': GPIOF->DATA = (1<<1); // red LED on break; case 'b': GPIOF->DATA = (1<<2); // blue LED on break; case 'g': GPIOF->DATA = (1<<3); // red LED on break; default: GPIOF->DATA &= ~(1<<1)|(1<<2)|(1<<3); // red LED on break; } } } char readChar(void){ char c; while((UART0->FR & (1<<4)) != 0); c = UART0->DR; return c; } void printChar(char c) { while((UART0->FR & (1<<5)) != 0); UART0->DR = c; } void printString(char * string) { while(*string) { printChar(*(string++)); } }
  13. Windows 7 64 + IAR Workbench 6.50 + MSP430G2 (2231) Порт в винде определяется, в настройках тип проца, FET Debugger, Port manually. Делаю - все пересобрать, и в режим отладки. Debug проекта открывается в состояниии Running сразу. И попытки остановить приводят лишь к зависанию. Попробовал с мигающим светодиодом, все тоже самое. Чего напортачил с настройкам, а сам найти не могу, опыта маловато. Поможете? При все при этом программа шьется. При сбросе питания светодиодики мыргают. Но при попытке отладки снова стопор. И при попытке остановить отладку - Could not shut down the debug session