Gast
#412128
Wie verhindere ich, dass der gcc (ich benutze noch den alten 3.4.3)
Port-Zugriffe wegoptimiert. Das Code-Beispiel unten soll einen Clock an
zwei Pins auf Port-A erzeugen. Allerdings optimiert der gcc die drei
Zugriffe irgendwie weg/zusammen, wenn die Optimierung von -O0 auf -Os
umgestellt wird. Nur bei -O0 wird der Clock richtig erzeugt....
Testweise habe ich ein nop nach jedem Zugriff eingebaut, hat aber auch
nicht geholfen....
#define DRV_PORT PORTA
#define ROW_SCK (_BV(PA1))
#define COL_SCK (_BV(PA5))
DRV_PORT = tmp; // data output with clock == LOW
// clock rising edge
DRV_PORT = tmp | COL_SCK | ROW_SCK;
// clock falling edge
DRV_PORT = tmp;