Hallo Leute, ich versuche nun schon seit stunden das SPI Interface des LPC2106 ans rennen zu bringen. Vergeblich ... Hier die initialisierung : void vSPIInit (void) { SPCR = 0x00; SPCCR = 8; SPCR = 0x20; PINSEL0 &= ~0x3f00; PINSEL0 |= 0x1500; IODIR |= 0x100; IOSET = 0x100; } und hier die Sende-Routine : UCHAR vSPITransceiveByte (UCHAR ucData) { UCHAR ucTemp; SPDR = ucData; while (!(SPSR & SPSR_SPIF)); ucTemp = SPDR; return ucTemp; } Es passiert nix auf deb Leitungen (weder Clock, noch Data-Out). Hat jemand eine Idee ? Gruß Rene
Versuchs doch mal so: SPCR = 0x00; PINSEL0 &= ~0x3f00; PINSEL0 |= 0x1500; IODIR |= 0x100; IOSET = 0x100; SPCCR = 8; SPCR = 0x20; SPI Modul erst einschalten wenn alle Einstellungen getan sind.
hallo holger, danke für den tip. aber es will noch nicht so recht klappen. ich kann im moment nur per multimeter den clock "feststellen", sollte aber in einer endlosschleife vSPITransceiveData aber trotzdem messbar sein. ich messe aber an sck und mosi immer 0V statt etwa 1.6V. gibt es irgendeine möglichkeit herauszufinden ob ports kaputt sind ?! ich habe langsam diesen verdacht, denn ich habe für die CS leitung vorher P0.3 verwenden wollen. es hat sich aber absolut gar nichts auf dieser leitung tun wollen (ich benutze kein I2C, daran kann es wohl nicht liegen, und wenn mir das datenblatt sagt das der port reset-mässig als gpio definiert wird, gehe ich davon aus das man mit IODIR und IOSET/IOCLR etwas port-gezappel sehen/messen müsste). verwende ich hingegen P0.8 funktioniert es sofort. irgendwie merkwürdig ... :-(
>ich kann im moment nur per multimeter den clock "feststellen", sollte >aber in einer endlosschleife vSPITransceiveData aber trotzdem messbar >sein. >ich messe aber an sck und mosi immer 0V statt etwa 1.6V. Mit einem Multimeter misst du bei z.B. 7.5MHz SPI Speed gar nichts vernünftiges mehr an SCK oder MOSI. Dafür brauchst du ein Osci. >gibt es irgendeine möglichkeit herauszufinden ob ports kaputt sind ?! Ja, schreib ein Programm das diesen Port nur ganz langsam im 1-5 Sekunden Takt toggelt.
>Mit einem Multimeter misst du bei z.B. 7.5MHz SPI Speed >gar nichts vernünftiges mehr an SCK oder MOSI. Dafür >brauchst du ein Osci. wenn ich aber doch in einer endlosschleife permanent daten ausgebe (und sei es nur 0xff oder 0x55) dann muß man doch etwas richtung 50% von vcc messen, da die meiste zeit ja zwischen 0 und 1 getoggelt wird. klar ist ein scope besser, aber das habe ich leider momentan nicht hier :-( auf den tipp mit den ports einzeln toggeln hätte ich auch selbst drauf kommen können :-(( *grmpf. danke nochmal fürs wachrütteln ....
also die port pins habe ich mal getestet. es scheint so als wenn P0.2 und P0.3 tatsächlich kaputt sind. nach dem der IODIR auf ausgang gesetzt wurde und mit IOSET alle pins auf 1 gesetzt waren, waren diese beiden pins 0. scheinen also kaputt zu sein (falls ich nicht noch irgendetwas vergessen habe zu initialisieren, sollte aber nicht) ... der spi tuts allerdings immer noch nicht (werde aber sobald ich ein scope da habe es nochmal testen). solange muß ich mich dann wohl mit einem software spi behelfen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.