Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > Ich stecke im Moment ein wenig in der Klemme: > Ich muss in nächsten Tagen die Software für > ein Sensorsystem vorführen. Leider kommen die > speziellen Platinen erst später. Also wollte ich > in der Zwischenzeit meine CC2 verwenden um die > Sensoren an meine Software zu koppeln. Mit den > Analogen Sensoren klappt das auch hervorragend, > nur habe ich auch Duty Cycles Signale (ADXL202) > mit einem Zyklus von 10ms. > > Leider ist das CC2 OS viel zu langsam um solche > Signale erfassen zu können. Also muss ein Assembler- > programm her. Nun kenne ich mich allerdings mit dem > C164 nicht so gut aus. Ich könnte mich sicherlich > innerhalb weniger Tage einarbeiten (Umfangreiche > Kenntnisse der x86-, PowerPC-, Alpha-, ARM- und AVR- > Assembler vorhanden), aber eigentlich brauche ich > die Zeit um meine Usersoftware die auf dem PC laufen > soll fertig zustellen. > > Ich wollte daher Nachfragen, ob hier schon jemand > ein fertiges Assemblerprogramm hat, dass DutyCycle > Messungen durchführen kann, bzw, der mir folgenden > C-Code freundlicherweise in ein kleines > Assemblerkonstrukt übersetzen könnte. > > // Return the state of all ports in form of a 16 Bit word > extern uint16 read_port_word(); > > typedef unsigned __int16 uint16; > typedef unsigned int uint; > > uint16 measure_duty_cycle(uint port_bit, uint16 base) > { > uint16 a, b; > a=b=0; > > if( read_port_word() & ( 1<<port_bit ) ) > { > // In this condition we started the > // measurement while the duty cycle > // was somewhere in high state > > // Wait until the port state changes to 0 > while(read_port_word() & ( 1<<port_bit )); > > while(! read_port_word() & ( 1<<port_bit )) > ++a; > while( read_port_word() & ( 1<<port_bit )) > ++b; > } > else > { > // ... was somewhere in low state > > // Wait until the port state changes to 1 > while(! read_port_word() & ( 1<<port_bit )); > > while( read_port_word() & ( 1<<port_bit )) > ++b; > while(! read_port_word() & ( 1<<port_bit )) > ++a; > > } > return (base*a)/b > } > > Wäre echt nett, wenn mir da jemand helfen könnte. > > Vielen Dank im Vorraus > > Wolfgang Draxinger