Hey Amal,

warum probierst du es nicht einfach Mal aus? Es hilft dir wenig, deinen Code ständig hier abzuladen und darauf zu warten, dass jemand nach Fehlern sucht. Zum Programmieren gehört auch das (gezielte) Testen und die darauf unweigerlich folgende Fehlersuche. Und alle drei Disziplinen profitieren von der Erfahrung die du dabei sammeln kannst.

mfG
Markus

PS: Warum hast du sleep_ms reimplementiert, es gibt bereits eine entsprechende Funktion in der avr-libc (util/delay.h).