Hallo,

ich möchte einen schnellen counter für zählwerte >65535 mit ethersex realisieren. klappt auch schon prima bis der zähler 2 hoch 16 erreicht hat. dann fängt er ja von vorne an. uint32_t statt uint16_t zu nehmen scheitert beim kompilieren.

mmcu=atmega644 -I. -c -o control6/control6.o control6/control6.c
control6/control6.c:112:47: error: ‘C6_TYPE_uint32_t’ undeclared here (not in a function) control6/control6.c:112:1: error: unknown field ‘d_uint32_t’ specified in initializer
control6/control6.c: In function ‘inline_thread’:
control6/control6.c:153:214: error: ‘union <anonymous>’ has no member named ‘d_uint32_t’
control6/control6.c: In function ‘__vector_1’:
control6/control6.c:253:9: error: ‘union <anonymous>’ has no member named ‘d_uint32_t’
control6/control6.c:253:9: error: lvalue required as increment operand
control6/control6.c:253:9: warning: statement with no effect
make: *** [control6/control6.o] Fehler 1

32bit datentyp ist nicht definiert... habe auch schon hier und da in den quellen herum gestöbert - aber bekomme 32bit datentyp in meinem control6 skript (siehe unten) nicht kompiliert. den umweg über tricks mit addition des vorläufers nach überlauf möchte ich nicht gehen, da das rechenzeit kostet und der zähler keine counts verpassen soll.

wäre für tipps, wie / wo ich das machen kann dankbar. auf den wikiseiten habe ich nichts dazu gefunden. nur das 32bit datentyp für timer funktioniert. wie mache ich das mit der globalen variable pc_counter (siehe unten)?

ach so: ich habe ein pollin net-io mit einem atmega664 20PU im einsatz

vielen dank schon mal!

jan

####
CONTROL_START

ECMD_GLOBAL(pc_counter, 0, uint16_t);
// ECMD_GLOBAL(pc_counter, 0, uint32_t); <== DAMIT GEHTS NICHT einfach so...

ECMD_GLOBAL(counter, 0, uint16_t);

TCP_HANDLER_PERSIST(message_handler)
for (;;) {
TCP_SEND("%04d-%02d-%02d_%02d:%02d:%02d - pc_counter=%u \n", CLOCK_YEAR(), CLOCK_MONTH(), CLOCK_DAY(), CLOCK_HOUR(), CLOCK_MIN(), CLOCK_SEC(), pc_counter);
WAIT(1)
}
TCP_HANDLER_END();

THREAD(send_value)
counter ++;
WAIT(1)
THREAD_END(send_value)

ON STARTUP DO
PORTD |= _BV(PORTD2);
DDRD &= ~_BV(DDD2);

_EIMSK |= _BV(INT0);
_EICRA |= _BV(ISC01);


TCP_CONNECT(xxx.xxx.xxx.xxx, yyyy, message_handler);
// (IP, Port, Handler)

THREAD_START(send_value)
END

CONTROL_END
//#############################################
ISR(INT0_vect)
{
pc_counter ++;
}


-------------------------

_______________________________________________
Ethersex-devel mailing list
[email protected]
https://list.zerties.org/cgi-bin/mailman/listinfo/ethersex-devel

Antwort per Email an