Hallo the~©€¥, (Ist kein schöner Name zum tippen, trotzdem aber auf alle Fälle ein herzliches willkommen hier im Forum)
Dein Problem lößt sich ganz einfach, wenn man weiss wie schnell der 'kleine atmega8" eigendlich tatsächlich ist.

In deiner main()-Loop holst du dir die Odometrie-Werte zum geradeausfahren. Das ist OK.
Nun berechnest du die Differenz der Zählerstände. Das ist auch OK.
Aber du reduziert immer die Geschwindigkeit für den Motor zur Korrektur.
--> Das geht so schnell, dass die Motoren 'sofort' stehen bleiben.
Genau hier musst du dir etwas anderes einfallen lassen.

P.S.: Zu dem Problem gibt es aber Lösungen im Forum
Versuche es erst einmal selbst, und wenn es dann weiterhin nicht klappt kannst du natürlich weiterfragen.