- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 8 von 8

Thema: Haupt- und Unterprogramm Verständnissfrage

  1. #1
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.08.2006
    Ort
    Kitzscher
    Alter
    44
    Beiträge
    237

    Haupt- und Unterprogramm Verständnissfrage

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hallo

    ich versuche irgendwie mit sub befehlen und call sub einen Struktur zu schaffen wo ich haupt und unterprogramm habe aber es funktioniert nicht.


    Ich lese zum Beispiel Analoge Ports ein und möchte aber auch noch eine LED zum leuchten bringen. Sowie ich aber nur irgendwo waitms 1000 einbaue dann steht alles für diesen Zeitraum und das wo doch nur die LED die 1000ms stehen soll.

    Wie macht man sowas ich komme nicht klar der µController scheint wohl gar nichts parallel verarbeiten zu können oder wie sehe ich das ?


    Ich Suche Codebeispiele zu dem Problem wenn mir jemand erklären könnte wie ich irgendetwas Parallel ablaufen lassen kann wäre es klasse.


    Danke und Gruß
    Steffen

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    17.01.2007
    Alter
    44
    Beiträge
    19
    Ne Multitasking kann der AVR nicht, ausser du schreibst dir eine art Betriebsystem

    Wenn du eine LED im Sek Takt blinkel lasen willst, dann nimmst du einfach einen Timmer.

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    21.03.2005
    Ort
    Ulm
    Alter
    36
    Beiträge
    519
    Befehle echt synchron ausführen kann der AVR nicht, da er nur eine Prozessoreinheit hat. Das heist du musst versuchen deinen Code so zu strukturieren, dass der AVR verschiedenste Aufgaben direkt hintereinander ausführt. Das ist dann zwar immer noch nicht echt synchron, kommt aber fast hin...

    Wait-Befehle sollte man sowieso nur mit Bedacht einsetzen, da der AVR in dieser Zeit wirklich stillsteht, das heist er macht in dieser Zeit nichts, aber auch gar nichts anderes!

    Wenn du feste zeitliche Routinen einbauen willst, also zum Beispiel das LED-blinken, nimmst du Timer mit Interrupts. Dann handelt dein AVR ganz normal dein Programm ab und jedes mal wenn der Timer überlauft springt er aus dem Programm, lässt deine LED aufblinken und springt sofort wieder an die Stelle im Code wo er zuletzt war.

    Schau also mal im Wiki unter Timer

  4. #4
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.08.2006
    Ort
    Kitzscher
    Alter
    44
    Beiträge
    237
    ok super danke

    ich habe jetzt schon eine Art kompromis gefunden die LED blinken zu lassen ohne das das Hauptprogramm beineinflußt wird. Ich muß sagen das ist ganz schön schwierig ein wenig Multitasking hätte echt nicht geschadet


    Vielen Dank für die Tips

    Gruß
    Steffen

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    19.01.2006
    Ort
    Mönchengladbach
    Beiträge
    544
    Multitasking ist mit dem AVR auf jeden Fall machbar, aber benötigt natürlich etwas RAM und FLASH. Es stellt sich bei Multitasking immer die Frage, ob der verwendete RAM und FLASH die vereinfachte Programmierung wert ist. Bei komplexen Projekten, die nicht zeitkritisch sind ist Multitasking perfekt einsetzbar.... bei zeitkritischen Sachen ist es oft ein Hinderniss.

    Gruß,
    SIGINT

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.08.2006
    Ort
    Kitzscher
    Alter
    44
    Beiträge
    237
    aha gibt es da irgendwo Code Beispiele wie ich so etwas bewerkstelligen kann ?


    Gruß
    Steffen

  7. #7
    Erfahrener Benutzer Robotik Einstein Avatar von Vitis
    Registriert seit
    06.01.2005
    Ort
    Südpfalz
    Alter
    50
    Beiträge
    2.253
    es laufen verschiedene Bereiche des µC quasi im Multitasking.
    Die UART, die TWI, der Timer beispielsweise.
    Diese Hardwareeinheiten können Interrupts auslösen, also
    Programmunterbrechungen, sprich das aktuelle Programm wird
    kurz unterbrochen um das empfangene Zeichen z.B. bei der UART
    zu verarbeiten und springt dann in das ursprüngliche Programm
    zurück. selbiges gilt auch für die Timer, die dann beispielsweise
    LED aus- einschalten können.

    Software Multitasking würde bedeuten, das Programme immer Stück
    für Stück nacheinander abgearbeitet werden. So macht das der PC
    übrigens auch. Auch der kann nicht x Programme parallel auf einem
    Prozessor laufen lassen, sondern auch nur je ein Programm nach dem
    anderen, nur eben so schnell, das es der Anwender nicht mitbekommt.
    Vor den Erfolg haben die Götter den Schweiß gesetzt

  8. #8
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    19.08.2006
    Ort
    Kitzscher
    Alter
    44
    Beiträge
    237
    aha jetzt wird mir einiges klarer und jetzt verstehe ich auch endlich warum das mit dem TWI immer ohne Probleme funktioniert hat. Mit Timern muss ich mich mal mehr beschäftigen bis jetzt habe ich damit noch gar nichts gemacht obwohl das Programm schon ziemlich groß geworden ist was ich im µC habe.


    Danke für die interessanten Erkenntnisse

    Gruß
    Steffen

Berechtigungen

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

12V Akku bauen