pic cc5x rs232 problem

OP #928159
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
(Firma: Ucore Fotografie www.ucore.de) Persönliche Seite
Füge mal in deiner init() noch den Befehl:

ANSELH = 0;

ein.
Der deaktiviert die analog-input-Funktion des RX-Pins. Und natürlich 
weiterhin im TRISB-Register den entsprechenden Pin auf Output schalten.

Sollte dann funktionieren.

Schöne Grüße,
Alex

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.