lige efter initled() i main så slukker alle led (det gør de ikke hvis jeg først skriver dem efter eks sei)
Aha. Jeg tror jeg er klar over hvad der sker nu.

Jeg har på fornemmelsen at programmet går ned.
-Du skal nemlig kunne tænde/slukke LEDs uanset hvor du er i koden.
Virker det ikke efter sei(), så betyder det at programmet ikke kommer videre.
Dvs. der er sikkert et eller andet interrupt, som er gået i ged. Mere om hvordan vi får det på plads senere.
apropos SEI. skal den stå 2 steder. kan det ikke skabe problemer at enable interrupts 2 steder?
cli() slår interrupts fra.
sei() slår interrupts til.
Du kan gøre dette så ofte du vil.
Mere detaljeret: sei() sætter bit 7 i SREG, mens cli() sletter bit 7 i SREG.
SREG's bit 7 hedder I, og står for "global Interrupt enable'.
så men efter de alle er slukket, smider jeg setLED1((SREG >> 7) & 1); ind i main's while løkke og alt er stadig slukket så væk med den igen.
Sikkert fordi programkørslen aldrig kommer ind i main's while-loop.

Fandt ud af noget interessant. Jeg kan bruge setLED#(0) før initdosing i main.c men samme komando virker ikke efter initdosing
Aha.. Fejlen er fundet.
så det må vel betyde at den hænger i init af dosing et eller andet sted
Fuldstændig korrekt.
men så tænker jeg
i startdosing sætter den gSettings = calculateSettingsDip(getADC1Value()); men calculateSettingsDip funktionen hedder calculateSettingsDip(uint16_t gDipSwitches) det stemmer jo ikke overens, så prøver at ændre i startdosing så det er gSettings = calculateSettingsDip(uint16_t gDipSwitches istedet for gSettings = calculateSettingsDip(getADC1Value());
og det kunne jeg ikke.
Nej, for gDipSwitches er en parameter som er lokal og kun kan ses af calculateSettingsDip, og derfor bør denne parameter ikke hedde gDipSwitches, men aDipSwitches.
uint8_t calculateSettingsDip(uint16_t aDipSwitches)
-Så alle steder i koden, bør gDipSwitches blive erstattet med aDipSwitches.
(Dette er i Dosing.h og Dosing.c)
den slukker led gennem hele uint16_t getADCValue(uint8_t aADC) men i void waitUntilADCStable() slukker den ikke noget
Fejlen(e) er:
1: Koden venter på at ADC'en er stabil, men ADC'en er ikke sat igang endnu, så den venter forgæves og bliver ved med at vente.
2: Hvis nu vi kom forbi waitUntilADCStable(), så ville vi komme ind i timer0Elapsed, som venter 10 sekunder. Her vil den blive ved og ved at vente, fordi timer0 ikke er startet endnu.
Løsningen er ganske simpel:
Du bør ikke kalde startDosing() fra din initDosing().
Dette er fordi init____ rutinerne er ment som at skulle lave opsætning (opsætning der lige tager få clock-cycles) og ikke andet; de må ikke vente på noget.
Så prøv at flytte startDosing() fra initDosing over i Main.c, lige efter sei();
og nu vil jeg stoppe for i dag og hoppe i seng 
Fornuftigt.

Denne beskrivelse har været rigtig god. Jeg regner med at du i dag kan få lysdioderne til både at lyse og blinke, plus nogle andre småting.

Du burde efter ændringen kunne få følgende i main's while-loop til at virke...
while(1)
{
toggleLED1();
waitSeconds(1);
}