Hi Achim und alle anderen..
Mit delay_us(us) können Verzögerungszeiten in Mikrosekunden realisiert werden, der übergebene Parameter ist ein Float, also delay_us(1.5); würde theoretisch 1,5 Mikrosekunden warten. Beim Nibo2 sind scheinbar 2us die untere Grenze. es gehen auch 2.25, 2.5, 2.75 us Verzögerungen bis eben halt 48us. Das kann man selber gut ausprobieren: mehrere "delay_us()" mit unterschiedlichen Parametern von 0.5..5 programmieren.
Und einen Kommentar davor schreiben. Nach dem Compilieren entsteht eine Datei mit der Endung .lss. Hierdrin steht der vom Compiler erzeugte Maschinen-/Assemblercode--je nachdem wieviel us verzögert werden soll, gibt es eine Schleife mit unterschiedlich vielen NOPs drin.
Mit den Floats bei delay_ms() habe ich noch nicht probiert - einfach mal gucken, was der Compiler draus macht.
Es sollten also auch Verzögerungszeiten von z. Bsp. 2,234ms machbar sein.
Ein Tipp aus dem Internet (Atmel Note?): Das Delay sollte immer mit einer Konstanten aufgerufen werden, wird eine Variable übergeben, wird die Verzögerungszeit erst aufwendig berechnet. Deshalb auch die (nicht ganz genaue) Funktion delay() in der Nibolib. Bei delay(ms) wird nämlich ms als Zähler verwendet (uint16) der x-mal ein "delay_ms(1);" aufruft.