Перейти к содержанию
    

french

Участник
  • Постов

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

  • Посещение

Репутация

0 Обычный

Информация о french

  • Звание
    Участник
    Участник

Контакты

  • ICQ
    Array
  1. Оба автора оказались правы. обоим респект и спасибо. Заработало когда переменную _val сделал volatile. очевидно компилятор ее игнорировал, хотя оптимизация отключена. Без volatile значения USART1->SR и sr отличались. Теперь все ок, НО... Когда приходит новый байт и срабатывает прерывание бит USART_SR_RXNE=0 хотя отладчик заходит в блок[code_box]if(USART1->SR & USART_SR_RXNE)[/code_box] и USART1->DR считывается нормально. Вообщем все работает но как-то не так красиво как хотелось бы. Где-то есть косяк. Заметил еще один прикол Объясните кто понимает, а то я устал. Может отладчик надо как-то тоже настроить ???
  2. спс. посмотрю позже (сейчас на работе). помоему остальные флаги были сброшены. но проблема еще в том, что отладчик заходит в блок, даже когда USART_SR_RXNE=0 !!!!! Мистика if(USART1->SR & USART_SR_RXNE) { _val=USART1->DR; }
  3. STM32 UART траблы новичка

    Всем привет Тока начинаю разбираться с STM32, поэтому поднимаю заезженную тему uart. stm32vldiscovery (там stm32f100rbt6b) + IAR 6.21 + STM32F10x_StdPeriph_Lib_V3.5.0 набросал простой пример, ничего лишнего, код ниже Начал отлаживать через ST-Link и сразу проблемы - после включения уарта непрерывно попадаю в обработчик, даже если порт висит голый или к нему подкючен терминал, пофиг. посылаю не посылаю данные, а в UDR ниче не приходит, причем иногда заходит в ветку даже если RXNE=0. Ощущение, что неправильно настроена среда IAR. помгите кому не лень -> вот весь проект 1.rar Спасибо заранее #include "stm32f10x.h" // ############################################################### u16 temp=0xAA; /* Private typedef -----------------------------------------------------------*/ GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; NVIC_InitTypeDef NVIC_InitStructure; // ############################################################### // i n t e r r u p t s // ############################################################### void USART1_IRQHandler (void) { u32 _val=0xAA; if(USART1->SR & USART_SR_RXNE) { _val=USART1->DR; } } void ComPortInit(void) { RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO | RCC_APB2Periph_USART1, ENABLE); // Tx on PA9 as alternate function push-pull GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_Init(GPIOA, &GPIO_InitStructure); // Rx on PA10 as input floating GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIOA, &GPIO_InitStructure); USART_InitStructure.USART_BaudRate = 9600; USART_InitStructure.USART_WordLength = USART_WordLength_8b; USART_InitStructure.USART_StopBits = USART_StopBits_1; USART_InitStructure.USART_Parity = USART_Parity_No; USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None; USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx; USART_Init(USART1, &USART_InitStructure); NVIC_SetVectorTable( NVIC_VectTab_FLASH, 0x08000000 ); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); // Ðàçðåøàåì ïðåðûâàíèÿ ïî ïðèåìó USART_ITConfig(USART1, USART_IT_RXNE, ENABLE); // USART_ITConfig(USART1, USART_IT_TXE, ENABLE); USART_Cmd(USART1, ENABLE); } // ############################################################### int main(void) { ComPortInit(); // USART1->DR = 0xAA; while (1); }
  4. Попробую, но думаю дело не в этом. Скорее всего модуль отправляет в СМС на каждый символ 2 байта. Мне надо это отключить,т.к. я использую латиницу. А как не знаю. Еще вопрос, а можно как-то (или модуль сам) разделить длинное СМС на несколько, но чтобы пользователю приходило одно уже сшитое СМС. П.С. CADiLO смотри личку.
  5. День добрый всем Проблема - не могу отправить СМС длиннее 69 символов. В ответ "ERROR" Модуль SIM900D, SIM900. Текст латиницей, AT+CMGF=1, AT+CSCS="GSM". Пробовал на Киевстар и Лайф. Короткие отправляются. На SIM300DZ раньше работало. Ответ типа разбить на несколько СМС пока не устраивает. Подскажите кто знает.
  6. попробую. думаю что можно найти много косвенных способов, но хотелось бы средствами самого модема, чтобы побыстрее, тем более есть вероятность что, другой сервер может и сутки лежать. кстати - а как сделать пинг (SIM900) ??? можно просто через CIPSTART подключиться куда-то, но для этого надо закрывать сервер. спасибо за ответ
  7. Если тема была, ткните :) Проблема: Модуль SIM900+GPRS. AT+CISERVER=1,port //Создаю сервер для ожидания входящих: AT+CIPSTATUS //проверяю состояние STATUS: SERVER LISTENING REMOTE IP: xxx.xxx.xxx.xxx //иногда подключается клиент происходит обмен данными CLOSED //через время клиент закрывает соединение все работает отлично, часами не глючит, но иногда к серверу невозможно подключиться, а он показывает STATUS: SERVER LISTENING - типа все нормально, AT+CIFSR - айпишник не меняется. делал AT+CIPCLOSE - думал может остаются незакрытые соединения делал переподключение сервера, менял операторов, толку 0. спасает только CIPSHUT. Может оператор отключает, может модуль глючит. Вопрос - как выявить, что модуль перестал нормально работать.
  8. я думаю тему можно закрыть. спасибо всем, кто отозвался
  9. да так работает корректно ! автору респект ! но блин, для вывода в порт я всегда писал в PORT, и все работало. цитата даташита: Reads from the Output Latch register (LATx), read the latch. Writes to the latch, write the latch. Reads from the port (PORTx), read the port pins, while writes to the port pins, write the latch. <-- я думал это тоже, что писать в LATCH.
  10. люди помогите !!! пол дня потратил, все волосы вырвал а толку 0. впервые взял 16-битку pic24fj128gb106. теперь никак не могу ее настроить. что есть: mplab + C30 + pickit2 + pic24fj128gb106 есть биты RG6, RG7, RG8, RG9. в начале настроил на вывод, потом выставляю на них еденицы. PORTGbits.RG6 = 1; PORTGbits.RG7 = 1; PORTGbits.RG8 = 1; PORTGbits.RG9 = 1; в отладчике MPLAB SIM все ок. PORTG = 00000011 11000000. а когда смотрю отладчиком PicKit2 то ведет себя по разному. если смотреть пошагово, то все ок, биты ставятся в 1. но если поставить точку останова на while(1); то PORTG = 00000010 10000000 ???? возможно я не отключил какую-то периферию. перерыл весь даташит, вроде все выключено. догадвыюсь что все очень просто. помогите, хелп, не вижу где я туплю. вот код: #include "p24fxxxx.h" _CONFIG2( IESO_OFF & PLLDIV_NODIV & FNOSC_FRC & FCKSM_CSECME & OSCIOFNC_OFF & POSCMOD_HS); _CONFIG1( JTAGEN_OFF & GCP_OFF & GWRP_OFF & BKBUG_OFF & COE_OFF & ICS_PGx1 & FWDTEN_OFF & WINDIS_OFF); int main() { ClrWdt(); AD1PCFG=0xFFFF; // dis analog input TRISG = 0b0000111111; ODCG = 0b0000000000; // comparator disable CVRCON = 0; CM1CON = 0b0000000000010011; CM2CON = 0b0000000000010011; CM3CON = 0b0000000000010011; PORTGbits.RG6 = 1; PORTGbits.RG7 = 1; PORTGbits.RG8 = 1; PORTGbits.RG9 = 1; while(1); return 0; }
  11. Вроде интересная тема, но не нашла поддержки. :laughing: Значит либо мои варианты были верными, либо HARMHARMа. А может вообще нет однозначного ответа. HARMHARMу однозначо + Думаю тема закрыта.
  12. Согласен. Вариант интересный, и контакты на 6А. Немного смущает длина - 28мм.
  13. Привет форумчанам! Ищу малогабаритное реле с одной группой контаков (1C): напряжение котушки - 12V параметры контаков - 220V, 3A Группа контактов - желательно 1С Раньше использовал JV-12, но теперь его трудно достать. Нашел аналог, но тоже не доступен. http://www.hongfa.com/pro/HF32FA_en.html Может есть какие-то ходовые, популярные ? Например NT73. Но оно не устраивает при разводке платы.
×
×
  • Создать...