Servus Leute!! Vielleicht kann einer von euch uns bei unserem Dilemma weiterhelfen. Und zwar haben wir einen ADC am SPI1 hängen und einen temp. Sensor am SPI2. Als wir uns mit dem SPI2 beschäftigten, haben wir alles einwandfrei umgesetzt. Alle Pegel mit einem Logic Analyser überprüft usw. Nun haben wir heute die ganze Zeit versucht den ADC aus zu lesen. Das Kuriose dabei ist, dass wir genau so logisch und hand in hand mit den Datenblättern vorangegangen sind, aber es funktioniert nicht. Nun beschreibe ich dsa mal genauer. Der ADC hat 2 Kanäle, die er uns wandeln soll. Wir teilen ihm mit, welchen er uns wandeln soll, und beim nächsten Wandeln, übernimmt er die Einstellung und macht es. SO, nun haben wir alle Pegel mit dem logic Analyser geprüft und unsere Nachricht kommt beim AD Wandler an. Der reagiert auch folgerichtig auf unseren Code und sendet auch die Spannungswerte korrekt gewandelt (abweichung ab der 4. Kommastele). Dies haben wir anhand der Takt-Flanken und der D-Out-Nachricht vom Wandler selbst entschlüsselt, bzw. nach gerechnet, was er da eigentlich sendet. ABER, obwohl die Daten beim PIN 26, RP6 also, anliegen, steht im SPI1BUF nur 0x0000 drin. OBWOHL das Flag, welches besagt, dass die Daten empfangen wurden, auch gesetzt wird. Sonst würden wir ja die While Schleife nie verlassen können. Was kann das sein??? Sind heute schier verzweifelt. Nochmal: Die DAten liegen am PIN 26 an (sehen wir am LA), Die Daten werden auch empfangen, sind aber alle gleich 0x0000. Viele Grüße, Roman
>Nochmal: Die DAten liegen am PIN 26 an (sehen wir am LA), Die Daten >werden auch empfangen, sind aber alle gleich 0x0000. Dann werden sie nicht korrekt empfangen. So einfach ist das. Check deinen Code. Da ist ein Fehler drin. Richtiger SPI Mode gewählt?
2 grundlegende Probleme: a) bei SPI kann der Slave nicht aktiv senden, er kann nur Antworten b) egal ob der PIC nun richtig konfiguriert ist oder nicht, es gilt Punkt a) und damit ist 0x0000 gültig. d.h.: Erstmal die PPS Konfiguration überprüfen, die TRIS Register nachprüfen (Pins die per PPS konfiguriert werden sollen müssen auf 1 stehen), die Analog-Register nachprüfen (der Pin muss auf Digital stehen!). Rein gefühlsmäßig würde ich auf die Analog-Konfiguration tippen, der Pin ist nämlich analogfähig :) Viel Erfolg.
Hallo Holger, so dämlich können wir doch unmöglich sein... :-( Wir warten bis die Daten empfangen wurden in der while schleife, dann lesen wir den aus und da stehen nur nullen drin. Was genau meinst du mit dem SPI Mode? Wir verwenden den 16 Bit Mode, der AD-Wandler schickt uns 12 Bits zu. Meinst du den Pegel bei LOW und Pegel bei HIGH? Denke schon, dass es richtig ist. Aus dem ADC Datenblatt sieht man die idle pegel, entsprechend haben wir es konfiguriert. Kann es irgendwie mit den PORT-Einstellungen des PICs selbst nicht passen vielleicht? Das er den PIN immer auf low hällt? Wir können wir das ändern? Bin grad voll müde und total schlapp. Vielen dank, Roman
Hi, jupp, denn es wird auch ins BUFFER was geschrieben, und dann der entsprechende Flag gesetzt. Was hat es mit dem Analogen Pin auf sich und wo schalte ich das um? Finds irgendwie nicht :-( Wir hatten auch dann RB36 gemappt, und das selbe REsultat. Ist der auch analog? Grüße, Roman
> Register ANSEL und ANSELH
Pardon, war im falschen Datenblatt (habe gerade 3 Stück geöffnet)
-> AD1PCFGl und AD1PCFGH
JeA!! ALso AD1PCFGbits.PCFG6=1; war die lösung. --> Den Pin auf Digital umschalten. Danke sehr, Roman
Hallo Leute!! Also nach dem fast perfektem Feinschliff können wir endlich unsere Daten am bildschirm ausgeben, aber das nächste Problem lies nicht lange auf sich warten. Kann uns einer sagen, wie wir ohne "POW" und "SQRT" aus der math.h solche Aufgaben wie: hoch 2/7 usw. rechnen können??? pow rundet abartigst. Hat da einer einen Rat? Grüße, Roman
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.