enoritz
05.06.2005, 20:47
Hallo,
ich habe mit einem AT90S2313 Mikroprozessor (Taktfrequenz 12MHz) eine serielle Verbindung zum PC aufgebaut.
Dieser soll nun Daten zum Controlle senden und jedes Byte einzeln über den PORTB ausgeben. Dabei spielt die Zeit aber eine wichtige Rolle. Aufgrund der Taktfrequenz habe ich eine ungefähre Ausführungszeit der (meisten) Befehle von 1/12000000 Sekunden, sie dürfen allerdings eine Zeit von 150ns nicht unterschreiten.
Ich habe mir überlegt ob ich nicht einen Timer verwenden könnte, der dann die Bytes aus dem UDR ausließt und auf dem Port ausgibt. Allerdings denke ich, dass ich so in einen Konflikt mit der seriellen Datenübertragung komme, falls ich die Bytes zu schnell oder zu langsam auslese.
Jetzt ist meine Frage, ob die Baudrate so zuverlässig ist, dass ich Einfluss auf die Übertragungszeit bekomme. Dann könnte ich ja den Interrupt bei vollenden eines Bytes verwenden um es anschließend auf PORTB auszugeben.
Kann man sich bei der Baudrate darauf verlassen, z.B. 9600 bd/s, dass auch wirklich 9600Bit/s bzw. 1200 Byte/s übertragen werden?
ich habe mit einem AT90S2313 Mikroprozessor (Taktfrequenz 12MHz) eine serielle Verbindung zum PC aufgebaut.
Dieser soll nun Daten zum Controlle senden und jedes Byte einzeln über den PORTB ausgeben. Dabei spielt die Zeit aber eine wichtige Rolle. Aufgrund der Taktfrequenz habe ich eine ungefähre Ausführungszeit der (meisten) Befehle von 1/12000000 Sekunden, sie dürfen allerdings eine Zeit von 150ns nicht unterschreiten.
Ich habe mir überlegt ob ich nicht einen Timer verwenden könnte, der dann die Bytes aus dem UDR ausließt und auf dem Port ausgibt. Allerdings denke ich, dass ich so in einen Konflikt mit der seriellen Datenübertragung komme, falls ich die Bytes zu schnell oder zu langsam auslese.
Jetzt ist meine Frage, ob die Baudrate so zuverlässig ist, dass ich Einfluss auf die Übertragungszeit bekomme. Dann könnte ich ja den Interrupt bei vollenden eines Bytes verwenden um es anschließend auf PORTB auszugeben.
Kann man sich bei der Baudrate darauf verlassen, z.B. 9600 bd/s, dass auch wirklich 9600Bit/s bzw. 1200 Byte/s übertragen werden?