Uart Variablen Inhalt senden ?

OP #6039446
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
}
Angehängte Dateien:
Gast
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
OP
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 ?
OP
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.
Gast
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
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.

Antwort schreiben

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