Bytewerte per UART übertragen

Gast #53382
Lesenswert?
• ▲
▼
Hallo Leute,

ich habe ein Problem bei der seriellen Übertragung
vom Controller zum PC.
Ich möchte char Werte aus einem Array nacheinander
zum PC schicken. Allerdings empfängt das Terminal-
programm nur Müll.
Wenn ich Strings UDR = 'A' verschickte funktionierts,
was bedeutet das der UART richtig initialisiert sein
muss.
wenn ich dagegen die Byte-Wert aus dem Array senden
will klappt es nicht
UDR = init_werte[Komponente][Ident]

Hat jemand nen Tip für mich?

Danke und Ciao, Stefan


Hab mal drangehängt wie ich das (falsch) mache!



const unsigned char init_werte[5][8] =
{
{ 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48 },
{ 0x49, 0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56 },
{ 0x57, 0x58, 0x59, 0x49, 0x31, 0x23, 0x34, 0x23 },
{ 0x33, 0x23, 0x56, 0x23, 0x78, 0x32, 0x93, 0x22 }
};



for (Komponente=1; Komponente<=1; Komponente++)
{
  for (Ident=1; Ident<=8; Ident++)
  {
    while ( !(UCSRA & (1<<UDRE)));
    UDR = init_werte[Komponente][Ident];
  }
}
Gast #53383
Lesenswert?
• ▲
▼
hallo stefan!
grundsätzliches:
ein array mit 8 werten kannst du nur mit den indizes 0...7 ansprechen

also:
for (Komponente = 0; Komponente < 5; Komponente++)
{
   for (Ident = 0; Ident < 8; Ident++)
   {
      while ( !(UCSRA & (1<<UDRE)));
      UDR = init_werte[Komponente][Ident];
   }
}
das is mal fix!
genaueres kann ich im moment nicht sagen, weil ich die register nicht
vor augen hab!

lg leo
Gast #53384
Lesenswert?
• ▲
▼
Danke,

das ist ein Fehler!

Aber mein Hauptproblem ist das die Übertragung
in einem der beiden Fälle nicht funktioniert.

void send_fkt(char byte)
{
while ( !(UCSRA & (1<<UDRE)));
UDR = byte;
}

MAIN:
send_fkt('A'); funktioniert
send_fkt(0x41); funktioniert nicht

0x41 sollte auch A sein ??

Stefan
Gast #53387
Lesenswert?
• ▲
▼
hallo stefan!

das nennt sich explizite typenumwandlung!
anscheinend hat er das byte nicht als char erkannt?

für mich ist das nicht 100%ig verständlich, denn meiner meinung nach
ist char gleich char gleich byte gleich byte!

wer hat die korrekte BEGRÜNDUNG?
täte mich brennend interessieren!!!

mfg da|poidi

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren