Problem mit Atmega128

Neuuser

Mitglied
11. Aug. 2008
465
0
16
Sprachen
Hallo Leute,
ich habe an euch eine spezielle frage und es geht hier um einen bezw. um mehre Atmega128 die bis auf einen etwas anderes machen.
Habe mir eine Schalttafel zusammengesetzt, die seit einer langen weile schon gut funktioniert.
Sowie auf dem ersten Bild zu sehen.

Nun aber wollte ich mal einen Ersatz Mega128 erstellen, falls mal was sein sollte aber nee, ich habe nun drei identische aufgebaute 128 Borde, mit derselben Fuse, mit der gleichen Software
eingestellt und bespielt, der eine somit auch der erste wo es sofort ohne Grafikfehler funktioniert hat geht immer, auf dem Testboard so wie an meiner Schalttafel.

Die anderen gehen nur auf den Testboard nach langen rum schalten am SPI Programmer mit dem Jumper 3,3 oder 5v bis sich die Grafik beruhigt hat. Dann sind sie aber artig, funktionieren aber überhaupt nicht an der Schalttafel.
Ich habe nun schon viel in der Fuse probier und auch mit der Einstellung der hwstack, swstack und framesize aber kein Erfolg, die Frage ist, warum macht der eine keine Probleme aber alle anderen?

MFG micha20221112_134533.jpg20221112_134642.jpg20221112_134649.jpg128.png20221112_134431.jpg20221112_134438.jpg
 
Hallo Micha,

da Board Nr.1 funktioniert, liegt es offensichtlich an den beiden neuen Boards. Könnte z.B. ein Fehler bei der Bestückung (Kondensatoren) sein.
Ich würde erstmal die Lötstellen nacharbeiten. Die sehen - mit Verlaub - nicht wirklich toll aus ...

Gruß
Pirx
 
  • Like
Reaktionen: hdusel
Hallo Pirx,
ja von nahen betrachtet nicht alles sauber, aber habe mehrmals alles durchgemessen werte stimmen und voller Kontakt ist auch :shout:
mfg micha
 
Hallo Micha,

hast du mal überprüft, ob die an das Display gesendeten Daten korrekt sind (Logikanalyser) ?

Auf den Fotos ist keinerlei Beschriftung der Mega128 erkennbar. Können die 12 MHz? Es gibt auch Varianten mit 8 MHz ...

Gruß
Pirx
 
Hallo Pirx,
nein habe ich bisher noch nicht gemacht mit eien Logikanalyse.
Den 128 kannst du normalerweise auch 16Mhz anbieten.

mfg micha
 
Pirx deutet an, daß Du statt eines ATmega128 eventuell einen ATmega128L verwendest...

Du scheinst Bascom zu verwenden. Dieselbe Version wie damals?

Läuft der Rest korrekt, abgesehen von der Displayausgabe?
 
Zuletzt bearbeitet:
Morgen, ich habe verschiedene 128 drauf , 128A und 128, warum gerade den 128L.
Ich verwende die 2.0.8.5 denke mal das ist die neuste Version.
Nachdem ich damals die werte verändert hatte $hwstack = 100 '$swstack = 128 '$framesize = 288 lief es stabiel, auf den einen !

mfg micha
 
Sorry, ja das Programm läuft weiterhin so weiter, nur die Displayausgabe ist gestört.
 
Bei den alten 128ern wurde (wie auch bei den anderen älteren Controllern dieser Zeit) selektiert.
Wenn sie sicher mit voller Taktfrequenz laufen -> ATmega128
Wenn sie sicher mit geringer Spannung laufen -> ATmega128L

Also ein ATmega128 läuft garantiert ab 4,5V, und schafft garantiert 16MHz.
Ein ATmega128L läuft garantiert ab 2,7V, und schafft garantiert 8MHz.

Die 128A kamen dann später, hier war keine entsprechende Selektion mehr nötig(?), die laufen alle ab 2,7V, und schaffen ab 4,5V 16MHz.

Laut Migrating-Datenblatt verbraucht der -A wesentlich weniger Strom (etwa die Hälfte), der Reset-Pullup ist größer (mit größerer Toleranz), und die LowPegel der I/Os liegen ggf etwas höher.

Sorry, ja das Programm läuft weiterhin so weiter, nur die Displayausgabe ist gestört.
Klingt grundsätzlich erstmal stark nach irgendwelchen Kontakt- oder Timingproblemen.

Ich würde erstmal:
  • die Firmware vom laufenden Controller über das AVR-Studio (oder wie das jetzt bei ATMOCHIP ähm MICROMEL... auch immer heißt) einlesen und auf einen anderen flashen, und dabei auch nochmal die Fuses abgleichen.
  • auf den neuen Boards mal 'ne minimale Firmware testen, die erstmal nur was ganz einfaches (statisches) ausgeben soll...
