Forum: Mikrocontroller und Digitale Elektronik UART mit SiLabs F330


von Mr Bean (Gast)


Lesenswert?

Hallo

Ich probiere gerade wieder etwas mit dem F330 von SiLabs rum. Ich habe 
den ToolStick.
Ich möchte eigentlich nur einen String  (HelloWorld!) :-) über das UART 
an meinen PC senden. Habt ihr mir einen Tipp was noch nicht stimmt?
Hier mal mein Code den ich bis jetzt hab:
1
//-----------------------------------------------------------------------------
2
// Includes
3
//-----------------------------------------------------------------------------
4
#include <c8051f330.h> // SFR declarations
5
#include <stdio.h>
6
7
8
//-----------------------------------------------------------------------------
9
// Global CONSTANTS
10
//-----------------------------------------------------------------------------
11
#define SYSCLK 24500000           // SYSCLK frequency in Hz
12
#define BAUDRATE 9600             // Baud rate of UART in bps
13
14
//-----------------------------------------------------------------------------
15
// Function PROTOTYPES
16
//-----------------------------------------------------------------------------
17
void SYSCLK_Init (void);
18
void PORT_Init (void);
19
void UART0_Init (void);
20
21
//-----------------------------------------------------------------------------
22
// Global VARIABLES
23
//-----------------------------------------------------------------------------
24
25
26
27
//-----------------------------------------------------------------------------
28
// MAIN Routine
29
//-----------------------------------------------------------------------------
30
31
void main (void)
32
{
33
  char input_char;
34
35
  //WDTCN = 0xde;           // disable watchdog timer
36
  //WDTCN = 0xad;
37
  
38
  SYSCLK_Init ();           // initialize oscillator
39
  PORT_Init ();             // initialize crossbar and GPIO
40
  UART0_Init ();             // initialize UART0
41
  
42
  //transmit example
43
44
  printf ("Hello World!\n");
45
46
  
47
  while (1) 
48
  {
49
    input_char = getchar();
50
    printf("`%c`, 0x%02x\n",(unsigned char)input_char, (unsigned) input_char);
51
    
52
  }
53
}
54
55
56
//-----------------------------------------------------------------------------
57
// SYSCLK_Init
58
//-----------------------------------------------------------------------------
59
//
60
// This routine initializes the system clock to use an 24.5MHz crystal
61
// as its clock source.
62
//
63
64
void SYSCLK_Init (void)
65
{
66
67
  OSCICN    = 0x83;          // start internal oscillator with
68
                    // 24.5MHz crystal
69
  
70
}
71
72
73
//-----------------------------------------------------------------------------
74
// PORT_Init
75
//-----------------------------------------------------------------------------
76
//
77
// Configure the Crossbar and GPIO ports
78
//
79
80
void PORT_Init (void)
81
{
82
  P0MDOUT = 0x10;         // enable TX0 as a push-pull output
83
  
84
  XBR0 = 0x01;           // Enable UART0
85
  XBR1 = 0xC0;
86
  
87
}
88
89
90
//-----------------------------------------------------------------------------
91
// UART0_Init
92
//-----------------------------------------------------------------------------
93
//
94
// Configure the UART0 using Timer1, for <baudrate> and 8-N-1.
95
//
96
97
void UART0_Init (void)
98
{
99
  SCON0 = 0x50;           // SCON0: mode 1, 8-bit UART, enable RX
100
  TCON = 0x40;
101
  TMOD = 0x20;           // TMOD: timer 1, mode 2, 8-bit reload
102
  TH1 = 0x96;            // set Timer1 reload value for baudrate
103
  //PCON |= 0x80;           // SMOD00 = 1
104
  TI0 = 1;             // Indicate TX0 ready
105
}

Ich hab mich eigentlich komplett an den Code aus den App. Notes 
gehalten. Die Konfiguration der POrts hab ich mit dem Config Tool von 
SiLabs gemacht.
Vielen Dank im Voraus!

MFG

Bean

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.