Forum: Mikrocontroller und Digitale Elektronik Uart Variablen Inhalt senden ?


von Michael H. (h_m)


Angehängte Dateien:

Lesenswert?

Guten Tag,

ich fange gerade an mich mit Uart zu beschäftigen dazu habe ich mir die 
Libary von Flury geholt und folgenden Versuch gemacht, allerdings stehe 
ich jetzt auf dem Schlauch, wie kann ich meinen Variablen Inhalt von x 
richtig senden ? vielleicht kann mir bitte jemand weiter helfen.


also das Problem ist wie im Bild bekomme ich nur lauter Nullen 
angezeigt.
1
/*************************************************************************
2
Title:    Example program for the Interrupt controlled UART library
3
Author:   Peter Fleury <pfleury@gmx.ch>  /peterfleury
4
File:     $Id: test_uart.c,v 1.7 2015/01/31 17:46:31 peter Exp $
5
Software: AVR-GCC 4.x
6
Hardware: AVR with built-in UART/USART
7
8
DESCRIPTION:
9
          This example shows how to use the UART library uart.c
10
11
*************************************************************************/
12
#include <stdlib.h>
13
#include <avr/io.h>
14
#include <avr/interrupt.h>
15
#include <avr/pgmspace.h>
16
17
#define F_CPU 16000000
18
19
#include "uart.h"
20
21
22
/* define CPU frequency in Hz in Makefile */
23
#ifndef F_CPU
24
#error "F_CPU undefined, please define CPU frequency in Hz in Makefile"
25
#endif
26
27
/* Define UART buad rate here */
28
#define UART_BAUD_RATE      9600      
29
30
31
int main(void)
32
{
33
   
34
uint8_t x = 1024;
35
36
char buffer[7];
37
    
38
   
39
    uart_init(UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) );
40
  sei();
41
 
42
    
43
   while (1)
44
   {
45
     
46
  itoa( x, buffer, 10);   // convert interger into string (decimal format)
47
  uart_puts(buffer);        // and transmit string to UART
48
49
50
   }
51
   
52
    
53
    
54
}

von g457 (Gast)


Lesenswert?

> [..] Inhalt von x richtig senden ? [..] lauter Nullen
       ^^^^^^^^^^^^                       ^^^^^^^^^^^^^

Passt doch.

HTH

von test (Gast)


Lesenswert?

Der Vorredner möchte dich sicherlich auf diese ZEile aufmerksam amchen:
1
uint8_t x = 1024;

uint8_t ist von 0..255 definiert - also stehen bei 1024 lauter Nullen 
drin

von Michael H. (h_m)


Lesenswert?

OK DANKE, 16 statt 8 habe ich einfach nicht mehr gesehen, ich habe 
allerdings noch ein kleines Problem kann man die Ausgabe von itoa bzw, 
den Buffer so schreiben das ich mir im Terminal nach jedem Stringende 
eine neue Zeile anzeigen lassen kann ?

von test (Gast)


Lesenswert?

Schau dir mal "string return" und "new line" an.
Meist \r\n

von Michael H. (h_m)


Lesenswert?

ich weiß was sie meinen, aber ich habs vergessen wie das geht, wenn ich 
das so schreibe
1
uart_puts(buffer'\r');        // and transmit string to UART
kommt natürlich nichts raus.

kann mir bitte jemand zeigen wie man das schreibt im AVR-GCC-Tutorial 
wird mir das jetzt auch gerade irgendwie nicht ganz klar.

von test (Gast)


Lesenswert?

ohne die lib zu kennen, würde ich mal folgendes probieren:
[c]uart_puts(buffer);
uart_puts('\r');[\c]

und ja, man kann das zusammenfassen - kürzer und schneller machen, aber 
so ist es für einen Anfänger, der nach 3 Wochen mal wieder den code 
sieht, einfacher

von Dirk B. (dirkb2)


Lesenswert?

Das s am Ende von uart_puts und auch der Aufruf mit einem char-Array 
deuten erstmal darauf hin, dass dort ein C-String verwendet wird.

Daher:
1
uart_puts("\r\n");

Es sollte dann auch ein uart_putc für einzelne Zeichen geben.

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.