
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
> > Kann mir jemand sagen was #1,#2,#4,#8 im Assemblertext ist. Wenn ich Kanal 5,6,7,8 brauche,was ist dann mit #1,usw. Wird daraus dann #16, #32 > > usw.? > > Und was bewirkt "and" genau? > > > > #1, #2 usw. im Assembler-Programm sind Konstanten, d.h. feste Zahlen 1, 2, ... > Diese werden benutzt, um jeweils ein Bit des Byteports "auszumaskieren". > > Beispiel: > > ; Puls an Portpin 3 dekodieren > w_hi_3 lda portb ; Port 1 einlesen > and #4 ; Pin 3 ausmaskieren > > > Es soll Pin 3 ausgewertet werden. Pin (oder Bit) 3 entspricht der Bitmaske 2^(3-1) also 4 > Nebenbei: -1 ist notwendig, weil die Zählung bei 0 beginnt. > > Durch den and-Befehl wird das Portbyte bitweise mit der Maske verknüpft, bei der Maske #4 > bleibt also nur Pin (oder Bit) 3 übrig, die anderen Pins sind "ausmaskiert". > > Wenn also mehr als 4 Servoausgänge des Empfängers mit entsprechenden Pins des Byteports > verbunden sind, lauten die Masken also tatsächlich #16, #32, #64, #128. > > Das hat aber natürlich nichts damit zu tun, welche Kanäle des Empfängers verwendet werden! > Entscheidend sind die Nummern der Portpins an der C-Control Unit. > Wenn also z.B. nur die Kanäle 5,6,7,8 eines (8- oder mehrkanaligen) Emfängers ausgewertet > werden sollen, können diese ebenso über die Portpins 1,2,3,4 eingelesen werden (über die > beschriebene Transitorstufe). Dann sind die richtigen Masken also immer noch #1, #2, #4, #8. > > > Kann ich denn Assemblercode bei C3C auch direkt über #asm ... #endasm einfügen, oder wird das dann wieder zu langsam? > Ich habe mit C3C selbst keine Erfahrung. > Aber: Assembler-Code sollte immer gleich schnell sein. > Es kommt auch nur auf die Geschwindigkeit innerhalb der Assembler-Routine an. Ein > evtl. vorhandener Overhead beim Aufruf der Routine ist unerheblich. > Also ruhig mit C3C probieren! > > > Kann ich z.B.: den "BC558" nehmen? > Nein, BC 558 geht nicht! Dies ist ein PNP-Typ, es wird aber ein NPN-Typ gebraucht. Es geht z.B. BC 547. > > > > Wie lange dauert es eigentlich einen Kanal auszulesen? > Ein Servoimpuls ist 1 bis 2 msec lang, die Wiederholrate ist 20 msec. Die Assemblerroutine > wird also zwischen einigen msec und maximal 2 x 20 msec = 40 msec brauchen. > Interessanter dürfte sein, wiel lange der Rest des Programms benötigt, d.h. wie oft > die Kanalimpulse eingelesen werden. Das kommt natürlich auf die jeweilige Anwendung an. > Vielen Dank nochmal für die Beantwortung meiner Fragen. Hätte aber noch eine Fragen zur Zeit spanne die das Assemblerprogramm braucht. Bei Motorola steht das der HC05 bei 4Mhz 2µs takte hat. NOP z.B.: braucht 2 Takte, jetzt brauch ich eigentlich nur die takte zählen mal 2 und habe die Zeit die das Assemblerprogramm braucht. Jetzt weiß ich nur nicht,wie das mit den Befehlen ist die zwischen 2 und 6 takte brauchen. Woher weiß ich ob der Befehl 2 oder mehr takte braucht. Hoffe ich habe mich verständlich genug ausgedrückt worauf ich hinaus will. Vielen dank nochmal. MfG Holger |
| Antwort schreiben |