Räkna upp? Jag tror inte att den skall räkna upp buffer.
Enligt definitionen:
char * dtostrf(
double __val,
signed char __width,
unsigned char __prec,
char * __s)
är _s en array av char, inte en pekare till en pekare av array av char, dvs den kan inte räknas upp.
Din variabel "buffer" är heller ingen pekare utan en referens, vilken inte kan ändras. (En referens är i praktiken en label, men hanteras som en pekare i C i de flesta fall)..
Int till float blir bara en implicit cast, samt en varning om man valt det. Men bara om headerfilen är inkluderad.
Annars levereras det en int till en funktion som vill ha en float, med en varning, om man slagit på det.
Har du varningar?
Har du inkluderat <stdlib.h> ? (eller vilken fil dtostrf nu ligger i)
Jag har en variabel som förändras, som jag vill skriva ut helt enkelt. För att kunna skriva ut den så måste den omvandlas till en char. Hur kommer det sig att innehållet i buffer först kan få värdet 1, sedan blir den som låst.
Nu vet jag inte hur många siffror du kan behöva men buffern ska vara lika stor som antalet tecken du kan behöva + 1 byte för EOL.
Då det är en float du vill skriva ut är det lägsta du kan pressa in i buffern "x.". För att få ut "xxx.x" behövs plats för minst 6 bytes. Är det en integer du vill skriva ut kan du använda sprintf(Buffer, "%3d", bajs);
Det finns även funktioner för att skriva int som text, kanske det är dags att du använder en sådan?
Din buffer är för liten, den rymmer bara två tecken plus avslutande NULL. Men varför använder du inte t.ex. itoa() istället, eftersom det ändå är heltal du stoppar in?
Prova att sätta 'bajs' som double och öka buffer.
buffer på 3 tecken inklusive '/0' kan inte rymma mer än position för +/- och en siffra sen är det slut.
Prova att sätta buffer till 20 eller så, så att dy får lite marginal.