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

Thema: Asuro - Probleme mit Msleep Funktion

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #2
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    61
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Dein "Wissensfeher", wenn man das so nennen mag, liegt darin, dass du der Funktion PollSwitch() zu sehr vertraust. Sie liefert leider nicht immer die erwarteten Werte. Neben Löt- und Bestückungsfehlern (in der Anleitung ab Seite 30 beschrieben) wirken sich auch Bauteiletoleranzen als fehlerhafte Werte aus. Deshalb muss man gelegentlich die Formel zur Tastenberechnung "kalibrieren". Dazu ändert man in der Datei asuro.c in der Funktion PollSwitch() die return-Zeile. Bei mir sieht diese Stelle so aus:

    Code:
    	return ((10240000L/(long)i-10000L)*61L+5000L)/10000;
    Meist reicht es, wenn man an der 61 rummfummelt.

    Bei laufenden Motoren kommen dann zusätzliche Ungenauigkeiten hinzu. Deshalb ist eine Mehrfachabfrage von PollSwitch() immer sinnvoll:

    Code:
    sw1=PollSwitch();
    sw2=PollSwitch();
    
    If((sw1 == sw2) && (sw1 > 0)) ...
    Wenn man nur testen möchte, ob eine Taste gedrückt wurde, kann man auch den AD-Wandler umgehen und direkt den Pin abfragen:

    if(!(PINC & (1<<PC4))) ...
    (aus http://www.arexx.com/forum/viewtopic.php?p=1323#1319)

    Meist ist es auch hilfreich, wenn man sich die gemessenen Werte von PollSwitch (oder auch andere Werte) über die serielle Schnittstelle zum PC senden läßt und in einem Terminal anzeigt. Dazu kann man die Funktion PrintInt() verwenden, die aber in der orginalen Library des asuro noch nicht enthalten ist. Deshalb würde ich dir empfehlen eine neuere Library zu verwenden. Ich benutze und empfehle die Version 2.3, weil sie noch sehr nahe an der orginalen Version ist, aber schon die Erweiterungen wie PrintInt() und Msleep() kennt und die 36kHz-Timermodifikation von Waste besitzt (z.B. für die IR-Abstandsmessung). Die aktuelle Version 2.8 funktioniert natürlich auch, bringt einen aber auch weiter weg von der eigentlichen Hardware des asuro:

    https://sourceforge.net/projects/asuro/files/AsuroLib/

    Gruß

    Micha
    Geändert von radbruch (01.05.2016 um 16:15 Uhr) Grund: Tippfehler
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

Ähnliche Themen

  1. Probleme bei globaler Variable in Funktion
    Von Cyrus777 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 11
    Letzter Beitrag: 09.02.2012, 14:38
  2. Msleep legt Asuro lahm
    Von paulsenior im Forum Asuro
    Antworten: 2
    Letzter Beitrag: 16.05.2009, 15:24
  3. Asuro C / Msleep geht nicht
    Von FredWeise im Forum Asuro
    Antworten: 13
    Letzter Beitrag: 06.02.2009, 16:57
  4. Probleme mit der PollSwitch-Funktion
    Von smith im Forum Asuro
    Antworten: 11
    Letzter Beitrag: 11.11.2006, 23:09
  5. Msleep Funktion
    Von stollentroll im Forum Asuro
    Antworten: 2
    Letzter Beitrag: 11.08.2006, 09:55

Stichworte

Berechtigungen

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

Labornetzteil AliExpress