Hello, Guest the thread was viewed31k times and contains 170 replies

last post from Vorph at the

LCD am sd2iec [EXPERTENRUNDE]

  • Wenn du das so machst, dass das Ergebnis noch compiliert und nichts anspringt was eigentlich nicht gemeint ist...

    Ich habe jetzt alle Punkte auskommentiert die auf DISPLAY_ADDRESS und DISPLAY_ERRORCHANNEL hindeuten. Sowohl im Hauptprogramm wie auch im LCD-Programm.
    Das Hauptprogramm läßt sich problemlos kompilieren.
    Nur wenn ich in der main.c vom LCD den Block:



    auskommentiere, bockt er.
    Die Fehlermeldung:


    Code
    1. D:\make\lcd-i2c>make
    2. MKDIR obj-m644
    3. CONF2H config
    4. CC encoder.c
    5. CC lcd.c
    6. CC main.c
    7. cc1.exe: warnings being treated as errors
    8. main.c: In function 'parse_display':
    9. main.c:288: error: implicit declaration of function 'set_part'
    10. make: *** [obj-m644/main.o] Error 1


    Kann ich diesen Teil auch problemlos wegkommentieren? (Ich denke der wird auch nur für die Partitionsanzeige benötigt)

    Code
    1. case DISPLAY_CURRENT_PART:
    2. set_part(data[1]+1);
    3. break;


    Denn dann läufts ohne Fehler durch.


    Andere Frage:
    Ist es möglich, den ATMega des Displays über den Bootloader des SD2IEC zu flashen?

  • main.c:288: error: implicit declaration of function 'set_part'


    Du hast die ganze Funktion auskommentiert und nicht nur den Teil in den geschweiften Klammern? Dann kann das natürlich nicht gehen weil später eine Funktion aufgerufen werden soll die gar nicht mehr existiert.


    Quote

    Ist es möglich, den ATMega des Displays über den Bootloader des SD2IEC zu flashen?


  • Dann kann das natürlich nicht gehen weil später eine Funktion aufgerufen werden soll die gar nicht mehr existiert.

    Schon klar. Wenn ich jetzt auch den Teil wegnehme der ja nur für die Partitionsanzeige genutzt wird wie ich denke:


    Code
    1. case DISPLAY_CURRENT_PART:
    2. set_part(data[1]+1);
    3. break;


    sollte das ja gut sein, oder?
    Sonst wird die Funktion set_part niergends verwendet.


    Wenn ich jetzt noch wüßte wie die FUSES zu setzen wären, könnte ich das Teil fast in Betrieb nehmen.
    Da ich da nicht weiterkomme, habe ich mir mal als Vorlage die Einstellungen für die Software von DRACO genommen:


    Check (Programmed, 0) = JTAGEN, SPIEN, EESAVE, BOOTSZ1, BOOTRST, BODLEVEL1, SUT0
    Uncheck (Unprogrammed, 1) = CLKDIV8, OCDEN, CKOUT, WDTON, BOOTSZ0, BODLEVEL2, BODLEVEL0, SUT1, CKSEL3, CKSEL2, CKSEL1,CKSEL0


    Ich hoffe das es damit hinhaut.


    Wie bringe ich das SD2IEC dazu die neue bin-Datei mittels dem Bootloader zu flashen? Einfach auf die SD und ins SD2IEC tuts nicht.

  • Habs jetzt mal ohne FUSES probiert.
    Da ich ja weder einen Taktgeber verwende noch irgendwas deaktivieren möchte.


    Hauptprogramm und LCD-Programm geflasht.
    Soweit wie ich denke richtig verdrahtet.


    Bekomme jedoch leider nur ein "Waiting for Data"
    Wo beginn ich jetzt mit der Fehlersuche?

  • Habs jetzt mal ohne FUSES probiert.
    Da ich ja weder einen Taktgeber verwende noch irgendwas deaktivieren möchte.


    Dann läuft der Display-AVR jetzt wahrscheinlich mit 1MHz, was zumindest laut Datenblatt einen maximalen I2C-Takt von ~62kHz ergibt. sd2iec sendet mit grob geschätzt 80kHz, es ist relativ wahrscheinlich dass sich die beiden Chips nicht verstehen.


    Auf was für einer Platine läuft eigentlich die sd2iec-Seite?

  • Dann läuft der Display-AVR jetzt wahrscheinlich mit 1MHz, was zumindest laut Datenblatt einen maximalen I2C-Takt von ~62kHz ergibt. sd2iec sendet mit grob geschätzt 80kHz, es ist relativ wahrscheinlich dass sich die beiden Chips nicht verstehen.


    Ok, das bedeutet ich sollte zumindest die FUSES für die Taktrate setzen?
    Was muß ich dafür im MyAVR ProgTool einstellen?
    Oder ist es gscheiter man hängt gleich einen Taktgeber zum ATMega dazu.


    Beim SD2IEC von Shadowolf ist übrigens folgendes eingestellt:
    Full Swing Oscillator; Start-up time: 16K CK # 4.1 ms; Crystal Osc.; fast rising power


    Kann ich diese Einstellung dann auch verwenden, wenn ich einen externen 8MHz Taktgeber dazuhänge??


    Hab einen Fehler gerade gefunden.
    Hatte die beiden Zeilen in der config vergessen:


    Code
    1. CONFIG_REMOTE_DISPLAY=y
    2. CONFIG_DISPLAY_BUFFER_SIZE=40


    Jetzt bekomme ich zwar eine Anzeige am Display, jedoch verhält sich das ganze sehr seltsam.
    SD2IEC reagiert bei einem LOAD"$",8 nicht und hängt sich anscheinend auf.
    Und am Display erscheint das Menü: "Change Directory" ...
    Kann aber mit dem Encoder nichts auswählen.
    Scheint sich alles zu erhängen. :)


    Ich verwende ein Shadowolf SD2IEC V1.2 das auf einem DTV betrieben wird, falls du das meinst.

  • Ok, ich habe jetzt einen 8MHz Quarz. (Den gleichen der auch auf der SD2IEC drauf ist) an den ATMega des Displays geschlossen und das Fusebit genauso wie beim SD2IEC gesetzt.


    Jetzt erscheint beim einschalten sofort das Displaymenü.
    Reagiert jedoch trotzdem auf nichts.
    Auch der Kartenzugriff funktioniert nicht mehr.

  • Ich verwende ein Shadowolf SD2IEC V1.2 das auf einem DTV betrieben wird, falls du das meinst.


    Ich mache mir leichte Sorgen über die Überlebenschances des AVRs darauf, falls der Display-AVR mit 5V laufen sollte... Ohne Pegelwandler wäre das auf den I2C-Datenleitungen zumindest unsauber (die Pullups verhindern, dass ein zu hoher Strom fliesst); die INTRQ-Leitung wird von Displayseite her aktiv getrieben und würde dann 5V auf den Eingang des mit 3V laufenden AVRs drücken. Ein Pegelwandler in allen drei Leitungen ist stark zu empfehlen, als ziemlich mieser Hack für kurze Tests am Wochenende könnte man in die INTRQ-Leitung einen Widerstand im Bereich von 5-10kOhm einfügen.



    Quote

    SD2IEC reagiert bei einem LOAD"$",8 nicht und hängt sich anscheinend auf.
    Und am Display erscheint das Menü: "Change Directory" ...


    Positiv: Die Kommunikation zwischen sd2iec und Display funktioniert, denn die Menueinträge werden von ersterem an letzteres gesendet. Allerdings sollte das Menu normalerweise erst auftauchen wenn der Benutzer den Encoder bewegt hat (oder dessen Taster betätigt) und die sd2iec-Seite ist (weil es einfacher zu programmieren ist) nicht vom C64 aus ansprechbar während darauf gewartet wird dass eine Menueingabe erfolgt.


    Quote

    Kann aber mit dem Encoder nichts auswählen.


    Zusammen mit dem vorherigen Punkt deutet das darauf hin, dass...


    Quote

    Fehlen noch FUSES?


    ...du die JTAGEN-Fuse umstellen solltest.

  • Quote

    Ich mache mir leichte Sorgen über die Überlebenschances des AVRs darauf, falls der Display-AVR mit 5V laufen sollte... Ohne Pegelwandler wäre das auf den I2C-Datenleitungen zumindest unsauber (die Pullups verhindern, dass ein zu hoher Strom fliesst); die INTRQ-Leitung wird von Displayseite her aktiv getrieben und würde dann 5V auf den Eingang des mit 3V laufenden AVRs drücken. Ein Pegelwandler in allen drei Leitungen ist stark zu empfehlen, als ziemlich mieser Hack für kurze Tests am Wochenende könnte man in die INTRQ-Leitung einen Widerstand im Bereich von 5-10kOhm einfügen.

    Da komm ich jetzt nicht ganz mit. Verträgt der AVR von der SD2IEC nur 3V an den Eingängen?


    Quote

    ...du die JTAGEN-Fuse umstellen solltest.

    Hat etwas bewirkt!
    Das Menü läßt sich nun mit dem Encoder bewegen.


    Jedoch:
    Springt er immer zum übernächsten Punkt. Also von Change Directory -> Store ...
    Zu dem dazwischen und auf Close komme ich gar nicht.
    Und der Taster des Encoders zeigt keine Funktion. Sollte er da nicht aus dem Menü springen?


    Der Zugriff auf die SD funktioniert weiterhin nicht ?!


    Den ersten AVR hab ich mir schon zerschossen glaub ich. Hab die FUSES gesetzt und gesagt brennen, aber keine Haken bei Low und High gesetzt. Mit welchen Werten wird dann gebrannt? Kann ich das Teil noch retten?

  • Da komm ich jetzt nicht ganz mit. Verträgt der AVR von der SD2IEC nur 3V an den Eingängen?

    Wenn ich mich recht erinnere, dann wird bei der Version von Shadowolf der AVR mit 3.0V betrieben. Das spart die Umwandlung der Spannung zum SD-Slot hin (der maximal 3.6V darf). Bei meiner Lochrasterversion (und damit auch der Peter Sieg Platine) wird der AVR mit 5V betrieben und es gibt Spannungsteiler, um die Signale für den SD-Slot auf 3.0-3.3V zu bringen.


    Du müsstest den Display-AVR also auch mit 3.0 V laufen lassen.

  • Du müsstest den Display-AVR also auch mit 3.0 V laufen lassen.

    Ok, das sollte kein Problem darstellen. Dann häng ich einfach an die Spannungsversorgung des AVR einen 3V Regler.
    Das wäre einfacher als in jede Leitung einen Pegelwandler zu montieren.
    Die Frage ist nur ob für das LCD dann die Datenleitungen genug Spannung haben, oder ist das egal?

  • Neuer Tag, neue Experimente!


    AVR läuft nun mit 3V.
    Zugriff auf SD funktioniert nun!!!
    Auch das Dsiplay tut fast das was es soll.


    Bin nun auch halbwegs draufgekommen wie die Bedienung funktioniert.


    Um eine Option auszuwählen muß der Encoderknopf länger gedrückt bleiben.
    Wechsel ins Directory funktioniert problemos.


    Jedoch habe ich immer noch das Problem das die Auswahl immer eine Zeile überspringt.
    Da muß wohl noch einiges am Code justiert werden, da ich mit einem 2-Zeiligen Display arbeite.
    Vielleicht kann mir Unseen dazu einen Tip geben.


    Ich bräuchte dennoch noch Infos zur Bedienung der Funktionen.


    .) Change Directory (ist mir klar)
    .) Change Adress
    .) Store settings
    .) Chance (warscheinlich um das Menü zu verlassen)


    Du hast auch erwähnt das das Menü erst nach betätigen des Encoders erscheinen soll. Bei mir tut es das sobald ich Spannung an das ganze anlege.


    Alles im allen auf jedenfall eine Geile Sache!

  • Um eine Option auszuwählen muß der Encoderknopf länger gedrückt bleiben.


    Sollte eigentlich mit einem kurzen Tastendruck gehen... Es sei denn du würdest den Knopf für weniger als 1/20 Sekunde betätigen oder der AVR mit einem anderen Takt laufen als das Compilat annimmt (8MHz in der config-example).


    Quote

    Jedoch habe ich immer noch das Problem das die Auswahl immer eine Zeile überspringt.
    Da muß wohl noch einiges am Code justiert werden, da ich mit einem 2-Zeiligen Display arbeite.


    Tja, das ist entweder ein Bug im Menucode - der allerdings in einem anderen Projekt auch mit einem zweizeiligen Display funktioniert - oder ein Encoder der andere Signale sendet als erwartet.


    Quote

    Ich bräuchte dennoch noch Infos zur Bedienung der Funktionen.
    .) Change Adress
    .) Store settings
    .) Chance (warscheinlich um das Menü zu verlassen)


    In dieser Reihenfolge: Adresse ändern, Einstellungen speichern (wie XW), Menu ohne Funktionsaufruf verlassen


    Quote

    Du hast auch erwähnt das das Menü erst nach betätigen des Encoders erscheinen soll. Bei mir tut es das sobald ich Spannung an das ganze anlege.


    Dann stimmt bei dir irgendwas immer noch nicht. Vertausch mal probeweise die A/B-Leitungen des Encoders.

  • Quote

    oder ein Encoder der andere Signale sendet als erwartet.

    Es lag am Encoder. Mit einem anderen funktioniert es problemos.
    Ich muß jedoch dazu sagen das ich momentan das ganze mit dem internen Standard-Takt laufen lassen. Da ich Angst habe wenn ich die Fuses setze mich wieder vom AVR auszusperren.
    Ich weiß nicht ob die Taktgeberfuses des SD2IEC auch hier geeignet sind.
    Ein Sreenshot im Anhang von den möglichen Einstellungen. Vielleicht könntest du mir einen Tip geben welche die geeignete wäre für einen 8MHz Taktgeber, so wie er auf dem SD2IEC verbaut ist.


    Quote

    In dieser Reihenfolge: Adresse ändern, Einstellungen speichern (wie XW), Menu ohne Funktionsaufruf verlassen


    Einstellungen speichern -> Bedeutet dies er auch das momentan ausgewählte Directory speichert und ich beim stromlosmachen beim nächsten mal einschalten wieder im gleichen Verzeichnis lande?
    Oder ist diese Funktion eher als Diskwechsel angedacht?


    In der ersten Zeile wird bei mir nur die Versionsnummer des Codes angezeigt. Bei dir sehe ich den Verzeichnispfad.

  • Ein Sreenshot im Anhang von den möglichen Einstellungen. Vielleicht könntest du mir einen Tip geben welche die geeignete wäre für einen 8MHz Taktgeber, so wie er auf dem SD2IEC verbaut ist.


    Mach einfach den Haken bei "Divide clock by 8 internally" weg.


    Quote


    Einstellungen speichern -> Bedeutet dies er auch das momentan ausgewählte Directory speichert und ich beim stromlosmachen beim nächsten mal einschalten wieder im gleichen Verzeichnis lande?
    Oder ist diese Funktion eher als Diskwechsel angedacht?



    Quote

    In der ersten Zeile wird bei mir nur die Versionsnummer des Codes angezeigt. Bei dir sehe ich den Verzeichnispfad.


    Du hast am Displaycode rumgebastelt, jetzt ist es dein Problem.

  • Quote

    Mach einfach den Haken bei "Divide clock by 8 internally" weg.

    Dann ist aber "Int. RC Osc.; Start-up time: 6CK + 65 ms" immer noch ausgewählt. Passt das so?


    Quote

    Du hast am Displaycode rumgebastelt, jetzt ist es dein Problem.

    Ich denke es liegt nicht am Code, sondern an der Bedienung :)
    Was bedeutet L1 und was das 1 in der zweiten Zeile? Ändern sich diese Werte auch?


    Ach ja, bei mir erscheint manchmal in der ersten Zeile "m-e" Hat das eine bedeutung?


    Der "Pfeil links" wird nicht korrekt umgesetzt. Das ist so ein verkrüppeltes Zeichen

  • Ich habe jetzt mal ein anderes Display angeschlossen. Das ich im Endeffekt auch verwenden möchte.
    Und zwar das LCD-Modul Powertip PC1602-E von Pollin. http://www.pollin.de/shop/downloads/D120386D.PDF


    Nur das spinnt total. Beim Einschalten erscheint sporadisch Waiting for Data dann wirds finster.
    Oder es erscheint das Menü mit verstümmelten Zeichensatz.
    Versucht man dann zu navigieren erscheint wieder sporadisch Waiting for Data, so als ob die Verbindung abreißt.


    Muß man den Code für dieses Display etwa anpassen?