Hallo,
ich bin bezüglich der Arbeit mit einem Mikrocontroller ein Frischling,
möchte mich nun aber so langsam einarbeiten. Jetzt möchte ich die
Kommunikation zwischen Mikrocontroller und PC hinbekommen.
Ich arbeite mit dem Arduino UNO Board (Mikrocontroller ATMEGA328P-PU).
Zum Empfangen am PC nutze ich das HTerm Terminal.
Ich habe mich eigentlich auch streng an das Tutorial gehalten aber
irgendwie will es nicht so klappen wie ich will.
Folgenden Quellcode habe ich mir überlegt.
1 | #define F_CPU 12000000ul
|
2 | #define _BAUD 9600ul //9600?
|
3 | #define UBRR (F_CPU/(_BAUD*16))-1
|
4 | #define UCSZ1 2
|
5 | #define UCSZ0 1
|
6 | #define UDRE 5
|
7 |
|
8 |
|
9 | #include <avr/io.h>
|
10 | #include <util/delay.h>
|
11 | #include <inttypes.h>
|
12 |
|
13 | void configSYS();
|
14 |
|
15 | int main(void)
|
16 | {
|
17 |
|
18 | configSYS();
|
19 |
|
20 | while(1){
|
21 |
|
22 | while (!(UCSR0A & (1<<UDRE))) /* warten bis Senden moeglich */
|
23 | {
|
24 | }
|
25 |
|
26 | UDR0 = 'x'; /* schreibt das Zeichen x auf die Schnittstelle */
|
27 |
|
28 | _delay_ms(1000);
|
29 | }
|
30 |
|
31 | }
|
32 |
|
33 | void configSYS(){
|
34 | UBRR0H = UBRR >> 8; // UBRRH Register setzen
|
35 | UBRR0L = UBRR & 0xFF; // UBRRL Register setzen
|
36 | UCSR0B |= (1<<TXEN0); // Bit setzen zum Senden
|
37 | UCSR0C = (1<<UCSZ1)|(1<<UCSZ0); // Übertragungsformat einstellen 1 Byte/keine Parität/1 Stop bit/ Asynchron
|
38 |
|
39 | }
|
Es wäre nett wenn mir evtl. jemand auf die Sprünge helfen kann.
Viele Dank schonmal im voraus.