www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DIP204-4 mit Hardware-SPI (ATmega128)


Autor: Martin M. (martin69)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
!!! SORRY MUSS DIP-204-4 HEISSEN !!!


Hallo,

ich versuche seit 2 Tagen ein Display DIP204-4 mit Hardware-SPI
(ATmega128) in Betrieb zu nehmen. Ich habe zwar schon etliche Berichte
über das Display hier und über Google gelesen, aber irgend wie komme ich
gerade nicht mehr weiter....

* Lötbrücke am Display ist auf SPI umgelötet
* Kontrast mit externem Poti ist eingestellt
* Displaybeleuchtung ist eingeschaltet
* SPI-Takt ist 230 kHz (mit Oszi überprüft)
* Reset (low) ist 25 ms lang (mit Oszi überprüft)
* Zeit zwischen den Befehlen ist 2ms (wird mit Zähler gemacht, der im
1ms-Interrupt auf Null zurück zählt - mit Oszi überprüft)

Hier die Inhalte des SPI-Registers SPCR:
* SPIE = 0
* SPE = 1
* DORD = 1
* MSTR = 1
* CPOL = 1
* CPHA = 1
* SPR1 = 1
* SPR0 = 0

Ich habe schon alle möglichen Initialisierungen probiert (die vom
Datenblatt des KS0073, welche vom Internet, Initialisierung 3 x
gesendet, ...) aber auf dem Display wird kein Testbuchstabe angezeigt.
Keine Ahnung warum.

Die SPI-Signale sehen mit dem Oszi gut aus. Auch die Reihenfolge der
Daten ist korrekt (mit Oszi üerprüft).

Die 2ms Wartezeit zwischen den Bytes sollte ja kein Problem darstellen,
oder?

Ich habe mal den Quellcode angehängt. Ich hoffe es hat jemand eine gute
Idee....

Autor: ... ... (docean) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat das Ding kein CS (Chip-Select)?

Wenn doch wie wird der angesteuert?

Autor: Martin M. (martin69)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
CS wird in der Funktion "SPI_master_transmit" geschaltet. habe es aber
auch schon versucht, dauerhaft auf Low zu legen. Hat leider nichts
gebracht!

Autor: Torben (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schau Dir mal das Beispiel in der Codesammlung an.

Autor: Martin M. (martin69)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Torben:
hab ich schon gemacht und bin nicht weiter gekommen. Irgend etwas muß 
ich übersehen haben...

Autor: Torben (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm, ich sehe Unterschiede in der Initalisierung und jeweils CMD, DATA 
Startbyte.

Ich kenne die Register nicht aus dem Kopf, aber änder die mal ab zum 
testen.

Arbeitet dein Mirocontroller wirklich mit 1kHz Takt, weil sonst deine 
Warteschleifen nicht die nötige Zeit abarbeitet. Einige Befehle 
benötigen gewisse Ausführungszeiten (Ausführungszeiten stehen im 
Datenblatt).

Sollte dein /CS Pin immer auf Low Pegel liegen musste gerne mal das 
ganze System reseten. Nachdem du den /CS Port auf Low Pegel hast 
solltest Du eine kurze Pause einfuegen.

Autor: Martin M. (martin69)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das Problem ist gelöst! Das Display zeigt endlich einen Test-Text an!

Ich habe im Internet noch einen weitern C-Code gefunden, mit dem ich 
dann das Problem lokalisieren konnte:

1. das Startybte war falsch. Da es vom Low-Byte ausgehend gesendet wird, 
muß es "spiegelverkehrt" definiert gewesen.

2. das /CS (Slave select) wurde nach jedem Byte auf High geschaltet. Das 
muß die ganze Zeit anliegen, bis die 3 Byte (Startbyte + 2 x Datenbyte) 
gesendet sind.

Autor: Marcel K. (viewer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Martin,
ich habe leider gerade einen gleichen Tread aufgemacht. Habe aber deinen 
Tread in der Suche vorher nicht gefunden :o(
Eine Frage zum CS!! Kann man das CS nicht auch auf Masse legen? Kannst 
du das mal probieren?
Gruß Marcel

Autor: Martin M. (martin69)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn man nur das Display am SPI-Bus hat, dann schon. Ich betreibe daran 
aber zukünftig noch eine SD-Karte.

Ich glaube die Initialisierung habe ich auch etwas geändert. Kann es 
aber gerade nicht genau sagen wie, da meine SD-Karte etwas spinnt, auf 
der ich die Daten von meinem Entwicklungsrechner kopiert habe.

Den C-Code habe ich bei www.avrfreaks.net gefunden.

Autor: Marcel K. (viewer)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Noch eine Frage,
sieht dein SOF auch so aus wie auf meinem Oszi-Bild?

5x 1 dann 3x 0.

Danke für deine Antwort!!

Autor: Martin M. (martin69)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier Auszüge aus: 
http://www.avrfreaks.net/index.php?name=PNphpBB2&f...

#define COMMAND 0b00011111  // Command start byte
#define WRITE_DATA 0b01011111   // Write Data start byte

=> 5xHigh und 3xLow wäre als Startbyte für die Kommandos OK.
Schau Dir mal den Quellcode auf der Seite der AVR-Freaks an, dann siehst 
Du auch, mit welcher Initialisierung das Ganze gehen muß... Bei mir hat 
es zumindest geklappt.

Wie hoch ist die SPI-Taktfrequenz? Sieht nach 1MHz aus. Ist laut 
Datenblatt glaub erlaubt, ich würde diese mal zum Testen reduzieren.

Autor: Marcel K. (viewer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Super, danke erst mal für die Hilfe!!!!!!!!

Werde mir die Seite ma reinziehen :)

Dir viel Glück beim Fehlersuchen mit der SD Karte gg

Grüße,
Marcel

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.