- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 5 von 5

Thema: Performancefrage [blutiger Anfänger]

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    10.02.2005
    Ort
    eastside, L.E.
    Alter
    53
    Beiträge
    104

    Performancefrage [blutiger Anfänger]

    Anzeige

    Powerstation Test
    Jo, Hallo erstmal, ein interessantes Forum habt Ihr hier

    Meine Erfahrungen beschränken sich bis jetzt leider nur auf die C-Control micro, und die ist für mein nächstes Vorhaben nicht geeignet.

    Die zeitkritischste Funktion wird dabei sein, eine Eingangsfrequenz von ca 500-2000 Hz zu messen, und im Bereich bis 1500 Hz 1:1 wieder auszugeben, darüber hinausgehende Frequenzen müssen bewertet werden und sollen zwei PWM-Ausgänge über eine Kennlinie ansteuern.

    Das ganze sollte in Echtzeit funktionieren, wenn möglich im 1/100 Sekunden-Bereich.

    Da der Controller noch weitere, aber weniger zeitkritische Funktionen ausführen soll, schwebt mir ein mega8 vor.

    Nun die Frage: bekomme ich die Funktionen mit dem Bascom hin, oder sollte ich mich gleich mit der Assemblerprogrammierung vertraut machen? Wie hoch sollte die Taktfrequenz gewählt werden?

    PS: In den ganz hintersten Gehirnzellen gibt es auch noch Erinnerungen an die Assemblerprogrammierung meines ersten Rechners, mit einer U880 CPU (Z80) von daher hab ich auch noch in etwa einen Plan, was interrupts sind und wie man sie verwendet...

    Auch wenn das Prob weniger mit Robotern zu tun hat, hoffe ich auf Eure Antworten

    greetz Rajko

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    10.02.2005
    Ort
    eastside, L.E.
    Alter
    53
    Beiträge
    104
    Na kommt Jungs und Mädels, laßt mich nicht hängen

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    29.01.2004
    Beiträge
    2.441
    Nun die Frage: bekomme ich die Funktionen mit dem Bascom hin, oder sollte ich mich gleich mit der Assemblerprogrammierung vertraut machen?
    Den ATMega kannst du bis 16 MHz takten und die AVRs brauchen laut Datenblatt für die meisten Instruktionen nur einen Takt.
    Unter dieser Voraussetzung sind 2kHz nicht so schrecklich viel und eine 1/100 Sekunde relativ viel Zeit.

    Verglichen mit CBasic ist Bascom wesentlich schneller, da es ein Compiler und kein Interpreter ist. Obs mit Bascom schnell genug ist hängt aber davon ab, was der Controller ganz genau machen soll und wie du das programmierst.
    Offensichtlich solls ja noch ein bischen mehr sein als du oben beschreibst und selbst wenn die anderen Funktionen nicht zeitkritisch sind müssen sie irgendwann abgearbeitet werden.
    Wenn du Kenntnisse in Assembler hats, kannst du die kritischen Routinen aber notfalls selber in Assembler schreiben und in Bascom einbinden.

    Interessant ist für das was du vorhast vermutlich auch noch, ob der ATMega genug Interrupts und PWM Ausgänge hat. Das lässt sich im Datenblatt einfach rausfinden.

    Wie hoch sollte die Taktfrequenz gewählt werden?
    Was (ausser ein bischen höherer Stromverbrauch) spricht dagegen einfach die höchste Taktfrequenz (16 MHz) zu verwenden?

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    05.11.2004
    Ort
    Karlsruhe
    Beiträge
    223
    Nun die Frage: bekomme ich die Funktionen mit dem Bascom hin, oder sollte ich mich gleich mit der Assemblerprogrammierung vertraut machen?
    Warum nicht gleich C? Das ist hardwarenäher als Basic und auch für zeitkritisches besser geeignet aber schöner wie Assembler. Kommt zwar an Assembler auch net ran, aber an ASM kommt nur ASM ran

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    10.02.2005
    Ort
    eastside, L.E.
    Alter
    53
    Beiträge
    104
    Danke euch beiden!

    erstmal @bluebrother: mir liegt basic viel mehr als C. Ich mache auf Arbeit viel mit VBA und unser Reglersystem benutzt eine BASIC-Abart...
    und wenn noch mal was neues lernen, dann gleich ASM

    @recycle: Wegen der Taktfrequenz hab ich gefragt, weil ich davon ausgegangen bin, das ich die Ausgangsfrequenz durch interne Teiler direkt herunterteilen kann und dann direkt ausgebe. Bei den microcontrollern ist es wohl so üblich, das ich einen relativ schnellen zyklischen Interupt erzeugen lasse, mitzähle und dann übers Programm einen Port ein- und ausschalte. (?)

    Dann scheint mir auch eine Kombination von BASIC und ASM sinvoll. Das Basic müßte dann die Periodendauer berechnen und an das Sub übergeben. Geht das einigermaßen elegant?

    Für die Frequenzmessung gibt es Zähler, die ich in einem festen Zeitraster auslese und dann wieder auf 0 setze, richtig?

    für die anderen Funktionen bleibt mir noch die Frage, ob sich per Interupt auch BASCOM-prozeduren starten lassen? Wenn ja, kann ich dann auch Prioritäten zuordnen? d.h. höchste prio- frequenzerzeugung (ASM) dann frequenzmessung (ASM), 3. Prio Rest (BASCOM)


    Vielleicht noch ein paar Worte was das überhaupt soll:

    Es soll eine Ergänzung zur Motor - ECU meines Autos werden, die ich sicher auch fertig kaufen könnte, aber ca. 1000 $ sind mir zu schade dafür die 3 notwendigen Geräte bei Ebay zu kaufen

    der Frequenzwert kommt vom Luftmassenmesser und muß bei einer Frequenz von 1500Hz nach oben begrenzt werden, sonst geht die Motorelektronik von einem fehlerhaften Signal aus und unterbricht die Spritzufuhr ('fuelcut'). Oberhalb dieser Frequenzen soll über eine table mit vielleicht 20 steps ein Prozentwert von 0-100% berechnet werden, der über einen PWM-Port eine Zusatz-Einspritzdüse ansteuern soll (mehr Leistung braucht auch mehr Sprit). Als drittes soll noch ein einfacher Regelkreis für den Turbo-Ladedruck ( 0-5V-Signal input, PWM output) implementiert werden (irgendwo muß ja die Mehrleistung herkommen ).

    greetz Rajko

Berechtigungen

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

LiFePO4 Speicher Test