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