www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik C167 Port auslesen


Autor: sneube (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich habe mit dem Controller C167 folgendes Problem:
Ein SPI Bauteil gibt einen binären Datenstrom aus. Diesen Daten möchte 
ich mit der printf - Funktion anzeigen.
Wenn ich mir den Port auf dem Oszilloskop anschaue, sehe ich einen 
Datenstrom der für `1` eine Amplitude von 3V hat und für '0' genau 0V 
anzeigt.
Es scheint aber so, dass der Controller diesen Pegel nicht bemerkt, da 
ich immer  '0' erhalte.

Vielleicht kann mir jemand helfen
grüße

Autor: Franko Phil (sgssn)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

der C167 ist also in dem Fall nicht SPI-Master. Hast du den 167er 
entsprechend als SPI-Slave konfiguriert ?

Gerhard

Autor: sneube (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Gerhard,
der C167 hat keine echte SPI Schnittstelle.
Mein erster Versuch war es, das Bauteil mit der SSCON anzusprechen. Der 
Controller hat im Masterbetrieb gearbeitet. Das hat im Prinzip auch 
funkioniert, doch leider habe ich sehr unsaubere Pegel bekommen, obwohl 
ich Leitungstreiber davor geschaltet habe.

Jetzt versuche ich manuell den CLK, das CS und den Input zu setzen und 
der Ausgang sieht auf dem Oszilloskop ganz vielversprechend aus, ich 
kann aber leider den Pegel nicht anzeigen.

Autor: Franko Phil (sgssn)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Selbst wenn der C167 mit 5 Volt läuft, sollten 3 Volt für ein high 
reichen.
Aber was heisst "er hat unsauber gearbeitet" ? SPI kann ja auf positiven 
als auch auf der negativen Flanke triggern. Evtl passen C167 und  dein 
SPI-Bauteil nicht zusammen (falls man dies nicht auch einstellen kann). 
Wenn ich dich richtig verstehhe, simulierts du jetzt über digizale I/O's 
di SPI-Leitungen. Arbeitest du dann mit Interrupt, oder wie erkennst du 
den Clock ?
Ob der C167 generell 3 Volt als high erkennt, kannst duja auch statisch 
testen, indem du 3 Volt an einen solchen Eingang anlegst und den Port 
liest.

gerhard

Autor: sneube (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Gerhard,
Mit der SSCON war das so:
mit unsauber gearbeitet meine ich, dass ich keine anständigen Pegel 
bekomme. Manchmal schwanken sie um 1,5V rum und manchmal um 5V. Der 
Controller hat dann nur die 5V Pegel erkannt und diese können laut 
Datenblatt des Bauteils nicht stimmen.

Ich simuliere jetzt die digitalen Leitungen. Ich arbeite ohne Interrupt, 
da ich in das SPI - Bauteil nur einen 16 Bit Strom einlesen muss, danach 
soll das Bauteil Werte ausgeben. Das ist zwar eine nicht so schöne 
Lösung wie mit SSCON, aber ich bekomme jetzt wenigstens vernünftige 
Pegel.

Ich habe dir mal den Quellcode kopiert.
************************************************************************ 
**
while(1){

   P3_13 = 0;                       // CLK
   warte();
   P7_0 = 0;                        // CS

   for(i=0;i<=16;i++){

   P3_13 = 1;       //clk high
  P2_0 = data_in[i];         //daten an Bauteil
    warte();
        P3_13 =0;         //Clk low
    data_gyro[i] = P7_1;        // Daten von Bauteil auf Port schreiben
  if (data_gyro[i]==1)
      printf("1");
    else{
    printf("0");
    }
  warte();
    }
    P7_0 = 1;
    data_in[0]=0;
}
************************************************************************ 
**

Bei data_in und data_gyro handelt es sich um int Felder mit der Größe 
16.
Der CLK hat laut Oszilloskop einen Pegel von 5V.
Leider kann ich nicht einmal diesen anzeigen, also scheint da 
grundsätzlich etwas falsch zu sein.

Grüße
Stefan

Autor: Daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also nach meinen erfahrungne müsste der c167 ab 2,5V einen hohen pegel 
an den digitalen io's klar erkennen... hatte da nie probleme...

wenn der pegel so unstabil ist, würden sich da nicht pullups aufdrängen?

Autor: sneube (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Daniel,
ich habe den Ausgang an einen Leitungstreiber, der den Pegel etwas 
verschönert.
Wie hast du denn die Pegel ausgegeben? Über printf?
Kann ich die Pull - UP Widerstände auch softwaremäßig setzen?

Was bei mir unschön ist, dass ich jetzt auf dem Oszilloskop ein schönes 
Bitmuster mit 3V sehe, ich es aber nicht ausgeben kann

Grüße
Stefan

Autor: sneube (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
mir ist noch etwas eingefallen.
Wäre es auch möglich, die Werte in ein Register zu schreiben und dieses 
dann auszulesen, so wie man es mit der SSCON machen würde?

Autor: Max Murks (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>der C167 hat keine echte SPI Schnittstelle.

Blödsinn, natürlich hat der C167 eine  Hardware-SPI (SSCON). Der Pegel 
ist wohl unsauber, da Output gegen Output kämpfen muss. Der stärkere 
gewinnt..

Hatte noch nie Probleme mit der C167-SPI (Slave oder Master)

Autor: sneube (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Max,
vielen Dank für deinen informativen Beitrag, jetzt ist alles klar.
Output kämpft gegen Output, warum ich da noch nicht drauf gekommen 
bin...

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.