Hallo,
nö. Die while wird mit jedem Funktionsaufruf immer sofort gültig. start gleich aktuellen millis. Der if Vergleich wird solange "endlos" abgefragt wie eben Intervall in ms definiert ist. Im Grunde ist das ein delay
unsigned long start = millis();
while ((millis() - start) < GPS_UPDATE_INTERVAL) {
if (feedgps()) {
newdata = true;
}
}