pic cc5x rs232 problem

#928159
Lesenswert?

Hallo!

Ihr seid meine letzte Hoffnung. Ich habe hier im Internet ein 
Beispielprogramm gefunden um ein Zeichen vom PC zu empfangen und zum PC 
zu senden. Das Programm will aber irgendwie nicht.

1
// **************************************************************************************
2
// Programm:    Serial.c
3
// Funktion:    Misst einen Analogen Wert an Port AN2, wertet diesen Aus und sendet
4
//              ihn über das Serielle Port an den PC.
5
//
6
// Controller:  PIC16F690
7
// Konfig:      RA2 Analog Input
8
// **************************************************************************************
9
// Autor:       A. Riegebauer
10
// Datum:       20080709
11
// **************************************************************************************
12

13
#pragma config PWRTE = on, WDTE = off , FOSC = 4
14

15
// **************************************************************************************
16
// init: Initialisiert das USART Port und den A/D - Wandler
17
// **************************************************************************************
18

19
void init()
20
{
21
  // USART
22
  BRGH = 1;        // 9600 Baud @ 4 Mhz
23
  SPBRG = 25;
24
  SYNC = 0;
25

26
  SPEN = 1;        // Serielles Port Einschalten
27
  CREN = 1;        // Continious Receive Einschalten
28

29
  TXEN = 1;        // Transmit einschalten
30
} //init
31

32
// **************************************************************************************
33
// pause: Pause in ms
34
// **************************************************************************************
35

36
void pause(uns16 ms)
37
{
38
  while(ms)        // Schleife wird verlassen wenn ms Null ist
39
  {
40
    OPTION = 2;      // Vorteiler auf 8 einstellen
41
    TMR0 = 131;  
42
    while (TMR0);    // Abwarten einer Millisekunde
43
    ms--;        // ms mit jeser Millisekunde verringern
44
  }
45
}
46

47
// **************************************************************************************
48
// send_char: Unterprogramm zum senden eines Zeichens
49
// **************************************************************************************
50

51
void RS232_send(char z)
52
{
53
  while (!TXIF);      // warten bis Senderegister frei ist
54
  TXREG = z;
55
}
56

57
// **************************************************************************************
58
// main: Hauptprogrammm. 
59
// **************************************************************************************
60

61
void main()
62
{
63
  char kommand;
64
  init();
65

66
  while (1) {        // Endlosschleife
67

68
    if (RCIF)
69
    {
70
      kommand = RCREG;
71
      kommand++;
72
      RS232_send(kommand);  
73
    }
74
//    RS232_send('X');
75
  } //while
76
} //main


Wenn ich das Programm umschreibe und nur sende kommen die Zeichen auch 
am PC an. Aber wenn ich ein Zeichen empfangen möchte, es ändern und 
wieder zurücksenden dann passiert nichts.

Mein Oszi zeigt an das was am RX ankommt aber das anscheinend nicht 
ausgewertet wird.

Standardmäsig ist das Port B am PIC 16F690 auf Eingang geschaltet. Habe 
auch schon TRISB = 0b01110000; versucht aber ohne Erfolg.

Ich weiß nicht woran es noch liegen kann.

Danke euch schon mal
Andreas

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren