Zdravím,
k mikroprocesoru mám prostřednictvím přepínače na piny RX a TX připojen převodník na USB (který bez problému funguje, tedy lze vysílaná data bez problému přijímat na PC) a převodník MAX232 pro komunikaci prostřednictvím seriového kanálu. A tu je právě problém. Pokud chci číst vysílaná data pomoci RS232, tak PC nic nepřijímá (zkoušeno na dvou PC, na každém v Hyperterminálu a v ZOCu). Zkoušel jsem výstup za MAXem zkontrolovat osciloskopem, který zobrazí číslicový průběh -10; 10 V, stejný signál je i na pinu 2 na konci propojovacího kabelu.
Vzhledem k tomu, že bez problému funguje přenos přes USB převodník, tak předpokládám, že nebude chyba na straně programu pro mikroprocesor. Osciloskop rovněž zobrazuje průběh za RS232 převodníkem, tudíž na HW chybu to rovněž nevypadá.
Byl bych docela rád za každou radu, protože opravdu netuším, kde může být problém.
Pro úplnost přikládám zdrojový kód a schéma zapojení MAXíka.
/*
* File: newmain.c
* Author: Martin
*
* Created on 23. kv?ten 2013, 11:43
*/
#include <stdio.h>
#include <stdlib.h>
#include <pic16f877a.h>
#include <xc.h>
#pragma config FOSC = HS // Oscillator Selection bits (HS oscillator: High-speed crystal/resonator on RA6/OSC2/CLKOUT and RA7/OSC1/CLKIN)
#pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT enabled)
#pragma config BOREN = OFF // Brown-out Detect Enable bit (BOD enabled)
#pragma config LVP = OFF // Low-Voltage Programming Enable bit (RB4/PGM pin has digital I/O function, HV on MCLR must be used for programming)
#pragma config CPD = OFF // Data EE Memory Code Protection bit (Data memory code protection off)
#pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)
int main(void)
{
SPBRG = 14;
TXSTA = 0x20;
RCSTA = 0x80;
unsigned int v0 = 48;
vysli:
TXREG = v0;
while(!TRMT);
v0++;
goto vysli;
return 0;
}