Forum: Compiler & IDEs Immer noch Probleme beim Empfangen


von Arne P. (ob3lix)


Angehängte Dateien:

Lesenswert?

Hallo an alle,

wir haben mal wieder ein Problem mit unserem ATmega 328P und der 
Programmierung!

Im Anhang ist der betreffende Quelltext, sollte mehr benötigt werden, 
könnt ihr euch melden...

Zum Aufbau: Es gibt ein Bussystem (RS 485), das über einen MAX 485 an 
den µC angeschlossen ist und über Konverter an den PC... jetzt zum 
Problem: senden kann der µC mit dem SNAP Protokoll, aber er kann nichts 
empfangen, ich habe es über LED toggeln im Recive Interrupt probiert zum 
sehen, aber da tut sich im Moment gar nix, kann mir von euch einer 
weiterhelfen?

Gruß
Arne

von STK500-BEsitzer (Gast)


Lesenswert?

1
#define UART_PIN      PIND
2
#define UART_RX        PIND2

Ist das so richtig?
1
SIGNAL(USART_RX_vect)
2
{
3
  //PORTC ^= (1<<PC0);
4
  unsigned char ch;
5
  ch = UDR0;  
6
  SnapReceiveChar(ch);
7
}

Kürzen!
Ob in der ISR nur Zeilen stehen, von denen eine ein Funktionsaufruf ist, 
oder der gesamte Code der aufgerufenen Funktion da drin steht, macht den 
Kohl nicht fett.

von Stefan E. (sternst)


Lesenswert?

1
#define UART_DDR      DDRD
2
#define UART_PORT      PORTD
3
#define UART_PIN      PIND
4
#define UART_RX        PIND2
5
...
6
  cbi(UART_DDR, UART_PIN);              // Set direction to input
7
  sbi(UART_PORT, UART_PIN);              // enable pull-up resistors
Das ist natürlich Unsinn, verhindert aber nicht den Empfang, da der Pin 
"von alleine" zum Eingang wird.

Sicher, dass du beim RS485-Umschalten alles richtig machst?

von Christian B. (luckyfu)


Lesenswert?

hast du die Umschaltzeit von ca. 1.5ms beachtet (s. Datenblatt!)? 
Einfach auf Empfang schalten reicht nicht, du musst danach noch diese 
Zeit abwarten (ich hab 2ms als Wartezeit (timer gesteuert) und das 
funktioniert perfekt)

von Arne P. (ob3lix)


Lesenswert?

@STK: arg viel kürzen wird man in der Funktion vermutlich nicht können 
denk ich, ausser mir sagt jemand wo ;) und ja die defines sind richtig, 
es geht da nur um das "hören" auf der leitung vor dem senden ( CSMA/CA 
verfahren)

@Stefan: zum empfang testen haben wir beide eingänge auf gnd gezogen, 
direkt ohne µC, weil es ist uns im prinzip erstmal der empfang wichtig, 
das senden ist zweitrangig...

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.