www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Max6675 & ATmega16 - bekomm ihn nicht zum laufen


Autor: fhMaGeek (Gast)
Datum:
Angehängte Dateien:

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

Autor: Falk Brunner (falk)
Datum:

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

Autor: fhMaGeek (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
confused
Sollte schon als Ausgang definiert sein:

DDRB=0xB0;

Habe jetzt SS spaßeshalber noch als ChipSelect probiert, bringt auch 
keine Änderung.

Gruß
Max

Autor: Dietmar E (Gast)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:

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

Autor: fhMaGeek (Gast)
Datum:

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

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.