Und eben, wie Pirx schon in #4 schrieb, das ganze mal mit'nem LA überprüfen...
 
Ja Kontaktprobleme habe ich schon überprüft da ist nichts zu finden wie schon an Anfang geschrieben der eine geht ja ohne Problem ob auf dem Testboard oder an der Schalttafel , nun habe ich noch drei andere Atmega64/128 Borde mit dem gleichen Atmega und den selben Einstellungen drauf und keiner funktioniert mit der Displayausgabe.
Auch das ist das erste, was ich getestet habe, mit ein einfaches Testprogramm für das Display, aber es ist das gleiche und liegt nicht am Programm selber.

Nun ist es so weit, dass ich das Gefühl habe ich zerschieße die Displays, das originale mit 240x128 will nun gar nicht mehr dann habe ich ein 128x64 über das Board getestet es funktionierte genau eine halbe stunde, dann fing es auch an zu flackern und nun geht auch nichts mehr.
Wie funktioniert eine Logikanalyse
 
Mit einem Logikanalyser werden digitale Signale - in deinem Fall die zur Kommunikation mit dem Display - aufgezeichnet und bildlich dargestellt. In der Darstellung kann man überprüfen, ob Daten (und ggf. Clock, Enable ect.) sowie das Timing korrekt sind.
 
Nun ist es so weit, dass ich das Gefühl habe ich zerschieße die Displays, das originale mit 240x128 will nun gar nicht mehr dann habe ich ein 128x64 über das Board getestet es funktionierte genau eine halbe stunde, dann fing es auch an zu flackern und nun geht auch nichts mehr.
Hierzu kurz eine Frage ...

Welche Betriebsspannung nutzt du?
Gleiche Betriebsspannung für Mikrocontroller und Display (Pegel der IO Pins gleich) oder unterschiedlich?

Möglicherweise passt hier etwas nicht und das Display wird nach einiger Zeit beschädigt.

Dirk :ciao:
 
Morgen,
Pirx, ja aber wie funktioniert es mit Bascom, wie kann ich es ausführen.
Dirk, ich benutze die Versorgung vom ISP Programmer und eine stabilisierte 5V Spannung Masse ist zusammen.
Jetzt habe ich noch mal den alten Compiler 2.0.7.7 benutzt und siehe da das 128x64 konnte ich wieder beleben aber das 240x128 will gar nicht mehr, benutze ich die neue Bascomversion kommt am 128x64 nur wieder Kauderwelsch raus.
Ich benutze nun Bascom für einige Steuerungen bei mir zu Haus, bin wahrlich kein Experte darin, aber so komische Probleme habe ich mit ein Display und 4 gleiche Atmega Boards noch nicht gehabt :shout: das nun mit dem Compiler ist ja eine anderes Problem.
Nun habe noch ein anderes 240x128 Display bestellt und probiere es noch ein mal, kann doch alles nicht sein.

mfg
 
... aber wie funktioniert es mit Bascom, wie kann ich es ausführen.

Es geht um eine Kontrolle der digitalen Signale im laufenden Betrieb der Schalttafel. Folge mal diesem -> Link
Auf Youtube finden sich Tutorials, die die Funktion zeigen.

Gruß
Pirx
 
Hallo,
gibt es eigentlich für ein 240x128 GLCD ein I2C Adapter ich kann leider da nicht wirklich für diese Ansteuerung ein etwas finden und Displays mit I2C 240x128 Auflösung sind ja so winzig :rolleyes:
 
Displays mit I2C 240x128 Auflösung sind ja so winzig
sind mir eigentlich nur als OLEDs bekannt, sowas in etwa.

GLCDs kenne ich nativ nur mit paralleler Ansteuerung (wahlweise für acht- oder vier-Bit-Datenbus konfigurierbar), aber da kann natürlich auch ein konventionelles Schieberegister oder eines mit I²C-Ansteuerung (umgangssprachlich auch als Portexpander bekannt, ein Klassiker wäre zB. der PCF8574) dazwischengeschaltet werden.

entsprechend konfiguriert sollte sich unter Bascom so'n Display dann sogar mit den konventionellen GLCD-Routinen ansprechen lassen.
Hatte hier nicht mal Cassio (?) sowas in der Art gepostet?
 
Der PCF8574 ist nur für kleine Displays LCDs und habe auch welche für GLCD 128x64 gefunden, aber keine für 240x128.
ja die OLCD sind zu klein.
--konventionellen GLCD-Routinen-- ? nichts zu gefunden im Forum
 
