Jump to content

Main_18

Members
  • Content Count

    9
  • Joined

  • Last visited

Everything posted by Main_18

  1. Спасибо за ответ. Буду обращаться туда, где покупал. Хотя уже надежды немного, т.к. сабж снят с производства 6 лет назад.
  2. Собственно долго и пока безрезультатно ищу схему на сабж. Может кому встречалась.
  3. Main_18

    USART PIC18F25K22

    согласен. там просто всякого дерьма висит... и дисплей и sd катра и юсб и внешняя eeprom. видимо я вчера ночью просто устал)
  4. Main_18

    USART PIC18F25K22

    Оно. как я мог про него забыть. Спасибо милый человек.
  5. Main_18

    USART PIC18F25K22

    пардон. только на передачу вот usart2 void USART_Init(long baud_rate) { float temp; TRISB6=0; /* Make Tx pin as output*/ TRISB7=1; /* Make Rx pin as input*/ /* Baud rate=9600, SPBRG = (F_CPU /(64*9600))-1*/ temp= (( (float) (F_CPU) / (float) baud_rate ) - 1); SP2BRG = (int) temp; TX2STA = 0x20; /* Enable Transmit(TX) */ RC2STA = 0xB0; /* Enable Receive(RX) & Serial */ } unsigned char USART_ReceiveChar() { while(PIR3bits.RC2IF==0); return RC2REG; } байт принимается вот usart1 void USART_Init(long baud_rate) { float temp; TRISC6=0; /* Make Tx pin as output*/ TRISC7=1; /* Make Rx pin as input*/ /* Baud rate=9600, SPBRG = (F_CPU /(64*9600))-1*/ temp= (( (float) (F_CPU) / (float) baud_rate ) - 1); SP1BRG = (int) temp; TX1STA = 0x20; /* Enable Transmit(TX) */ RC1STA = 0xB0; /* Enable Receive(RX) & Serial */ } void USART_TransmitChar (unsigned char out) { while(PIR1bits.TX1IF==0); TX1REG = out; } unsigned char USART_ReceiveChar() { while(PIR1bits.RC1IF==0); return RC1REG; } байт передается, приема нет делал и так, разницы нет void USART_Init(long baud_rate) { float temp; TRISC6=0; /* Make Tx pin as output*/ TRISC7=1; /* Make Rx pin as input*/ /* Baud rate=9600, SPBRG = (F_CPU /(64*9600))-1*/ temp= (( (float) (F_CPU) / (float) baud_rate ) - 1); SPBRG = (int) temp; TXSTA = 0x20; /* Enable Transmit(TX) */ RCSTA = 0xB0; /* Enable Receive(RX) & Serial */ } unsigned char USART_ReceiveChar() { while(PIR1bits.RCIF==0); return RCREG; } скорости ставил от 9600 и выше, прогресса пока нет(
  6. Main_18

    USART PIC18F25K22

    соединен 18F2550 с 18F25K22 читал так unsigned char USART_ReceiveChar() { // while(PIR1bits.RC1IF==0); return RC1REG; } и так unsigned char USART_ReceiveChar() { while(PIR1bits.RC1IF==0); if(RC1STAbits.OERR) { RC1STAbits.CREN = 0; NOP(); RC1STAbits.CREN=1; } return(RC1REG); } В том то и дело, что беру этот же код, меняю TRISC7, TRISC6 на TRISB7, TRISB6 SP1BRG, TX1STA, RC1STA на соответственно SP2BRG, TX2STA и RC2STA перекидываю провода на uart2 все прекрасно читается в RC2REG есть принятый байт видел заметки по поводу проблем с уартом у этого чипа на максимальной частоте 64МГц, пойду почитаю что там пишут.
  7. Main_18

    USART PIC18F25K22

    читал. за вчера столько инициализаций на писал что всех не упомню. конкретно эта работает (проверено на многих пиках за все время) и на этом я выше писал, что usart 2 работает и на прием и на передачу, usart 1 работает на прием, в терминале байты целые. уверен, скорость здесь ни при чем
  8. Main_18

    USART PIC18F25K22

    опечатка. в коде все хорошо. TRISC6 = 0, TRISC7 = 1. В даташите написано вообще настраивать оба пина на вход, модуль сам при приеме и передаче настраивает пины. Результата это не дало естественно. ни один флаг RCxIF не выпадает при попытке приема первым уартом ( вчера уже проверил все, даже те, которые к uart1 не относятся RCIF, RC1IF, RCIF1 при приеме uart 2 RC2IF как положено становится 1 вот это вот обидно было, как будто в оба глаза наплевали.
  9. Main_18

    USART PIC18F25K22

    Доброго времени суток всем. Выручайте, у меня уже едет крыша. Не могу прочитать uart 1 на pic18f25k22 работает только отправка данных. uart 2 работает нормально и на отправку данных и на чтение. Инициализация обычная void USART_Init(long baud_rate) { TRISCbits.TRISC6 = 1; TRISCbits.TRISC7 = 0; float temp; temp=(( (float) (F_CPU) / (float) baud_rate) - 1); SP1BRG = (int) temp; /* Baud rate=9600 SPBRG=(F_CPU /(64*9600))-1*/ TX1STA = 0x20; /* TX enable; */ RC1STA = 0xB0; /* RX enable and serial port enable*/ } RC1REG всегда 0x00 если пытаюсь читать посылку. отправка работает нормально, если положить байт в TX1REG все отправляется. беру usart 2 на этом же чипе void USART_Init(long baud_rate) { TRISBbits.TRISB7 = 1; TRISBbits.TRISB6 = 0; float temp; temp=(( (float) (F_CPU) / (float) baud_rate) - 1); SP2BRG = (int) temp; /* Baud rate=9600 SPBRG=(F_CPU /(64*9600))-1*/ TX2STA = 0x20; /* TX enable; */ RC2STA = 0xB0; /* RX enable and serial port enable*/ } все прекрасно работает и на чтение и на запись. Мистика. Пробовал через прерывания и без них, usart 2 работает без нареканий, usart 1 только на передачу. соединил два 18F2550 по уарту, все прекрасно один пишет, второй читает. Что не так с 18F25K22 кто подскажет?
×
×
  • Create New...