Hi,
ich möchte mir gerne einen DMX Sender bauen. Als Prozessor setze ich
einen LPC2114 ein. Ich hab ein paar grundsätzliche Fragen zur
Software-Realisierung:
1) wie erzeugt man am Besten die Break und die MAB Time? Mittels
Software soll es möglich sein, die Refrehs,Break und MAB Time ggf. an
die Bedürfnisse anpassen zu können. Sprich der User soll die Möglichkeit
hier variabel zu sein. Laut DMX Spezifikation kann die MAB [8µs - 1s]
genauso wie die Break [88µs - 1s] sein.
Setzt man hier zur Realisierung von jeglicher Kombination einen Timer
ein mit einem Intervall von 1µs? So dass man mit einem Timer sowohl
Break als auch MAB realisieren kann? Oder verändert man ständig das
Timerintervall (also TimerInit für Break Time -> dann TMR reset ->
TimerInit für MAB Time)?
2) Die DMX-Daten an sich wollte ich mittels dem THER Interrupt vom UART
übertragen. Ist hier die Vorgehensweise richtig, dass man auf den ersten
THER Interrupt nach enablen des USARTs wartet und dann alle Daten (513
Byte) in der ISR überträgt?
1 | void UART0_IRQ()
|
2 | {
|
3 | unsigned int i=0;
|
4 |
|
5 | if(THER)
|
6 | {
|
7 | while(i<514)
|
8 | sendregister = DMX_BUF[i++]
|
9 | }
|
10 | }
|
Soll nur schematisch zeigen, wie ich das meine mit dem THER Bit.
Oder ist es sinnvoller immer nur einen DMX-Wert pro THER Interrupt zu
versenden und den nächsten DMX-Wert erst im nächsten THER-Interrupt? Vor
allem wenn man vielleicht die Option haben möchte, zwei DMX-Sender-Uarts
zu installieren (in diesem Fall dann UART1_IRQ())?
3) Schaltet man den Timer aus, während man die DMX-Daten überträgt?
Gruß
Tim