Hallo zusammen,
ich habe eine Swisscom Betty und musste feststellen, dass boop nur teilweise läuft. Das Logo und die Zeit werden angezeigt aber sonst geht nichts mehr.
Folgende Unterschiede habe ich bis jetzt rausgefunden:
- Der Print ist Revision V2.0
- Die FlashRoms sind vom Type EN29LV400AB-70TCP
- Das Keymapping ist unterschiedlich
Die Zuordnung der Keys habe ich mit dem Ohmmeter ausgetüftelt und in einer Tabelle zusammengefasst:
Gleich sind:
- Display Ansteuerung
- IR Diode
- Sound
Den RF Transceiver CC1100 habe ich noch nicht getest. Er ist nicht auf dem Mainboard sondern als Huckepack Modul auf dem Mainboard.
Ob Boop nach dem Ändern der Port Zuordnunggen läuft kann ich noch nicht sagen, da ich in der Source
Keyirq.c noch nicht verstehe warum da FIOPIN0, IOPIN3 und IOSET2 verwendet wird. Meine Keyroutine ist einfacher und sieht so aus:
#include "keyboard.h"
#include "lpc2220.h"
unsigned char Rows[6]; // the pressed Keys ar stored here multiple Keys ar possibe
unsigned int keytest;
unsigned char help;
void initKeys(void)
{
IODIR1=((1<<16)|(1<<17)|(1<<18)|(1<<19)|(1<<21)|(1<<22)); // 1=output
IOSET1=((1<<16)|(1<<17)|(1<<18)|(1<<19)|(1<<21)|(1<<22)); // set to 1
keys[0] = 0;
keys[1] = 0;
}
void scanKeys(void)
{
for (help=0;help<4;help++) //scan coluns P1.16 to P1.19
{
IOSET1=((1<<16)|(1<<17)|(1<<18)|(1<<19)|(1<<21)|(1<<22)); // 1
keytest=IOPIN2&0x01fe0000; // read rows
IOCLR1=(1<<(16+help)); // set low to scan
keytest^=IOPIN2&0x01fe0000;// read rows and compare with previously read
// Key scan algorithm: pressed Key will read as 1 after xor
keys[help]=(unsigned char)(keytest>>18);
}
for (help=4;help<6;help++) //No. 20 will skipped
{
IOSET1=((1<<16)|(1<<17)|(1<<18)|(1<<19)|(1<<21)|(1<<22)); // 1
keytest=IOPIN2&0x01fe0000;
IOCLR1=(1<<(17+help));
keytest^=IOPIN2&0x01fe0000;
keys[help]=(unsigned char)(keytest>>18);
}
}
Mehr Beschreibung im Code würde allen helfen und Zeit sparen.
Danke famos