MAX7456 SPI - Ansteuerungsprobleme (AVR)

OP #1040862
Lesenswert?

Hallo Leute,

Hab leider schon wieder ein Problem:

Versuche immer noch den Max7456 über SPI anzusteuern
http://datasheets.maxim-ic.com/en/ds/MAX7456.pdf

Verwende die in den Applicantion Notes vorgestellten Codebeispiele:
http://www.maxim-ic.com/appnotes.cfm/appnote_number/4184

Schaffe es aber nicht einmal ein Register des MAX's auszulesen. Bekomme 
immer 0 zurrück, auch wenn default-mäßig was anderes im Register drinnen 
stehen sollte.

Im Anghang hab ich den Code. Emuliere die SPI auf dem PORTD des MEGA16 
(Pinbelegung wie hardware SPI nur auf Pord D).

Außerdem hab ich zwischen den PORT-Zugriffen ein delay eingefügt, damit 
die SPI langsamer ist.

Verwede CodeVisoin AVR + MEGA 16.

Was könnte ich übersehen haben? Sind sie delays zulässig?

(Code im Anhang)

MFG
J.K
Angehängte Dateien:
OP #1040958
Lesenswert?

Stimmt, dummer Fehler.

meist kommt noch 0 zurrück, manchmal aber auc 64d.

ist schon mal ein Anfang, wahrscheinlch passt das was mit den delays 
nicht

muss ich mir noch genauer anschaun

Danke soweit.

Ohne delay funktionierts auch nicht besser.

wenn jemand ne idee hat bitte posten.

mfg
J.K
OP #1040978
Lesenswert?

bin grad wieder am rumprobieren.

rufe die funktio jetzt in einfer schleife auf.

in ca. 5% der fälle wird der wert richtig erkannt,
in ca. 5% der fälle wirden einelne bits richtig erkannt.
(ohne delay, mit delay_us(10) nicht besser)

kann das an zu langen leitungne liegen ? 10 cm? (mein Verdacht)

hilft das delay da was? soll ich dar erhöhen. Im Prinzip will ich ja 
eine niedrigere SPI Frequenz.

MFG
J.K
OP #1041794
Lesenswert?

So,

hab jetzt die SPI Frequenz auf ein Minimum reduziert (bei jedem 
tastendruck ein takt)

und beobachte mit dem Multimeter den Vorgang.

Der Chip gibt wirklich immer 0 zurrück. nur manchmal ein HIGH.

Wenn der lesevorgang abeschlossen ist, dann wenn ChipSelect wieder auf 1 
geht, kommt ein kurzer Impuls auf der MISO Leitung, was immmer der zu 
bedeuten hat ?

Schön langsam glaub ich, dass der IC ne Macke hat.

Im Datenblatt ist kein TimeOut angegeben. Kann es sein, dass ich dem 
Chip zu langsam bin, beim Takten?

MFG
J.K

(aktueller code im Anhang)
OP #1042774
Lesenswert?

Ich hab mal unabsichtlich MISO und MOSI vertauscht.

Kann es sein, dass ich dabei den Ausgang des MAX beleidigt habe? (Tipp 
mal auf ja :-)

Gibt es das Verhalten bei einem kaputten Transistor (wahrscheinlich 
MOSFET-Gegentaktstufe), dass sie nur manchmal schaltet ?

MFG
J.K
#1049058
Lesenswert?

Hallo J.K.,

versetze mal deinen Code zurück in den Originalcode (ohne Delays etc.)
der SPI des MAX verträgt bis zu 10 MHz...

Dann füge mal die folgende Zeilen für die Intialisierung und die 
Hauptschleife ein und messe mit einem Oszi am SDOUT des MAX die 
zurückkommenden Daten (wenn du einen Zweikanaloszi hast kannst du mit 
Kanal 1 auf CS triggern und auf Kanal 2 SDOUT wunderbar sehen)!


//OSD Initialisierung
delay_ms(200);
SPI_CS = 1;                                 // /CS high
SPI_CK = 0;                                 // CK low
SPI_MOSI = 0;                               // MOSI low
spiWriteReg(VIDEO_MODE_0_WRITE,0x02);       // Reset
delay_ms(100);

//Hauptschleife
while(1)
{
  delay_us(1);
  daten = spiReadReg(0xA0);                 //read Video Mode Register
}
}


Gruss
Wolfgang
#1235962
Lesenswert?

Hallo,

auch wenn der Thread schon eine kleine Ewigkeit alt ist, möchte ich mein 
Wissen nicht vorenthalten.
Der MAX7456 ist per Default im 16-Bit Modus (DMM[6] = 0).
Das ist durchaus ungewöhnlich aber wenn die Geschwindigkeit wichtiger 
ist als die Möglichkeit einer alternierenden Attributumschaltung des 
Charactersstreams wiederum verständlich.
OP #1500891
Lesenswert?

Falls jemand mal googlet und hierher kommt:

Hab damals das Projekt aufgegeben.

Jetzt aber wieder gestartet, mit neuem Hadware-Aufbau. Zwischen den µC 
Pins und dem Max7456 hab ich jetzt 1k Widerstände, der Rest ist gleich 
geblieben (außer das ich am µc einen anderen Port verwende), wenn auch 
sauber auf eine Lochraster aufgelötet.

Das lesen von Registern funktioniert jetzt mit dem IC von damals. Ob ich 
jetzt am TV was anzeigen kann weiß ich noch nicht, bin noch in der 
Entwicklungsphase.

MfG
j:k
OP #1501016
Lesenswert?

Hehe, gibt es doch wieder ein Problem, bei dem ich nicht weiterkomme.

Und zwar: Ich habe auf bestimmte Register keinen Zugriff, da diese 
gesperrt sind, und der Chip "sagt", dass er sich noch im Reset-zustand 
befindet (Obwohl ich auf gewisse, nicht gesperrte Zugriff habe).

Und zwar: Lese ich das Statusregister aus (STAT) zeit dieses, das der 
Chip noch im Reset mode ist, außerdem ist der "Character Memory" belegt.

Anmerkung zur Schaltung: Da ich kenen 27Mhz Grundschwingungsquarz 
erhalten habe, verwende ich einen, der auf der 3. Oberschwingung 
schwingt. Damals (Nov. 08) hab ich auch den Ausgang des Oszilators 
gemessen, und dieser hat genau mit 27 MHz geschwungen. Kann das sein, 
dass er das jetzt nicht mehr tut, sondern langsamer? Leider besitzte ich 
kein Oszi, und kann das nicht nochmals messen.
Mein Gedanke war, die Ausgangsfrequenz als Eingang von einem µC zu 
verwenden, und damit auf 1 Hz runterzuteilen. Ist die Periodendauer 
länger, schwingt der Quarz nur auf der Grundschwingung.
Das Problem ist, dass der Mega16 nur auf 16 MHz "zugelassen" ist, und 
dieser wohl 27 nicht schaffen wird. Weiters hab ich noch einen 644er, 
der mit 20 Mhz zertifiziert ist. Sind da die Erfolgsaussichten größer?

MfG
j:k

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren