ftp27

Members
  • Публикации

    33
  • Зарегистрирован

  • Посещение

Репутация

-2 Плохой

О ftp27

  • Звание
    Новенький

Информация

  • Пол
    Мужчина

Электроника

  • Стаж в электронике
    Не связан с электроникой
  1. Stm8L И Uart

    Решение: настройка резонатора CLK_CKDIVR = 0; CLK_ICKCR_bit.HSION = 1; BBR USART1_BRR2 = 0x03; USART1_BRR1 = 0x68; Пиздатые тут у вас помошники....
  2. Stm8L И Uart

    Да. Ошибка была моя. Не настроил проект для прошивки по ST-Link. Но возникла другая трабла. Если верить длине бита взятых с осциллографа и формуле подсчета BRR из даташита (Скорость = Генератор/BBR), то частота тактирования USART - 32Мгц, что просто не может быть (16Мгц же). К тому же в пакете не отсылается последний бит. При передаче передается 7 бит вместо 8.
  3. Пытаюсь завести UART на сабжевом микроконтроллере. В принципе таки все есть, но UART упорно молчит при передаче и не выходит на прерывание при приеме. Чутье подсказывает, что я просто напросто не так подал тактирование на модуль USART, но уже раз 10 все перепроверил. Все именно так. Вот код: #include "iostm8l152c6.h" int main ( void ) { PC_DDR_bit.DDR3 = 1; PC_CR1_bit.C13 = 1; PC_CR2_bit.C23 = 0; PC_DDR_bit.DDR2 = 0; PC_CR1_bit.C12 = 1; PC_CR2_bit.C22 = 1; //UART init CLK_PCKENR1_bit.PCKEN15 = 1; USART1_CR1 = 0; USART1_CR3 = 0; USART1_CR4 = 0; USART1_CR5 = 0; USART1_BRR2 = 0x03; USART1_BRR1 = 0x68; USART1_CR2_bit.RIEN = 1; USART1_CR2_bit.REN = 1; USART1_CR2_bit.TEN = 1; asm("RIM"); while (1) { //Loop while(!(USART1_SR_bit.TC)); USART1_DR = '!'; } return 0; } #pragma vector=USART_R_OR_vector __interrupt void USART_RXNE(void) { while(!(USART1_SR_bit.TC)); USART1_DR = '?'; } По поводу железа... Передачу (TX со стороны STM) я жду на лапе PC3, а прием (RX) на PC2
  4. Купил на ebay измеритель артериального давления. Решил каким то образом вести журналирование всех данных на телефоне. Разобрал его, потыкал полоску с контактами. Определил что и для чего почти все контакты, но одно у меня вызывает вопрос. Пин с которого идет сигнал во время работы устройства. Дорожка ведет прямо к "капельке" так что, модель MPU сказать не могу. Но могу показать данные с осциллографа И сигнал такого рода повторяется на весь период работы. Длина бита - 100us, что близко к частоте 9600. На такую частоту я и настроил UART, для того чтобы снять данные. Получилось вот такое: 00000000: fe 00 78 fe 00 7d fe 00 81 fe 00 84 fe 00 86 fe 00000010: 00 88 fe 00 89 fe 00 89 fe 00 88 fe 00 87 fe 00 00000020: 87 fe 01 86 fe 00 85 fe 01 85 fe 01 86 fe 01 85 00000030: fe 01 84 fe 01 81 fe 01 80 fe 01 80 fe 01 7e fe 00000040: 01 7d fe 01 7c fe 01 7b fe 01 7b fe 01 7c fe 01 00000050: 7b fe 01 7a fe 01 7a fe 01 7a fe 01 79 fe 01 78 00000060: fe 01 78 fe 01 77 fe 01 77 fe 01 76 fe 01 75 fe 00000070: 01 75 fe 01 75 fe 01 74 fe 01 73 fe 01 73 fe 01 00000080: 72 fe 01 72 fe 01 72 fe 01 72 fe 01 71 fe 01 71 00000090: fe 01 73 fe 01 74 fe 01 75 fe 01 77 fe 01 78 fe 000000a0: 01 78 fe 02 78 fe 02 78 fe 02 78 fe 02 77 fe 02 000000b0: 76 fe 02 75 fe 02 75 fe 02 76 fe 02 78 fe 02 78 000000c0: fe 02 78 fe 02 79 fe 02 79 fe 02 79 fe 02 79 fe 000000d0: 02 79 fe 02 79 fe 02 78 fe 02 76 fe 02 75 fe 02 000000e0: 75 fe 02 75 fe 02 76 fe 02 76 fe 02 76 fe 02 76 000000f0: fe 02 76 fe 02 76 fe 02 77 fe 02 76 fe 02 76 fe 00000100: 02 77 fe 03 77 fe 02 78 fe 02 77 fe 03 77 fe 03 00000110: 76 fe 03 76 fe 03 76 fe 03 75 fe 03 75 fe 03 74 00000120: fe 03 74 fe 03 74 fe 03 74 fe 03 74 fe 03 74 fe 00000130: 03 74 fe 03 74 fe 03 74 fe 03 74 fe 03 75 fe 03 00000140: 75 fe 03 75 fe 03 76 fe 03 76 fe 03 75 fe 03 74 00000150: fe 03 73 fe 03 72 fe 03 73 fe 03 74 fe 03 74 fe 00000160: 03 74 fe 03 73 fe 03 73 fe 04 73 fe 04 73 fe 04 00000170: 73 fe 04 73 fe 04 74 fe 04 75 fe 04 75 fe 04 75 00000180: fe 04 75 fe 04 74 fe 04 73 fe 04 73 fe 04 73 fe 00000190: 04 72 fe 04 72 fe 04 72 fe 04 72 fe 04 72 fe 04 000001a0: 73 fe 04 74 fe 04 74 fe 04 74 fe 04 73 fe 04 72 000001b0: fe 04 71 fe 04 71 fe 04 72 fe 04 71 fe 04 71 fe 000001c0: 04 72 fe 04 72 fe 04 72 fe 04 72 fe 04 72 fe 04 000001d0: 72 fe 04 73 fe 04 73 fe 04 74 fe 04 73 fe 04 71 000001e0: fe 04 71 fe 04 71 fe 04 70 fe 04 71 fe 04 72 fe 000001f0: 04 73 fe 04 73 fe 04 72 fe 04 72 fe 04 71 fe 04 00000200: 71 fe 04 70 fe 04 71 fe 04 71 fe 05 70 fe 04 70 00000210: fe 05 6f fe 05 70 fe 05 71 fe 05 72 fe 05 73 fe 00000220: 05 72 fe 05 73 fe 05 74 fe 05 74 fe 05 75 fe 05 00000230: 75 fe 05 76 fe 05 76 fe 05 76 fe 05 78 fe 05 79 00000240: fe 05 79 fe 05 79 fe 05 79 fe 05 79 fe 05 79 fe 00000250: 05 78 fe 05 77 fe 05 76 fe 05 76 fe 05 75 fe 05 00000260: 75 fe 05 76 fe 05 76 fe 06 77 fe 06 77 fe 05 77 00000270: fe 06 76 fe 06 75 fe 06 75 fe 06 75 fe 06 76 fe 00000280: 06 77 fe 06 77 fe 06 77 fe 06 78 fe 06 78 fe 06 00000290: 78 fe 06 77 fe 06 76 fe 06 77 fe 06 77 fe 06 77 000002a0: fe 06 78 fe 06 78 fe 06 77 fe 06 78 fe 06 77 fe 000002b0: 06 77 fe 06 77 fe 07 76 fe 07 76 fe 07 77 fe 07 000002c0: 77 fe 07 76 fe 07 76 fe 07 76 fe 07 76 fe 07 76 000002d0: fe 07 75 fe 07 76 fe 07 76 fe 07 76 fe 07 77 fe 000002e0: 07 77 fe 07 77 fe 07 77 fe 07 76 fe 07 76 fe 07 000002f0: 75 fe 07 74 fe 07 73 fe 07 72 fe 07 73 fe 07 74 00000300: fe 07 75 33 0f 0f 0f 01 01 0c 00 0d 85 33 0f 0f 00000310: 0f 01 01 0c 00 0d 85 33 0f 0f 0f 01 01 0c 00 0d 00000320: 85 33 0f 0f 0f 01 01 0c 00 0d 85 33 0f 0f 0f 01 00000330: 01 0c 00 0d 85 33 0f 0f 0f 01 01 0c 00 0d 85 33 00000340: 0f 0f 0f 01 01 0c 00 0d 85 33 0f 0f 0f 01 01 0c 00000350: 00 0d 85 Если взять по слову (2 байта) после каждой 0xFE, то получиться ровно 256 значений. И по значениям выходит такой вот график: Возможно я не правильно снимаю данные, но что это может быть?
  5. Схемы Простейших Жучков На Транзисторе Кт315

    Использовал предоставленную схему. Вместо КТ315 у меня SMD аналог BC846. Подключаю кабелем к выходу звуковой карты ПК. Подстроечники: 4.2pF/20pF. В Самом начале припаял метровый проводок к завитушке(на всякий случай). Проверяю с помощью радио на андроиде. Уже обкрутился и частотами на радио и на обеими подстроечниками. Толку нет. Схемы и разводка: Вообще не особо понимаю как должно все это работать... Я ведь должен видеть на осциллограмме какой то сигнал на антенне. А там просто 3В и все. p.s. спаяно все верно. Плата вышла на редкость хорошая
  6. Stm32L И Подключение По Usb

    Уже целую неделю бесполезно бьюсь и не могу никак завести USB на сабжевом микроконтроллере. Имею плату STM32L-discovery. Проект собираю майкфайликом(Makefile), и зашиваю с помощью OpenOCD. Правильность сборки и прошивки проверял, прошивал прогой для моргания светодиодами на плате. Тестовая прошивка взята с офф сайта, называется Custom HID. Теоретически, она предназначена для плат Evaluation, но единственное чем моя плата от них отличается в этом случае, это другой обвязкой кнопок и светодиодов, а следовательно при правильном выборе микроконтроллера, все должно было бы работать. Но как бы не так, при подключении к компу dmesg говорит такое: [ 5469.867764] usb 2-1.8: new full-speed USB device number 4 using ehci-pci [ 5469.939557] usb 2-1.8: device descriptor read/64, error -32 [ 5470.115057] usb 2-1.8: device descriptor read/64, error -32 [ 5470.290553] usb 2-1.8: new full-speed USB device number 5 using ehci-pci [ 5470.362348] usb 2-1.8: device descriptor read/64, error -32 [ 5470.537846] usb 2-1.8: device descriptor read/64, error -32 [ 5470.713342] usb 2-1.8: new full-speed USB device number 6 using ehci-pci [ 5471.120008] usb 2-1.8: device not accepting address 6, error -32 [ 5471.191967] usb 2-1.8: new full-speed USB device number 7 using ehci-pci [ 5471.598636] usb 2-1.8: device not accepting address 7, error -32 [ 5471.598808] hub 2-1:1.0: unable to enumerate USB device on port 8 Подключаю провода к Data+ и Data- к PA11 и PA12, питание к Ext_5V, а землю к GND. Перед подключением USB, вырубаю STlink (программатор на плате) Долго перелопачивал код примера, подстраивал по свои два светодиода на плате, убирал лишние куски кода для других МК, но это тоже не помогло. Потом наткнулся на эту тему http://myrobot.ru/fo...rum=3&topic=501 Товарищ выкладывал готовую собранную прошивку именно под эту плату. Так таковой, ожидается, что все должно работать, но нет. Выдает тот же мусор и все. Менял местами Data+ и Data-: [ 5961.502235] hub 2-1:1.0: unable to enumerate USB device on port 8 [ 5973.926501] usb 2-1.8: new low-speed USB device number 9 using ehci-pci [ 5973.998295] usb 2-1.8: device descriptor read/64, error -32 [ 5974.173789] usb 2-1.8: device descriptor read/64, error -32 [ 5974.349287] usb 2-1.8: new low-speed USB device number 10 using ehci-pci [ 5974.421080] usb 2-1.8: device descriptor read/64, error -32 [ 5974.596459] usb 2-1.8: device descriptor read/64, error -32 [ 5974.772078] usb 2-1.8: new low-speed USB device number 11 using ehci-pci [ 5975.178709] usb 2-1.8: device not accepting address 11, error -32 [ 5975.250706] usb 2-1.8: new low-speed USB device number 12 using ehci-pci [ 5975.657370] usb 2-1.8: device not accepting address 12, error -32 [ 5975.657551] hub 2-1:1.0: unable to enumerate USB device on port 8 Это порядком уже удручает... Может есть кто либо с опытом работы с USB в STM32L?
  7. микроконтроллер припаян юартом к модулю. Проводок передачи от микроконтроллера идет к COM-порту компа. Смотрю через PuTTY UDP: Опять начал мусором кошмарить
  8. Процедуру __interrupt убрал? А смысл, если прерывания так таковой выключены. К тому же я сейчас вернул таймер и с ним тоже без ошибок шлется Самое удивительное, что он транслитит сообщение на кириллицу иногда
  9. Сейчас тыкал, перетыкал проводки от первого ко второму юарту. Ошибка исчезла. Хотя я только поменял прошивку для того чтобы обойтись без прерываний при отправке (а GIE оставил!!)
  10. Пробовал 9600. Та же фигня. Но желательно именно 115200
  11. Требуеться отсылать данные по UART-у с большой точностью, делаю как по примеру. Схема аналогична примеру //****************************************************************************** // MSP430x47xx Demo - USCI_A0, 115200 UART Echo ISR, DCO SMCLK // // Description: Echo a received character, RX ISR used. Normal mode is LPM0. // USCI_A0 RX interrupt triggers TX Echo. // Baud rate divider with 1048576hz = 1048576/115200 = ~9.1 (009h|01h) // ACLK = LFXT1 = 32768Hz, MCLK = SMCLK = default DCO = 32 x ACLK = 1048576Hz // //* An external watch crystal between XIN & XOUT is required for ACLK *// // // MSP430x47xx // ----------------- // /|\| XIN|- // | | | 32kHz // --|RST XOUT|- // | | // | P2.4/UCA0TXD|------------> // | | 115200 - 8N1 // | P2.5/UCA0RXD|<------------ // // P. Thanigai / K.Venkat // Texas Instruments Inc. // November 2007 // Built with CCE Version: 3.2.0 and IAR Embedded Workbench Version: 3.42A //****************************************************************************** #include "msp430x47x4.h" void main(void) { volatile unsigned int i; WDTCTL = WDTPW+WDTHOLD; // Stop WDT FLL_CTL0 |= XCAP14PF; // Configure load caps do { IFG1 &= ~OFIFG; // Clear OSCFault flag for (i = 0x47FF; i > 0; i--); // Time for flag to set } while ((IFG1 & OFIFG)); // OSCFault flag still set? P2SEL |= BIT4+BIT5; // P2.4,5 = USCI_A0 RXD/TXD UCA0CTL1 |= UCSSEL_2; // SMCLK UCA0BR0 = 0x09; // 1MHz 115200 UCA0BR1 = 0x00; // 1MHz 115200 UCA0MCTL = 0x02; // Modulation UCA0CTL1 &= ~UCSWRST; // **Initialize USCI state machine** IE2 |= UCA0RXIE; // Enable USCI_A0 RX interrupt _BIS_SR(LPM0_bits + GIE); // Enter LPM0, interrupts enabled } // Echo back RXed character, confirm TX buffer is ready first #pragma vector=USCIAB0RX_VECTOR __interrupt void USCIA0RX_ISR (void) { while(!(IFG2&UCA0TXIFG)); UCA0TXBUF = UCA0RXBUF; // TX -> RXed character } #include "msp430x47x4.h" #include "main.h" extern char Hello_World[] = {"Hello, World!\n\r"}; //Current RSSI as ASCII. void main(void) { WDTCTL = WDTPW+WDTHOLD; // Stop WDT // ================[ Crystal Oscillator ]=============== FLL_CTL0 |= XCAP14PF; // Configure load caps do { IFG1 &= ~OFIFG; // Clear OSCFault flag for (i = 0x47FF; i > 0; i--); // Time for flag to set } while ((IFG1 & OFIFG)); // OSCFault flag still set? // ===================================================== // ====================[ UART config ]================== //UART1: P4SEL |= BIT0+BIT1; UCA1CTL1 |= UCSSEL_2; UCA1BR0 = 0x09; UCA1BR1 = 0x00; UCA1MCTL = 0x02; UCA1CTL1 &= ~UCSWRST; // UC1IE |= UCA1RXIE; // ===================================================== CCTL0 = CCIE; // CCR0 interrupt enabled TimerChacker = 0; TACCR0 = 62500 - 1; TACTL = TASSEL_2 + ID_3 + MC_1 + TACLR; // SMCLK, up mode _BIS_SR(LPM0_bits + GIE); // Enter LPM3 } // =============== [ Timer actions ] ================== #pragma vector=TIMERA0_VECTOR __interrupt void Timer_A (void) { if (++TimerChacker == 3) { sendToWizFi(Hello_World); TimerChacker = 0; } } // ===================================================== int getLength(unsigned char mess[]){ int j; for (j=0; j<MAX_BUFF; j++){ if ((mess[j] == '\r')) break; } return j; } void sendToUART(unsigned char mess[]){ int maxLen = getLength(mess); for (int j=0; j<=maxLen; j++){ while(!(UC1IFG&UCA1TXIFG)); UCA1TXBUF = mess[j]; } } Что странно, первые пару секунд все без ошибок, а потом начинается этот адок
  12. В результате долгих подборов, все же было выявлено необходимое кол-во сегментов которые должны были бы быть задействованы в проекте. С этим набором ничего не мерцает. Поэтому было решено так это и оставить
  13. Вот уж не знаю. Вот COM3 (желтый) и COM2(Синий).
  14. Припаял электролит на 10uF на ногу LCDCAP микроконтроллера. Получил такую штуку Видно что сразу стало получше. Но дисплей все еще каловратит
  15. Попробовал цепануть осциллографом COM0. Увидел там такое Это уже совсем не нормально выглядит о_О