Gast
#75768
Moin! Ich habe das Problem, dass ich verschiedene Funktionen habe, die auf eine globale Variable lesend und schreibend zugreifen müssen. Mit Hilfe dieser Variable (CTS) soll/wird die Kommunikation über eine Halbduplex-Schnittstelle (RS485) gesteuert (werden): Es wird ein Datensatz (4 Byte) gesendet und der Empfänger quittiert diesen dann irgendwann. Es darf aber erst wieder gesendet werden, wenn eine Antwort eingegangen ist (CTS=1). Solange keine Antwort eingegangen ist, soll CTS=0 sein. Die Empfangsprozedur läuft interrupt-gesteuert und setzt CTS=1, sobald 4 Byte eingegangen sind. Es kann also passieren, dass die Sendeprozedur in einer Warteschleife hängen bleibt, solange CTS=0 ist. Diese Schleife besteht auch nur aus "while(CTS==0);". Wenn jetzt die Empfangsprozedur CTS=1 setzt, passiert leider immer noch nichts neues. Kann es sein, dass das eine CTS in einer anderen Speicherstelle steht als das andere? (Meine Vermutung) Wie bringe ich den Compiler dazu, dass das funktioniert? Oder welchen Fehler mache ich da? Vielen Dank im Vorraus Rahul