8051 Probleme mit UART Kommunikation

Gast #4408984
Hallo zusammen:

ich möchte einen AT89C5131 mit 12 MHz den FS20 Empfänger von ELV 
(FS20WUE)über UART verbinden. Die Kommunkation mit einem 
Terminalprogramm am PC funktioniert, wenn ich jedoch den gleichen Befehl 
vom Mikrocontroller per UART an den FS20WUE sende, erhalte ich vom 
FS20WUE keine Reaktion. Der FS20WUE hängt am seriellen Port P3.0/P3.1, 
parallel dazu ist ein MAX232 angeschlossen, mit dem ich die Daten am PC 
empfangen kann.

Hat jemand eine Idee, woran es liegen könnte?
1
#include <at89c5131.h>            
2

3
void Uart_Init(crystal_t systemCrysal)
4
{
5
    // init uart
6
    SCON |= 0x50;        // SM1 (2^6) = 1; REN (2^4) = 1;
7

8
//-------------------------------------------------
9
    // Timer2 init
10
    T2CON |= 0x30;    // TCLK (2^4) = 1; RCLK (2^5) = 1;
11
    TR2 = 1;          // Timmer2 run T2CON 2^2
12

13
    if(systemCrysal == _12MHz)
14
    {
15
        // Reloadwert fuer 12MHz Quarz
16
        RCAP2H = 0xFF;
17
        RCAP2L = 0xB2;
18
    }
19
    else if  (systemCrysal == _24MHz)
20
    {
21
        // Reloadwert fuer 24MHz Quarz
22
        RCAP2H = 0xFF;
23
        RCAP2L = 0x66;
24
    }
25
    else {}
26

27
//-------------------------------------------------
28
    TI = 1;        // SCON; Ermoeglicht das Benutzen von printf()
29
}
30

31
void serial_send(unsigned char dat){
32
  while(!TI);
33
  TI = 0;
34
  SBUF = dat;
35
}
36

37
  unsigned char serial_read(){
38
  while(!RI);
39
  RI = 0;
40
  return SBUF;
41
}
42

43

44

45
void main (void){
46
  
47

48
  Uart_Init (_12MHz);
49
  
50
  serial_send (0x02);
51
  serial_send (0x01);
52
  serial_send (0xF0);
53

54

55
  while(1){
56
    
57
    
58
    serial_read();
59
  P2_0 = RI;
60
  P2_1 = TI;
61

62
  }}
Ich kann immer nur dazu raten, sich anzusehen, was auf der 
Schnittstelle passiert. Embedded Firmware zu schreiben, ohne in der Lage 
zu sein, sich die elektrischen Signale, die man erzeugt, ansehen zu 
können, scheint mir so ähnlich zu sein, wie mit geschlossen Augen Regie 
bei Filmaufnahmen zu führen.

Statt Oszi würde evtl. sogar die Soundkarte genügen, wenn die Rx- und 
Tx-Signal weit genug herunter geteilt werden und z. B. mit Audacity 
dargestellt werden.
Gast
Peter D. schrieb:
> Matze schrieb:
>> parallel dazu ist ein MAX232 angeschlossen
>
> Den RXD-Ausgang des 232 darf man nicht mit einem anderen Ausgang
> parallel schalten!

Vielen Dank, das war der entscheidende Tipp :) Leider bin ich noch in 
keinem Besitz eines Oszis, das wäre wohl die nächste Anschaffung...

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 10 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.