asuro_alex
29.05.2013, 12:12
Hallo Leute ich habe ein Programm gefunden, mit welchem ich meinen ASURO fernsteurn kann, mittels einer Fernbedienung. Habe es auch nach meinen Wünschen etwas optimiert. Jedoch gibt es 2 Stellen im Programm, die ich nicht verstehe und es wäre sehr nett, wenn mir jemand die Funktion dieses Porgrammabschnitts erklären könnte:
Gleich zu Beginn steht das:
volatile unsigned int rxdata;
volatile unsigned char rxbits;
SIGNAL (SIG_OVERFLOW0)
{
rxbits++;
rxdata<<=1;
rxdata |= (PIND & (1 << PD0)); // liest Datenbits
TCNT0 = 34; // Timer auf 1778µs
if(rxbits==14){
TCCR0 &= ~((1 << CS01) | (1 << CS00)); // stoppt Timer
was genau macht der ASURO hier oder was hat es zu bedeuten?
und am ende des Programms steht dann das:
int main(void)
{
static unsigned int cmd;
Init();
for (;; ) {
rxbits = 1; rxdata = 0;
TIMSK |= (1 << TOIE0);
while(PIND & (1 << PD0));
TCNT0 = 90;
TCCR0 = (1 << CS01) | (1 << CS00);
while(rxbits < 14);
cmd = (rxdata & 0x3F); // 6 Command-Bits werden verwertet
switch (cmd) {
das kann ich überhaupt nicht nachvollziehen, da ich die meisten Befehle nicht kenne. Steht das cmd für die Commandobits?
Vielen Dank
Gleich zu Beginn steht das:
volatile unsigned int rxdata;
volatile unsigned char rxbits;
SIGNAL (SIG_OVERFLOW0)
{
rxbits++;
rxdata<<=1;
rxdata |= (PIND & (1 << PD0)); // liest Datenbits
TCNT0 = 34; // Timer auf 1778µs
if(rxbits==14){
TCCR0 &= ~((1 << CS01) | (1 << CS00)); // stoppt Timer
was genau macht der ASURO hier oder was hat es zu bedeuten?
und am ende des Programms steht dann das:
int main(void)
{
static unsigned int cmd;
Init();
for (;; ) {
rxbits = 1; rxdata = 0;
TIMSK |= (1 << TOIE0);
while(PIND & (1 << PD0));
TCNT0 = 90;
TCCR0 = (1 << CS01) | (1 << CS00);
while(rxbits < 14);
cmd = (rxdata & 0x3F); // 6 Command-Bits werden verwertet
switch (cmd) {
das kann ich überhaupt nicht nachvollziehen, da ich die meisten Befehle nicht kenne. Steht das cmd für die Commandobits?
Vielen Dank