Liste der Anhänge anzeigen (Anzahl: 2)
Serielle Ausgabe - Abbruch
Hallo,
hab da ein Problem mit der seriellen Ausgabe von Zeichen.
Ich habe die Schaltung wie im Anhang und messe dort am MAX485 auf dem Bus A und Bus B.
Die Software, s. Anhang, sendet 1000mal das Zeichen "d".
In der markierten Zeile ist eine Wartefunktion. Wird hier 20ms gewartet, werden die Zeichen vom Atmega128 auch korrekt auf den Bus-Leitungen übertragen. Setze ich die Wartezeit auf 2ms herab, so werden nur noch teilweise die Zeichen übertragen (von den 1000 Stück max. 150).
Kurz zum Programmablauf:
-Ich setze den 485-Bus auf senden
-Warte 0,1ms (bis der Port geschaltet ist)
-Sende das Zeichen "d"
-Warte, bis das Interrupt sagt, der Sendepuffer ist leer
-Setzte den 485-Bus auf Empfangen
-Warte jetzt die o.g. Zeit (steht der weitere Programmablauf hinterher drin).
Hat jemand eine Idee, warum da nicht die 1000 Zeichen übertragen werden?
Mfg,
Wurm
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
Du hast recht, Bascom hat ein Problem mit `waitms 0.1´.
Das löst mein Problem aber immer noch nicht.
Ich hab ein wenig weiter experimentiert und erst mal alles unnötige aus dem Programm rausgeworfen.
Im Anhang ist jetzt neue Variante. Entferne ich die Zeile ´waitms 2´, dann werden alle 1000 Zeichen korrekt gesendet. Mache ich dort einen Eintrag ´waitms 20´ werden auch alle Zeichen korekt gesendet.
Steht dort eine andere Wartezeit, z.B. 2 ms, dann werden massig Zeichen verschluckt.
Ich verstehe das nicht. Kann mir das nur erklären, dass es irgendwas mit dem Timing an der UART zu tun haben kann.
Vielleicht hat ja jemand eine Idee?
Mfg,
Wurm