Hallo! Ich quäle mich schon seit Wochen herum und bekomme einfach keine brauchbaren Daten ausgelesen. Ich bin nun soweit, dass ich den Max6675 direkt an den µC gelötet habe: Max -> AT16 ---------------- SO -> MISO SCK -> SCK /CS -> PORTB.1 ATmega läuft mit 8MHz und Entwicklungsumgebung ist CodeWizardAVR V1.25.5. Die gelesenen Bits lasse ich dann zu Diagnosezwecke auf einem LCD ausgeben. Ergebnisse sind momentan endweder lauter einsen oder lauter nullen. Den Zustand kann ich lustiger weise durch herumfingern am MISO Pin beeinflussen (0/1 oder nen flimmern zwischen beidem). Ich bin inzwischen mit meinem Latein am Ende, gibts da noch irgendetw. was ich übersehe? Irgendwelche Fuses die sich negativ auswirken können? Oder ist eine weitere Beschaltung notwendig um für saubere signalpegel auf den Datenleitungen zu sorgen? Beispielquellcode liegt bei. Vielen Dank schon einmal für eure Hilfe! Max M.
@ fhMaGeek (Gast) >SO -> MISO >SCK -> SCK >/CS -> PORTB.1 Und was ist mit SS am AVR?. Das MUSS als Ausgang geschaltet werden, wenn das SPI-Modul verwendet wird. AVR-Tutorial: Schieberegister MfG Falk
confused Sollte schon als Ausgang definiert sein: DDRB=0xB0; Habe jetzt SS spaßeshalber noch als ChipSelect probiert, bringt auch keine Änderung. Gruß Max
Du musst die Select-Leitung auf High ziehen, 220ms warten (!), dann auf Low ziehen. Das aktiviert den SPI-Ausgang des IC. Erst dann kannst Du die Daten abholen. Danach Select wieder auf High. Ob man für ein IC, das 4 Werte pro Sekunde liefert, wirklich Hardware-SPI machen muss, sei mal dahingestellt (der MISO-Pin ist damit unnötigerweise geopfert). PS: hat zufällig jemand MAX6675-Samples übrig?
fhMaGeek wrote: > /CS -> PORTB.1 > DDRB=0xB0; Also DDRB.1 = 0 (Eingang) !!! /CS sollte aber schon Ausgang sein. > Ergebnisse sind momentan endweder lauter einsen oder lauter nullen. Den > Zustand kann ich lustiger weise durch herumfingern am MISO Pin > beeinflussen (0/1 oder nen flimmern zwischen beidem). Daß ohne /CS der MISO floated, is ja wohl klar wie Kloßbrühe. Peter
> 220ms warten (!)
ARGH Das wars!
Hatte bei meinen Früheren Projekten immer über Timer alle paar Sekunden
den Wert aktuallisiert
Vielen lieben Dank für den Tipp! Hatte es schonmal mit einer Verzögerung
von 100ms probiert, aber das war wohl knapp daneben...
Gruß!
Max
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.