Hallo Besucher, der Thread wurde 32k mal aufgerufen und enthält 170 Antworten

letzter Beitrag von Vorph am

LCD am sd2iec [EXPERTENRUNDE]

  • Ich werde die Draco-Variante nehmen :)


    An der Draco-Variante bin ich auch gerade dran, habe aber als LCD das von Reichelt genommen => LCD 162C für 6,80 € (2x16), da ich dafür auch gleich das notwendige Datenblatt für den Anschluss gefunden habe - leider geht der passende Frontrahmen (LCD Front 2) mit 6,30 € nochmals ins Geld.
    Da das Gehäuse durch das Display eh größer sein muss, möchte ich diesmal keine PeterSieg-Platine benutzen, sondern einen Lochrasteraufbau, muss also erstmal den Lochrasteraufbau hinbekommen und dann das LCD noch ranmachen, dass kann noch etwas dauern ....


    Hier das Display:
    LCD 162c.jpg


  • Stimmt, eigentlich liegt ja nur die config-example bei in der ein Eintrag vergessen wurde. Nimm einfach die angehängte Datei, umbenannt in "config".


    Edit: Nein, da fehlt doch kein Eintrag - nimm wahlweise die angehängt config oder config-example, sollte beides funktionieren.


    Hat super funktioniert!



    Jetzt muss ich das hex File nur mehr in den Atmega flashen, kann mir jemand bitte noch mitteilen welche Fuses ich im Ponyprog setzen muss?
    lg,
    znarF


    Edit: Ups, ich muss ja auch noch nen ISP Stecker am Atmega ranbasteln!!!
    Kann ich die Zuordnung vom sd2iec 1.2 ISP nehmen?


    Code
    1. Atmega <-> Programmer
    2. PB7 <-> SCK
    3. PB6 <-> MISO
    4. PB5 <-> MOSI
    5. /RESET <-> Reset
  • Ja. ISP ist nur abhängig vom ATmega Typ. Und auch da ist es oft gleich, zb. haben alle DIL-40 Atmega die ISP Pins an derselben Stelle (Atmega32, Atmega644 ...).


    Bei einigen (zB mega8515) muss man trotzdem etwas aufpassen, da liegen zwar die ISP-Anschlüssen auf den gleichen Pins, die Stromversorgung aber nicht.


    Mich würde jetzt mal interessieren, wie das mit dem Disk-Change und LCD gelöst wird. Wenn beide die gleichen Anschlüsse benützen.


    Wo verwenden denn Disk-Change und LCD die gleichen Anschlüsse?


    Jetzt muss ich das hex File nur mehr in den Atmega flashen, kann mir jemand bitte noch mitteilen welche Fuses ich im Ponyprog setzen muss?


    Die gleichen als ob du den für ein Lochraster-MMC2IEC verwenden würdest, je nach Wunsch mit oder ohne Quarz.


    Compilieren des Hauptprogrammes hat auch funktioniert? Das Display tut zwar im Prinzip auch ohne, aber nur "Waiting for data..." zu sehen ist auf Dauer etwas langweilig.

  • Compilieren des Hauptprogrammes hat auch funktioniert? Das Display tut zwar im Prinzip auch ohne, aber nur "Waiting for data..." zu sehen ist auf Dauer etwas langweilig.


    Ja, ich bilde mir ein 2 .bin Files gesehen zu haben, einmal nur die "sd2iec.bin" und einmal inkl. Versionsnummerangabe im Dateinamen.


    Zitat

    mal wieder paar allgemein psotings in den anderen Thread verschoben...


    Merci
    znarF

  • Wie ich sehe ist dort bereits für ein 2Zeiliges die Einstellung gemacht. Kann das sein?


    znarF hat noch angedeutet, dass man definieren kann, was wo am Display angezeigt wird. Geht das?. Wenn ja wo?


    Habe gerade versucht das Hauptprogramm zu kompilieren und bekomme dabei einige Fehler:


    können die ignoriert werden?
    Habe die config-sw2 für das SD2IEC V1.2 von Shadowolf genommen

  • crcgen-new


    Dieses Tool fehlt. Wenn ich mich recht erinnere, ist das dazu da, die Prüfsumme zu berechnen, damit der Bootloader die Datei akzeptiert. Schau doch mal, ob das Tool im repository ist, kompilier es für Deinen Rechner und packe es in den Pfad. Vielleicht hilft das.

  • Zitat

    Dieses Tool fehlt. Wenn ich mich recht erinnere, ist das dazu da, die Prüfsumme zu berechnen, damit der Bootloader die Datei akzeptiert.


    Das wars! Hab die crcgen-new.c und crcgen-new.exe auf http://sd2iec.de/ gefunden und ins root kopiert.


    Jetzt bekomme ich nur mehr den Fehler ganz oben:
    gawk: gcctest.awk:7: fatal: match() cannot have 3 arguments


    Wo ist der Unterschied zwischen der sd2iec.bin und sd2iec-sw2-firmware-0.8.1.bin
    Größenmäßig sind beide ident.


    Habe jetzt auch die Schaltung für meine Zwecke gezeichnet. (siehe Anhang)
    Vielleicht kann jemand seinen Senf dazugeben ob das so funktionieren würde.
    Sind vielleicht noch irgendwelche Bauteile notwendig für die Schaltung?


    Was mir noch aufgefallen ist das es 2 LCD E-Anschlüsse gibt. Ich gehe mal davon aus das hier ein zweites Display drann soll. Bzw. der Anschluss für das 4-Zeilige gedacht ist. Oder werden die gar zusammengeschlossen?


    Ich möchte das ganze jedoch gerne mit einem 2-Zeiligen betreiben.
    Geht das überhaupt?


    znarF, du hast da noch einen Kondensator in deiner Schaltung. Wozu dient der?

  • znarF, du hast da noch einen Kondensator in deiner Schaltung. Wozu dient der?


    Aha, jetzt baust du doch die Display Steuerung von Unseen nach! Der Kondensator ist für die Kontraststeuerung gedacht, das ist nämlich so im Datenblatt vom Display vermerkt.
    Welche Daten hast du jetzt in der lcd.h eingetragen?
    Wie wirst du den Atmega programmieren?
    Hast du auch eine sd2iec.0.X.bin Datei in den kompilierten Dateien?
    znarF

  • Zitat

    Aha, jetzt baust du doch die Display Steuerung von Unseen nach!


    Ja, du hast mich auf den Geschmack gebracht. Die Sache mit dem Encoder ist vielleicht doch nicht so eine unfeine Sache.


    Zitat

    Welche Daten hast du jetzt in der lcd.h eingetragen?

    Daran habe ich eigentlich nichts verändert.
    Ich habe vorerst mal überhaupt alles so belassen wie es von Unseen auf seiner Linkpage vorliegt.


    Das einzige was mir eben aufgefallen ist, dass in der config.h die Einstellungen für das Display gemacht werden.
    Wie muß ich es ändern damit ich ein 2-zeiliges ansprechen kann?


    Zitat

    Wie wirst du den Atmega programmieren?

    Ich hab mir vor einiger Zeit einen programmieradapter gebastelt (siehe Anhang) Den kann ich mit dem mySmartUSB oder mittels ISP dann programmieren.
    Einen ISP-Anschluss auf die Displayplatine zu basteln ist sicher auch keine schlechte Idee.


    Zitat

    Hast du auch eine sd2iec.0.X.bin Datei in den kompilierten Dateien?

    Ja, eine sd2iec.bin und eine sd2iec-sw2-firmware-0.8.1.bin
    Weißt du wo der Unterschied ist?

  • Jetzt bekomme ich nur mehr den Fehler ganz oben:
    gawk: gcctest.awk:7: fatal: match() cannot have 3 arguments


    Wie ich anderswo schonmal erwähnt hatte: Das liegt daran, dass bei WinAVR ein gawk mitgeliefert wird das aus dem letzten Jahrtausend stammt.


    Neuere Versionen davon hätten mit dem Script kein Problem, aber da es nur dazu dient etwas bessere Optimierungen bei gcc 4.3 einzuschalten die gcc 4.1/4.2 noch nicht kennt und im Versagensfall einfach die Optionen für 4.1 verwendet werden sollte das kein Problem sein.


    Zitat

    Wo ist der Unterschied zwischen der sd2iec.bin und sd2iec-sw2-firmware-0.8.1.bin
    Größenmäßig sind beide ident.


    Auch ihr Inhalt ist identisch.


    Zitat

    Was mir noch aufgefallen ist das es 2 LCD E-Anschlüsse gibt. Ich gehe mal davon aus das hier ein zweites Display drann soll. Bzw. der Anschluss für das 4-Zeilige gedacht ist. Oder werden die gar zusammengeschlossen?


    Das 27x4-Display mit dem ich entwickelt habe hat zwei E-Anschlusse, einen für die obere und einen für die untere Hälfte. Andere Displays haben nur einen, dann wird in der config.h (wie im Kommentar vermerkt) LCD_E2 und LCD_ROWS_BOTTOM beide als 0 definiert.


    Zitat

    Ich möchte das ganze jedoch gerne mit einem 2-Zeiligen betreiben.
    Geht das überhaupt?


    Sicher: LCD_E2 und LCD_ROWS_BOTTOM als 0 definieren und den Code in main.c so ändern, dass keine Zugriffe auf die beiden unteren Zeilen mehr erfolgen weil es sonst mit ziemlicher Sicherheit Abstürze gibt.


    Zitat

    Könnte mir vielleicht jemand dazu genauere Angaben machen?


    Nein, ich rechne Fusebits immer nach Bedarf via http://www.engbedded.com/fusecalc/ aus.

  • Sicher: LCD_E2 und LCD_ROWS_BOTTOM als 0 definieren und den Code in main.c so ändern, dass keine Zugriffe auf die beiden unteren Zeilen mehr erfolgen weil es sonst mit ziemlicher Sicherheit Abstürze gibt.

    OK, ich gehe mal davon aus das dies dieser Teil sein müßte:



    Wenn ich statt der 3 (lcdline[3]) eine 1 hinsetze müßte das passen, oder?
    Bzw. alles was auf 3 hindeutet durch 1 ersetzen?


    Zitat

    Nein, ich rechne Fusebits immer nach Bedarf via http://www.engbedded.com/fusecalc/ aus.

    Ausrechnen gut und schön, wenn man weiß was man ausrechnen muß.
    Wovon hängt es ab welche Fuses eingestellt werden?
    Wozu muß ich überhaupt Fuses setzen?
    Ich habe hier einen ATMega 644 den ich wie in meiner Schaltung oben betreiben will.

  • OK, ich gehe mal davon aus das dies dieser Teil sein müßte:


    Alle Zugriffe auf lcdline[2] und lcdline[3] sowie alle Aufrufe von set_line(2, ...


    Zitat

    Wovon hängt es ab welche Fuses eingestellt werden?


    Davon, welche durch die Fuses definierbaren Einstellungen wie gesetzt werden sollen. Das sind beispielsweise die Taktquelle, Grösse und Vorhandensein eines Bootloaders und das Abstellen von Programmierinterfaces (ISP/JTAG).

  • Alle Zugriffe auf lcdline[2] und lcdline[3] sowie alle Aufrufe von set_line(2, ...

    Ok


    In Zeile 3 wird die Partitionsnummer (was ist das?) und Laufwerksadresse angezeigt
    In Zeile 4 der Fehlerkanal
    korrekt?
    Oder wird 3 und 4 noch für etwas anderes genutzt?


    Wenn ich diese Dinge nicht benötige reicht es wenn ich diese Code-Blöcke einfach komplett lösche:



    Code
    1. case DISPLAY_ADDRESS:
    2. lcdline[3].contents[STATUS_ADDR] = '0'+data[1] / 10;
    3. lcdline[3].contents[STATUS_ADDR+1] = '0'+data[1] % 10;
    4. lcdline[3].updated = 1;
    5. updatedisplay++;
    6. break;


    Code
    1. case DISPLAY_ERRORCHANNEL:
    2. set_line(2, length-1, data+1, 1);
    3. break;


    Muß für ein 16-Zeichenbreite auch noch etwas angepasst werden? Du hast in einem älteren Beitrag erwähnt das dann die Zeile gescrollt wird.

  • In Zeile 3 wird die Partitionsnummer (was ist das?) und Laufwerksadresse angezeigt
    In Zeile 4 der Fehlerkanal
    korrekt?


    Umgekehrt.


    Die Partitionsnummer ist die Nummer der Partition die gerade angesprochen wird, hochgezählt über alle gleichzeitig angeschlossenen Speichermedien. Wenn nur ein einzelner SD-Slot vorhanden ist wird die fast immer 1 sein, da es nicht ganz einfach ist mit Windows mehr als eine Partition auf einer SD-Karte anzusprechen.


    Zitat

    Wenn ich diese Dinge nicht benötige reicht es wenn ich diese Code-Blöcke einfach komplett lösche:


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


    Zitat

    Muß für ein 16-Zeichenbreite auch noch etwas angepasst werden? Du hast in einem älteren Beitrag erwähnt das dann die Zeile gescrollt wird.


    Das Layout der Statuszeile ist auf 27 Zeichen angepasst (und würde auch scrollen wenn das Display schmaler ist), alles andere verwendet IIRC so viel wie gerade benötigt wird und scrollt wenn das mehr Zeichen sind als ins Display passen.