mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wieder mal ein Problem.


Autor: TheMason (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: TheMason (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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 ... :-(

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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.

Autor: TheMason (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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 ....

Autor: TheMason (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.