Zitat Zitat von Bastler0815 Beitrag anzeigen
Ein befreundeter Roboterbastler (C-Programmierer) hat mir gesagt soetwas würde in Bascom nie funktionieren weil da "Echtzeitanforderungen" bestehen.
Sieh's als Vorteil, dann hast Du doch gleich jemand, den Du löchern kannst, wenn's um Übersetzungsdetails geht.

Wenn man sich das BL-Ctrl Projekt ansieht, wird man feststellen dass der Hauptteil der Arbeit in der SIGNAL(SIG_COMPARATOR) in BLMC.c erledigt wird und da ist auf den ersten Blick nix drin, was Bascom nicht im brauchbaren Zeitrahmen erledigen könnte.

Es gibt Unterschiede, Bascom nimmt ein Byte, verarbeitet es und speichert es zurück, C hält besonders in Optimierungsstufe -Os die Werte soweit wie möglich im Register. Ein weiterer Punkt ist die umfangreiche (pauschale) Sicherung der Prozessorregister in Bascom.

Den Vorteil, Werte im Register zu halten, kann C in einer ISR nicht recht ausspielen, da eine ISR zu jedem Zeitpunkt den Hauptcode unterbrechen kann und damit in der ISR verwendete Variablen sowieso immer neu geladen werden müssen. Da auch keine umfangreichen Berechnungen mit einer einzigen, sondern Zugriffe auf verschiedene Variablen sowie IO-Register vorkommen, hat hier C keinen rechten Vorteil. Der Punkt der Taktverschwendung per Pauschalsicherung kann durch den Parameter NOSAVE und selektiver Sicherung umgangen werden.

Die Ausführung der kritischen ISR('s) in ASM wäre das Beste, dann weis man auch gleich, welche Regs zu zu sichern sind, bei Bascom-Code muss man das erst durch Analyse des Disassemblats herausfinden.

Würde sagen, das geht in Bascom zu schreiben. Allerdings solltest Du den Umfang der Dateien zu BL-Ctrl beachten, da hast Du sicher etwas Arbeit vor Dir