-         

Ergebnis 1 bis 7 von 7

Thema: Wie schnell ist Bascom ?

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    16.07.2006
    Beiträge
    149

    Wie schnell ist Bascom ?

    Anzeige

    Hallo,

    ich kenne mich ein klein wenig mit den Microcontrolern der ersten Generation aus (8051 und 68HCxx). Damals waren Compiler unerschwinglich und der Basic-Interpreter des 8051AH war für viele Anwendungen zu langsam.
    Ich habe jetzt vor ein kleines Projekt mit dem AVR zu verwirklichen.
    C möchte ich mir nicht mehr antun, Assembler für AVRs ist teilweise auch undurchsichtig.

    Es sollen 4 Analoge Eingänge gemessen werden, der Wert jedes Einganges wird in eine Tabelle geschrieben, wobei der älteste Eintrag gelöscht wird.So habe ich vier Tabellen mit 8 oder 16 Einträgen. Dann wird für jede Tabelle der Mittelwert berechnet so dass ich jeweils die mittlere Eingangsspannung habe.
    Dann noch einige logische Operationen und einig Ausgänge setzen.

    Ich habe mich für Bascom entschieden, da hier das einlesen der Analog-Eingänge mit einem Vierzeiler möglich ist (dieser Teil ist mir in Assembler zu kompliziert).

    Frage : Ich habe absolut keine Ahnung wie schnell der Compiler ist. Gibts evtl. eine Faustregel wie -- Assembler ist 500x schneller ?
    Die Tabellenauswertung bekäme ich wohl noch in Assembler hin, würde sich der Aufwand lohnen?

    2) Wie kann ich die internen Pull-Up Widerstände an den I/Os mit Bascom zu/abschalten ?

    Es reicht mir eine grobe Abschätzung der Geschwindigkeit.Wenn der Compiler zu langsam ist, kann ich mir das mit dem Mittelwert evtl. sparen, bzw. ist er zu schnell, muss ich die Tabelle erweitern.

    Ziel ist max 0,5sec Zykluszeit (das Progamm läuft in einer Endlosschleife).

    Gruss

    Wolfgang

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    1) 500x ? Aber wo.
    Aufwand: bei deinen Anforderungen und Vorraussetzungen zahlt sich das überhaupt nicht aus.
    In 0,5 sec macht ein AVR mit 8 MHZ 4 Mio. Instruktionen. Das wird sich ja wohl ausgehen.
    2) Ganz normal. Ports auf 1 setzten UND Pins auf Input.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    11.04.2005
    Beiträge
    1.469
    Hi,
    mit 0.5 Sekunden kommst du sicher hin.
    Und hast noch viel Zeit für andere Aufgaben.

    Gruß
    Christopher

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    30.07.2005
    Beiträge
    569

    Re: Wie schnell ist Bascom ?

    Zitat Zitat von dwod
    Ich habe absolut keine Ahnung wie schnell der Compiler ist. Gibts evtl. eine Faustregel wie -- Assembler ist 500x schneller ?
    Die Tabellenauswertung bekäme ich wohl noch in Assembler hin, würde sich der Aufwand lohnen?
    1. Der Bascom Compiler scheint mal von einigen "Macken" abgesehen recht brauchbaren Code zu erzeugen. Das Problem an der Programmgeschwindigkeit liegt übrigens eher vor dem Rechner ....
    Der Grund? Naja, solange man sich keine Gedanken darüber macht, was eigentlich mit welchem Befehl auslöst wird oder mal ebend irgendwelche Fließkommaoperationen verwendet werden - am besten noch in der Division, dann ist es kein Wunder, wenn ein Bascom Program um den Faktor 10000 (kA aus der Luft gegriffen) langsamer sein kann als eines mit wohldurchdachtem Code.

    2. Wenn dich die Hardware interessiert - nimm den Weg über Assembler, willst du schnelle Ergebnisse - nimm Bascom.

    Grüße,
    da Hanni.

  5. #5
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    43
    Beiträge
    2.240
    Sicher hat Bascom Schwächen, wenns also auf absolutes Timing ankommt und der µC vom Takt her voll ausgereizt wird kommste um ASM nicht rum,
    aber wenn man mal flott n Code braucht ists super.
    Wie schon beschrieben sitzt die größte Schwachstelle vor dem Rechner.
    Gleitkomma, print usw. das sind bremsen.
    x=x/2 anstatt shift x,right,1 z.B. bremst auch, weil halt größerer Code erzeugt wird beim kompilieren.

    Ports ein aus geht zunächst übers DDRx (Data Direction Register)
    z.B. DDRA=&B11111111
    Dann Porta.0 = 1 und schon ist Porta.0 auf high
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    04.08.2006
    Beiträge
    21
    Ich arbeite mit Bacom und ATmega8 mit 11,xxx MHz. Lese alle 100 ms aus einem Sensor Temperatur und Druckwerte. Sie werden in einem EEPROM gespeichert, an einem LCD angezeigt und zum PC übertragen. Die Aufgabe ist einigermassen verteilt auf diese 100-ms-Takt.
    Spasseshalber habe ich die Zyklen während der 100-ms-Takt gezählt:
    Die Schlefe wird 6000 bis 7500 mal durchlaufen.
    So gesehen habe ich eine Zykluszeit von 13 bis 16 Mikrosekunden.

    Gruss

    Ali

  7. #7
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    16.07.2006
    Beiträge
    149
    Hi,
    danke für die Hilfen.
    Ich hab da immer noch den 8051AH mit seinem Basic-Interpreter im Hinterkopf.Das absolute Maximum an Geschwindigkeit war hier --- Ausgang setzen ; Ausgang löschen ---- 100Hz oder 10ms Zykluszeit.
    Wie gesagt, ich hab mich nur für den Bascom entschieden, weil ich Probleme mit den Analogen Eingängen hab und die sind hier einfach zu programmieren.

    Danke für den Hinweis mit dem schieben, deshalb ist meine Tabelle ja auch 2^n bit gross.Ich bin davon ausgegangen, das der Compiler bei einer Division durch 2^n selbst schiebt und nicht die ganze Prozedur durchläuft.

    Gruss

    Wolfgang

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •