-
        

Ergebnis 1 bis 7 von 7

Thema: Controller zu langsam??

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    04.09.2008
    Beiträge
    21

    Controller zu langsam??

    Anzeige

    Hallo,

    ich habe einen Robonovacontroller (einzeln erworben, ohne Roboter drum rum), wo ich an einen der AD-Ports einen Drehgeber (Lochscheibe mit Mini-Gabellichtschranke) angeschlossen habe. Dessen Signal ist eigentlich recht sauber und Rechteckig. Wenn ich damit einfache Testprogramme durchführe (Variable hochzählen bzw. LED ein und ausschalten) kommt es mir so vor, als misst der Controller (Atmel ATMega128L) immer weniger der Impulse, je schneller sich der Motor mit der Lochscheibe dreht. Bei 2 Impulsen pro Sekunde (nur!) geht es noch, aber danach gibt es bei höherer Geschwindigkeit die ersten Aussetzer. Und je länger ich die Programmschleife zum Zählen der Impulse mach (zum Beispiel durch irgendwelche einfache Berechnungen), werden ebenso immer weniger Impulse registriert.
    Das kann dich noch sein. So ein Controller hat doch eine Taktfrequenz von mehreren Megaherz, Da wird er doch schnell genug sein ein paar Impulse zu registrieren. Oder liegt es am Programmierprogramm, das ich verwende, welches "Robobasic" heisst, falls das jemand kennt?

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.06.2009
    Beiträge
    1.265
    Dann poste doch mal dein Programm

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    04.09.2008
    Beiträge
    21
    Bitteschön:

    DIM I AS INTEGER
    Beginn:
    Motor 1
    Servo 1, 110

    I = AD(0)

    IF I > 400 THEN
    OUT 1,1 (LED einschalten)
    ELSEIF I < 400
    OUT 1,0 (LED ausschalten)
    ENDIF

    GOTO Beginn

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.06.2009
    Beiträge
    1.265
    warum liest du den wert über den AD Wandler ein ?
    Wenn es schön rechteckig ist und zwischen 0 und 5V toogelt reicht es aus wenn du abfragst ob der Pin High oder Low ist. Das dürfte um einiges schneller gehen.
    Auserdem zählst du keine Variable hoch, sondern dein Programm liest die gerade am AD0 pin anliegende Spannung ein und die vergleichst dann ob die Spannung größer 400 oder kleiner 400 ist.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    04.09.2008
    Beiträge
    21
    Habs mal auf einen normalen Pin umgesteckt, ja, jetzt gehts schon flotter, wobei er ab einer gewissen, nicht allzuhohen Geschwindigkeit immer noch schlapp macht. Aber für mich würds jetzt allemal ausreichen. Heisst das, das es tatsächlich an der Rechengeschwindigkeit des Controllers liegt?

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    22.06.2009
    Beiträge
    1.265
    Wenn du den wert über den AD Wandler einliest, braucht das Zeit, sehr viel zeit. Wenn du nur ausliest ob ein Pin gerade auf High oder Low ist geht das viel schneller. Optimal ist es wenn du in einem Interrupt (z.B. steigende Flanke) deine Zählervariable hochzählst.

    PS. Die rechenleistung von dem Atmega sollte ohne Probleme dafür ausreichen.

    Und könntest du eventuell dein geändertes Programm noch mal hochstellen, dann hat die nachwelt auch noch was davon

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    04.09.2008
    Beiträge
    21
    Okay, dankeschön

Berechtigungen

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