Forum: Mikrocontroller und Digitale Elektronik GLCD sw spi zu hw spi ändern


von Til M. (til_mey)


Lesenswert?

Hallo Leute,

ich habe ein LCD mit einem St7920, ich betreibe es mit der u8g library 
und einem AVR ATmega3250. Es funktioniert so weit so gut allerdings habe 
ich ca. 1 FPS, das soll aber besser werden, wenn man nicht den software 
spi sondern den hardware spi verwendet. Aber wie mache ich das?

Ich habe mal
u8g_InitSPI(&u8g, &u8g_dev_st7920_128x64_4x_sw_spi, PN(1,5), PN(1,3), 
PN(1,4), U8G_PIN_NONE,U8G_PIN_NONE);

zu

u8g_InitSPI(&u8g, &u8g_dev_st7920_128x64_4x_hw_spi, PN(1, 5), PN(1, 3), 
PN(1, 4), U8G_PIN_NONE, U8G_PIN_NONE);

geändert.
Die Pins habe ich alle so gelassen. Offenbar scheint das nicht alles zu 
sein oder ich habe sogar was falsch gemahct, denn es geht gar nichts.
Hat jemand eine Ahnung was ich da machen muss?

: Bearbeitet durch User
von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Til M. schrieb:
> das soll aber besser werden, wenn man nicht den software spi sondern
> den hardware spi verwendet. Aber wie mache ich das?
Zuerst musst du mal das Diplay an den richtigen Pins angeschlossen 
haben...

> Ich habe mal  xxx  zu  yyy  geändert.
Und was ist dann passiert? Heißt "gar nichts", dass das Programm nicht 
kompiliert wird? Oder dass der Compiler zwar tut, aber nicht mal die 
"still alive" LED mehr blinkt?
(Wie, du hast gar keine solche LED? Schade...)

Und was sagt der Debugger?

: Bearbeitet durch Moderator
von Til M. (til_mey)


Lesenswert?

Danke für deine Antwort.

Bei Verwendung des software spi habe ich die Pins richtig angeschlossen. 
Sonst würde es ja nicht funktionieren. Was ich nicht genau weiss, ist ob 
die Pins im hardware spi gleich bleiben, oder verändern die sich?

Naja was dann passiert ist, ist, dass das was vorher funktionierte nicht 
mehr funktioniert. Bzw. es zeigt nichts mehr an. Der Debugger sagt gar 
nichts.

: Bearbeitet durch User
von Karl H. (kbuchegg)


Lesenswert?

Til M. schrieb:
> Danke für deine Antwort.
>
> Bei Verwendung des software spi habe ich die Pins richtig angeschlossen.
> Sonst würde es ja nicht funktionieren. Was ich nicht genau weiss, ist ob
> die Pins im hardware spi gleich bleiben, oder verändern die sich?

Das kommt drauf an, welche Pins du genommen hast.
Bei SW-SPI kannst du dir die aussuchen. Bei HW-SPI sind die dir 
vorgegeben.

Auch im Arduino Zeitalter ist das Datenblatt des verwendetn Prozessors 
immer noch dein Freund.

von Til M. (til_mey)


Lesenswert?

Danke für deine Antwort.

Muss ich nun also die Pins so initialisieren, dass sie mit dem des uC 
übereinstimmen?  z.B. wenn MOSI am PB2 ist, muss ich das im Programm 
berücksichtigen und kann nicht selber entscheiden, habe ich das richtig 
verstanden?

von dummy (Gast)


Lesenswert?

>Muss ich nun also die Pins so initialisieren, dass sie mit dem des uC
>übereinstimmen?

Gegenfrage: Welchen Sinn macht es andere Pins zu nehmen?

von Til M. (til_mey)


Lesenswert?

Logischer Weise keinen. Wenn ich diese nun initialisiere, habe ich an 
den Pins keine Spannung. Während ich bei software spi an allen 
verschiedene Taktsignale hatte, habe ich bei hardware spi an keinem eine 
Spannung. Wieso ist das so?

Ehrlich gesagt, ich habe nicht sehr viel Ahnung und eine detailierte 
Antwort wäre echt toll.

Edit:

Was ich noch hinzufügen wollte, in der Library wird von den Pins: SCK, 
MOSI, CS, A0 und Reset gesprochen. Mein uC hat aber SCK, MOSI, MISO und 
SS. Welcher ist jetzt welcher?

: Bearbeitet durch User
von Rudolph R. (rudolph)


Lesenswert?

Til M. schrieb:
> Es funktioniert so weit so gut allerdings habe
> ich ca. 1 FPS, das soll aber besser werden, wenn man nicht den software
> spi sondern den hardware spi verwendet.

Falls das an dem reinen Transfer liegt und nicht daran, dass der 
Controller die ganze Zeit damit beschäftigt ist an dem Bild rum zu 
rechnen.
128x64 ist noch ziemlich harmlos von der reinen Datenmenge her.

Til M. schrieb:
> SCK, MOSI, CS, A0 und Reset gesprochen.
> Mein uC hat aber SCK, MOSI, MISO und SS. Welcher ist jetzt welcher?

SCK -> SCK
MOSI -> MOSI
CS -> I/O
A0 -> I/O
Reset -> I/O

SS ist Slave-Select, den kann man auch als Chip-Select Ausgang benutzen, 
der muss sogar generell als Ausgang benutzt werden wenn man die SPI Unit 
im Master-Modus benutzen möchte, der könnte aber genau so gut auch die 
Reset-Leitung vom Display bedienen.

: Bearbeitet durch User
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
Noch kein Account? Hier anmelden.