Hallo zusammen :)
Ich bin zurzeit in meiner Firma an meiner IPA(individuelle
Abschlussarbeit).
Meine Aufgabe ist es ein Buskoppler(RS485) zu Layouten/testen und
programmieren.
Jetzt stehe ich gerade bei der Aufgabe Daten zu senden und empfangen.
Da ich mehrere Prototypen zusammengebaut habe, kann ich zwei prints
ueber A und B des Rs485 Anschlusses zusammenschließen.
Das Senden geht(mit KO gemessen) aber beim empfangen springt mein Code
immer in das Timeout der receive funktion. leider habe ich keine ahnung
warum oder was ich falsch mache.
zum senden benutzte ich:
1 | while(1)
|
2 | {
|
3 | HAL_UART_Transmit(&huart1, buffer, 1, 5000);
|
4 | HAL_Delay(40);
|
5 | }
|
zum empfangen benutzte ich:
1 | while(1)
|
2 | {
|
3 | HAL_StatusTypeDef temp;
|
4 | temp = HAL_UART_Receive(&huart1, res, 1, 5000);
|
5 |
|
6 | switch(temp)
|
7 | {
|
8 | case(HAL_OK):{setRGB(gruen);break;}
|
9 | case(HAL_ERROR):{setRGB(rot);break;}
|
10 | case(HAL_BUSY):{setRGB(blau);break;}
|
11 | case(HAL_TIMEOUT):{setRGB(violett);break;}
|
12 | default:{setRGB(weiss);temp = 0;break;}
|
13 | }
|
14 |
|
15 | }
|
Der Code ist mit CubeMX generiert und nur diese Funktionen habe ich
geschrieben. durch Truestudio sehe ich den wert von Temp. er ist nach
dem 2. mal aufruffen auf Timeout aber beim einschalten kurz(einmal
aufgeruffen) auf HAL_OK.
Ich danke schon im voraus fuer die Antworten :)