Hallo Janvp,
puuuh, da hast Du zu Beginn gleich ein gewaltiges Projekt eröffnet. Die gesamte Wire-Library von Arduino, fast komplett ...!
Würde mich freuen wenn das funktioniert!!
Da habe ich aber auch eine gewaltige Menge von Fragen:
1) Funktioniert denn die reine C Lösung der Wire-Library von Arduino? D.h.:
1a) Hast Du das schon in der Arduino IDE probiert?
1b) Und gegen den NXT laufen sehen?
2) Welches Memorymodel von HaikuVM nutzt Du 16/32 oder 32/64? (Hast Du Dich da eingelesen auf der HaikuVM Page?)
Denn ich sehe da in Deinem Code: int TWI_FREQ = 100000;
(Das passt nicht in einen int16 falls 16/32 !!!)
3) Hast Du Erfahrung mit Interruptprogrammierung?
Denn Erfahrene schreiben eigentlich: volatile uint8_t newSignal = 0;
4) Geht es nicht auch ganz ohne Interrupt (denn Threads machen's möglich) also ohne setzen von TWIE (und damit auch ohne JNI Code)? Einfach das Bit in der run()-Schleife direkt testen.
Code:
if ( (TWCR & _BV(TWINT)) != 0 ) { SIGNAL(); };
(Hierbei nicht vergessen TWINT wieder zurück zu setzen.)
5) Kosmetik: Ich würde twi nicht von Thread ableiten sondern so schreiben:
Code:
public class twi implements Runnable, SlaveRxEvent, SlaveTxEvent{
...
Thread th = new Thread(this);
...
}
6) Ganz wichtig: Welche Version von HaikuVM nutzt Du?
Lesezeichen