GLCDs kenne ich nativ nur mit paralleler Ansteuerung
Ist natürlich Quatsch...
Ich selbst hatte sogar mal das hier im Testbetrieb:

DogL.jpg
Das ist ein 128x64 GLCD von Electronic Assembly, genauer das EA DogL128-6.
Angesteuert wird es quasi mit SPI (nur schreibend) und einem zusätzlichen Signal, also MOSI, SCK, !CS und A0.
(Hintergrundbeleuchtung Bernstein, und außerdem ein resistives Touchscreen (-> über den ADC ausgewertet))
BASCOM unterstützt das mit CONFIG GRAPHLCD, die "Wüstengrafik" hab ich dann einfach mit SPIOUT oder so dazwischengecodet (Page und Cursor gesetzt, und dann einfach inkrementierende Bytes gesendet, wie man unschwer erkennt...)

EA scheint inzwischen auch Displays mit I²C zu haben, das DogXL240-7 scheint genau das zu sein, was Du suchst...

Der PCF8574 ist nur für kleine Displays
Nein, das ist ein 8Bit-I²C-Schieberegister-IC. Du kannst also via I²C ein Byte dahin übertragen, und die acht Beine werden entsprechend gesetzt, andersrum kannst Du auch den tatsächlichen Zustand der Beine einlesen. Was an den acht Beinen drannhängt, ist erstmal wurscht. Wenn Du mehr als acht Beine brauchst, brauchst Du eben ein 16bit-IC (oder mehrere 8bit-ter)...
 
EA scheint inzwischen auch Displays mit I²C zu haben, das DogXL240-7 scheint genau das zu sein, was Du suchst...
nee das ist doch von der Baugröße viel zu klein, das ist zwar von der auflösung 230x128 aber gerademal 60x33 mm, mein GLCD hat eine größe von 115x65 mm mit 240x128.

Nein, das ist ein 8Bit-I²C-Schieberegister-IC. Du kannst also via I²C ein Byte dahin übertragen
Komm ich nicht ganz mit, dann würde ja so ein Adapter funktionieren aber der Verkäufer sagte, es ist nicht für 240x128 ausgelegt.

https://www.ebay.de/itm/371836959640?hash=item569335bb98:g:7HIAAOSw4NZcucN4&amdata=enc:AQAHAAAAoH/OP6OJDAYD7LEatlZkz2+yNwy61MCdLauyEI79kOt0DikKBiKeRtCsT0uScMklDUm6kaOpkkYTbIjCaSF/KGDRX7wS5uIel4xCBuLkQx/BNXvGA7ZE3zWQPRH8YWSdMka/A+vLXXdpPag81ME2lVJU4EHYPht2lK1iBhJ3lVglcDTjitwwMPeF5HkSOpownchpuQhRSOuPWfDHMESdsRw=|tkp:Bk9SR_jM2rGnYQ
 
Zuletzt bearbeitet:
Das DogXL-7 hat 240x128 Pixel auf 'ner aktiven Fläche von 85x44mm²

Wenn Du bei Deinem Display mehr als acht I/Os brauchst, brauchst Du entweder mehrere 8bit-Schieberegister-ICs, oder eben eins mit mehr Bits.
Der PCF8575 hätte dann zB sechzehn.

Die von Dir verlinkte Platine besitzt einen 8-Bit-PCF8574, außerdem ein Potentiometer um die Kontrastspannung des LCD einzustellen, 4k7-Pullups an SDA, SCL und der IRQ-Leitung und 10k-Pullups an den drei Adress-Beinen des PCF (die via Lötbrücken auf Gnd gezwungen werden können.)

Hast Du mal ein Datenblatt zu Deinem Display?
(und zu bedenken ist auch, daß die Daten eigentlich byteweise (also 8bit parallel) auf das Display gepumpt werden (und zusätzlich parallel wohl vier weitere Steuerleitungen). Das ganze (also mindestens zwölf Bit) würde dann seriell über eine Leitung getunnelt werden, und pro "Byte" wohl auch mehrfach. Die Frames pro Sekunde gehen als runter. (normalerweise wird das Byte parallel angelegt, und dann die entsprechende Flanke am Latch-Signal ausgelöst. An das Schieberegister muß also erst das Datenbyte mit dem Latch-Bit vor der Flanke, und danach dasselbe Byte mit dem Latch-Bit nach der Flanke übertragen werden)

Irgendwo im FAQ hat Cassio mal 'n Ansatz mit dem 8575 verlinkt gehabt - leider paßt der Link seit irgend'nem Forenupdate wohl nicht mehr - falls Du selber weiterforsten willst... hier
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)