Hi, ähm und wo lese ich meinen Port ein?? Sollte ich da vielleicht in der Schleife meine Interrups abschalten?
Druckbare Version
Hi, ähm und wo lese ich meinen Port ein?? Sollte ich da vielleicht in der Schleife meine Interrups abschalten?
Hallo
INT0 ist PD2 und INT1 ist PD3. In der Zählschleife muss man diese Ports eintragen:
Mit der Zählschleife kannst du aber auch jeden anderen Pin verwenden.Code:Do ' Warten bis aktiver Impuls zu Ende
A = Pind.2
Loop Until A = 0
Do ' Warten bis Pause fertig
A = Pind.2
Loop Until A = 1
Do
A = Pind.2
Incr Counter ' Zähler erhöhen
'Waitus 2
Loop Until A = 0 ' Solange impuls ansteht
Bei gesperrten Interrupts wären die Werte genauer und reproduzierbarer, aber die Zählschleife dauert unter Umständen zwei Impulszyklen lang, also über 20ms. Das könnte deine interruptgesteuerten Funktionen stören.
Gruß
mic
Heißt im Klartext?
Das bedeutet, du mußt es selbst ausprobieren. Ich kann bei meinem Programm die Interrupts nicht sperren, weil ich dann keine Servoimpulse mehr erzeuge.
Hi, naja die Interrupts sperre ich net sondern ich benutzte sie!
Also, Dein Projekt ist ja ganz schön groß, mit ´nem Haufen Subroutinen, Printbefehlen, etc., etc. Wenn´s dutzende Stellen gibt an denen es haken könnte, ist es manchmal ganz hilfreich, nochmal gaaaaanz von vorne anzufangen, und dann schön nacheinander Stufe für Stufe dazuzuprogrammieren. Dann merkt man nämlich sofort, bis wohin es geht - und ab wann nicht mehr.
Als erstes würde ich mal checken, ob der Controller den Empfängerimpuls überhaupt versteht. Ganz einfacher Code:
Hack´ das doch mal rein und schließ den Empfänger an den Eingang D.2 an. Das müsste je nach Knüppelstellung Werte zwischen etwa 60 und 120 geben.Code:$regfile=m32def.dat
$Crystal=16000000
Config Timer2 = Timer, Prescale = 256
Stop Timer2
Timer2=0
Dim Zahl as Byte
PORTD.2=1 'PullUp-Widerstand - für alle Fälle...
Print "Test - Test" 'nur um zu sehen, ob die Kommunikation mit dem PC klappt...
wait 1
Do
Bitwait PIND.2, reset
Bitwait PIND.2, set
Start Timer2
Bitwait PIND.2, reset
Stop Timer2
Zahl = Timer2
Timer2=0
Print Zahl
waitms 500
Loop
Hi, also ichbekomme als Rückmelödung im Print folgende Werte:
Knüppel hinten: 69/70
Knüppel vorne: 118/119
Die werte schwanken immer um +- 1 oder +-2
Also dass geht ja schon ma - wie gehts weiter?
Na also - dann haut die Schnittstelle RX->Timer doch schon mal hin!!Zitat:
Also dass geht ja schon ma - wie gehts weiter?
Ab hier gibt es schätzungsweise mindestens 7684 Möglichkeiten weiterzumachen! Leider fehlt mir im Moment die Zeit, mir alle möglichen neue Codes auszudenken - aber was noch viel schlimmer ist: Du würdest NIX dabei lernen :-)
Wenn Du weißt wie man einen Timer konfiguriert, wie man mit Interrupts umgeht, und was die schlimmsten No-Go´s sind, wirst Du sicherlich in relativ kurzer Zeit Deinen eigenen Code zusammenbekommen - und eine Menge für neue Projekte lernen!
Und wenn nicht, solltest Du genau dort anfangen (wie es praktisch jeder hier in desem Forum irgendwann einmal gemacht hat). Eine Unmenge an Beiträgen zu den verschiedensten Themen findest Du im RN-Wissensbereich.
Ansonsten wird sich jeder hier Deine Entwürfe gerne ansehen und ggf. Verbesserungsvorschläge machen - fang´ einfach an!!
Hi, ich habe deinen Test Code nun mal einen Sub gelegt und wollte ihn immer aufrufen in der Hauptrotine aber der Timer1 funkt mir dazwischen was kann ich tun?
...Code zeigen :-)