ver-ODERn läuft schief

Wenn die union {...} data; eine globale Variable ist, wird sie schon nach jedem Reset auf 0 gesetzt.

Kann man auch die Variable ADraw immer bei der Definition Nullen und muß dann nicht die höchste Stelle mit data.b[3] = 0; extra Nullen?

Bei lokalen Variablen wie in deinem Fall, musst du das machen, richtig,
Ob du das während der Definition machst oder später, ist kein Unterschied.
Ausser dass es etwas weniger Arbeit ist, ein Byte auf 0 zu setzen als ein long.