Duty Cycle Messung, Zykulslänge 10ms, 10Bit Genauigkeit erforderlich Kategorie: Progr. Assembler, TaskingTools, OS (von Draxinger Wolfgang - 3.05.2004 1:14) | ||
| ||
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< // 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< while(! read_port_word() & ( 1< while( read_port_word() & ( 1< } else { // ... was somewhere in low state // Wait until the port state changes to 1 while(! read_port_word() & ( 1< while( read_port_word() & ( 1< while(! read_port_word() & ( 1< } return (base*a)/b } Wäre echt nett, wenn mir da jemand helfen könnte. Vielen Dank im Vorraus Wolfgang Draxinger | ||
Antwort schreiben Antworten: |