mikrocontroller.net

Forum: Compiler & IDEs AVR NET IO RS232 Codes an Marantz Receiver


Autor: Johannes S. (gnubert)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,
habe hier einen soweit funktionierendes AVR NET IO Board.

Habe ein Script geschrieben, dass über die UART Schnittstelle einen 
String sendet. Am Computer werden die gesendeten codes (Docklight) 
wunderbar interpretiert. Eigentlich genau wie es sein soll.
Schließe ich die Platine an den Marantz SR 5004 an, reagiert dieser aber 
nicht.

Habe natürlich getestet, kommt der Befehl direkt vom Computer reagiert 
der Marantz Receiver.

An was kann es denn noch liegen? Habe ich den Carriag Return richtig 
eingebunden??


#include <avr/io.h>
#include <util/delay.h>
#include <stdio.h>

int uart_putc(unsigned char c)
{
  while (!(UCSRA & (1<<UDRE)))  //warten bis Senden Mˆglich
  {}
  UDR = c;
  return 0;
}


void uart_puts (char *n)
{
  char *s = n;
  while (*s)
  
  {/*so lange *s != '\0' also ungleich dem "String- Endzeichen" NULL */
  uart_putc(*s);
  s++;
  }
}

void uart_init(void)
{
#ifndef F_CPU
#define F_CPU 16000000
#endif
#define UART_BAUD_RATE 9600

//Hilfsmakro zur UBRR-Berechnung ("Formel laut Datenblatt)
#define UART_UBRR_CALC(BAUD_,FREQ_) ((FREQ_)/((BAUD_)*16L)-1)

  UCSRB |= (1<<TXEN) | (1<<RXEN);  //UART TX und RX einschalten
  UCSRC |= (1<<URSEL)| (3<<UCSZ0);  //Asynchron 8N1

  UBRRH = (uint8_t)( UART_UBRR_CALC( UART_BAUD_RATE, F_CPU ) >> 8);
  UBRRL = (uint8_t)UART_UBRR_CALC( UART_BAUD_RATE, F_CPU );
}


int main(void)
{
DDRA  &= ~(1<<DDA7);  /* Pin PA7 als Eingang */
PORTA |= (1<<PA7);   /* internen Pull-Up an PA7 aktivieren */

  uart_init();
  
  
      while (1)
      {
        if (!( PINA & ( 1 << DDA7 ) )) 
        {  
        uart_puts("Main Zone Power Off,@PWR:1\r");
        
        _delay_ms(3000);
      }
      
      }
   return 0;
}

Autor: g457 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Habe ich den Carriag Return richtig eingebunden??
[..]
> uart_puts("Main Zone Power Off,@PWR:1\r");

Das musst Du in der Speck nachlesen. '\r' ist jedenfalls eher 
ungewöhnlich (alte Mäcs mal ausgenommen).

HTH

Autor: Johannes S. (gnubert)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
komischerweise wird von Docklight beim Empfangen am PC ein <CR> am Ende 
erkannt...
aber vielleicht hilft docklight da beim interpretieren auch noch nach!?

Also der Marantz erwartet folgenden Code:
Main Zone Power Off,@PWR:1

gefolgt von einem cr


Baud Rate : 9600bps
Data Bits : 8bit
Parity : None
Stop bit : 1bit
Handshaking : None

Autor: g457 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
..nebenbei bemerkt hast Du das schon mal vom Rechner aus getestet? Falls 
nein (oder falls es von dort aus ebenfalls nicht funktioniert hat:-): 
Bist Du sicher dass der Marantz das 'Main Zone Power Off,' hören will? 
Mir dünkt das dahinter sieht viel eher nach einem plausiblen 
Kommandoformat aus, das vorne dran ist arg menschenlesbar..

HTH

Autor: DirkB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du auch das richtige Kabel? 1:1 bzw. Nullmodem.

Autor: Johannes S. (gnubert)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Johannes Xy schrieb:
> Habe natürlich getestet, kommt der Befehl direkt vom Computer reagiert
> der Marantz Receiver

Also habe natürlich vom PC aus auch getestet. Und da funktioniert es.

Mit einem 1:1 Kabel.

Nehme ich das gleiche Kabel zwischen Platine <-> Marantz klappt es nicht

Platine <-> PC kommt eigentlich genau das an was ich auch haben will, 
nämlich
Main Zone Power Off,@PWR:1<CR>

Theoretisch könnte die Platine ja einen gedrehten RS232 Anschluss haben 
und der PC korrigiert das gleich !?

PDF zum Board
http://www.pollin.de/shop/downloads/D810058B.PDF

Autor: DirkB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei der RS232 gibt es zwei Sorten von Geräten: Datenendeinrichtung (DEE) 
und Datenübertragungseinrichtung (DÜE). Der PC ist ein DEE, ein Modem 
ein DÜE.

Dabei kommt es nicht so sehr auf die Funktion der Geräte sondern auf die 
Beschaltung der Schnittstelle an (Die Pins wo RxD und TxD angeschlossen 
ist)


Zwischen DEE und DÜE brauchst du ein 1:1 Kabel. ( TxD geht auf TxD,  RxD 
geht auf  RxD)
Zwischen DEE und DEE brauchst du ein Nullmodemkabel.( TxD geht auf RxD 
und umgekehrt.)
Zwischen DÜE und DÜE brauchst du ein Nullmodemkabel.

Das NET-IO ist als DÜE beschaltet. (1:1)
Der Marantz wohl auch (Gleiches Kabel?)

Dann brauchst du für NET-IO <-> Marantz ein Nullmodemkabel oder Adapter.


Man kann sich da leider weder auf die Pinbezeichnung noch auf 
Stecker/Buchse verlassen. Im Laufe der Jahrzehnte wurde alles gemacht.

Alles Klar? ;-)

Autor: Johannes S. (gnubert)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja klingt plausibel, werde ich mal ausprobieren.
danke!

Autor: Johannes S. (gnubert)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So jetzt läufts, musste das Carriag Return via HEX übertragen
Johannes Xy schrieb:
> uart_puts("Main Zone Power Off,@PWR:1\r");
geändert in
uart_puts("Main Zone Power Off,@PWR:1\x0D");

und noch einen Nullmodemadapter zwischen klemmen.

danke!!

Autor: DirkB (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
'\r' und '\x0d' sollten das Gleiche sein.

Und lass mal den Kram vor dem @ weg:
uart_puts("@PWR:1\r");

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.