Forum: Mikrocontroller und Digitale Elektronik Bitte helft mir. Schon wieder AtMega16


von Alex (Gast)


Angehängte Dateien:

Lesenswert?

Hallo!
eeem, ich habe ein Problem.
seiss aber nicht mal annähernd woran es liegen könnte.
der µC lässt sich programmieren, aber es tut sich am LCD nichts.
dazu habe eine schaltung rausgehohlt, die ich früher schon gebaut hat.
sie hat 200% funktioniert.
da ist nur der Atmega16, seine Stromversorgung und ein Anschluss für den 
LCD drauf.. mehr nicht. kann eigentlich nichts kaputt gehen.
 habe den µC da auf die Platine reingesteckt. es tut sich nichts..
...???...
dann habe ich schnell dieses Programm hier geschrieben:



$regfile = "m16def.dat"
 $crystal = 8000000

 Config Lcd = 16 * 2
 Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , 
Db7 = Portb.3 , E = Portb.5 , Rs = Portb.4

Cls
Do

Locate 1 , 1
Lcd "hello"
Wait 200
Loop




also nur das nötigste.
es funzt einfach nicht.
meine fuse-einstellung ist im Anhang.
wo kann denn das Problem liegen?
also LCD ist ganz bestimmt in Ordnung. habe sogar 2, die immer 
funktioniert haben.
Am programm ist auch alles glatt. (denke ich mal).

Ich weiss das Thema nervt euch alle schon langsam, aber ich bin echt 
ratlos.
Danke. MfG Alexander

von Alex (Gast)


Lesenswert?

weisst das keiner?

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Schaltungsskizze? Wo liegt R/W vom Display?

von Alex (Gast)


Lesenswert?

>Schaltungsskizze? Wo liegt R/W vom Display?

ist genau so wie hier angeschlossen.
http://www.roboternetz.de/wissen/images/thumb/e/ec/Lcdmodul_4bit_schem.png/600px-Lcdmodul_4bit_schem.png
am Hardware habe ich nichts verändert, und sie hat ummer funktioniert.. 
bloss jetzt auf einmal nicht.

von Stefan B. (stefan) Benutzerseite


Lesenswert?

> $crystal = 8000000

Das passt nicht zu dem Bild mit den Fuses. Laut Fuses hast du

$crystal = 1000000

Taktquelle ist der interne RC-Oszillator des Atmega16. Das falsche 
Statement könnte dir das Timing zur Ansteuerung des LCD aus dem Tritt 
bringen.

von Alex (Gast)


Lesenswert?

>Das kann dir das Timing zur Ansteuerung aus dem Tritt bringen.
habe ich gerade eben Ausprobiert.
hat sich nichts verändert :(

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Ich würde das LCD erstmal weglassen und eine LED zum Blinken bringen 
bzw. wenn keine LED zur Hand einen Port HIGH schalten und mit dem 
Multimeter nachmessen. Damit ist sichergestellt, ob der Atmega16 läuft 
oder nicht.

von Alex (Gast)


Lesenswert?

@ Stefan B
sehr gute Idee
werde ich sofort mal machen :)
danke

von Dummy (Gast)


Lesenswert?

Ich würde mal den Kontrast aufdrehen.

von Alex (Gast)


Lesenswert?

so, habe ich gemacht.
und zwar mit diesem Code hier:


$regfile = "m16def.dat"
$crystal = 10000000

Portb = 0


5v Alias Portb.0
Waitms 200
Do


      Set 5v
      Wait 10
      Reset 5v
      Waitms 10
Loop

End

fuse bits sind gleich geblieben.

allerdings macht es statt 10 sekunden irgendwie ca 25 sekunden.
wie kann das angehen?

von Alex (Gast)


Lesenswert?

> Ich würde mal den Kontrast aufdrehen.

alles schon probiert.

von Alex (Gast)


Lesenswert?

und nun?

von Sven F. (sven0876)


Lesenswert?

welchen quarz haste den am atmega???
du sagst bascom das es mit 10mhz läuft und nicht wie deine fusebits mit 
1MHz las mal ne null weg bei deinem "$crystal = 1000000"

sven

von Alex (Gast)


Lesenswert?

@sven
habe gar keinen quarz, darum auf int. gastellt.

von Sven F. (sven0876)


Lesenswert?

sorry hatte was üebersehen
siehe oben

von Stefan B. (stefan) Benutzerseite


Lesenswert?

> $crystal = 10000000

Zähl mal die Nullen!
1
$REGFILE = "m16def.dat"
2
$CRYSTAL = 1000000
3
4
CONFIG CLOCKDIV = 1   ' zur Sicherheit Taktteiler so einstellen wie 
5
                      ' wir wollen und nicht auf Default verlassen
6
CONFIG Portb = Output
7
SET Portb.0           ' AN
8
9
DO
10
   TOGGLE Portb.0     ' AN => AUS => AN => ...
11
   WAIT 10            ' 10 Sekunden warten
12
LOOP
13
14
END

von Roland Z. (r-zimmermann)


Lesenswert?

Hallo,

auch eine Fehlerquelle ist gerne der LCD-Kontroller, besonders die 
KS-Serie der ist zwar sehr gut Kompatibel aber nicht 100%. Bei mir lief 
es immer wenn nach der Konfig nochmals das LCD initialisiert wurde.

Kontrollier mal die Anschlüsse am LCD, wenn die absolut richtig sind, 
füge in deinem LCD-Programm vor dem cls-Befehl noch ein "initlcd" ein. 
Wenn elektrisch alles korrekt ist sollte das gehen es sei den du hast 
noch ein Timingproblem durch eine inkorrekte Angabe des Taktes.

Roland

von Alex (Gast)


Lesenswert?

@Stefan B.

CONFIG CLOCKDIV = 1       ---- Invalid Datatyp [0]
ich kenne diesen Befehl leider nicht, desswegen kann ich das nicht 
bearbeiten .

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Lass die Zeile weg. Spielt beim Atmega16 keine Rolle. Sorry.

von Alex (Gast)


Lesenswert?

>Lass die Zeile weg. Spielt beim Atmega16 keine Rolle. Sorry.

habe ich gemacht. jetzt zählt er richtig! danke.
löst aber das Problem mit dem LCD nicht.
habe da im Code natürlich auch 1000000Mhz eingesetzt.


zwischen config lcd und cls habe ich noch "initlcd" hinzugefügt.. ohne 
Erfolg. :(

von Sven F. (sven0876)


Lesenswert?

nochwas nach roboternetz schließt du am port c an laut soft aber an port 
b

sven

von Alex (Gast)


Lesenswert?

>laut soft aber an port b

ja ist schon richtig...
ist eigentlich nach portB angeschlossen.
also wie gesagt.. das hat alles funktioniert. an der Hardware habe ich 
nichts geändert.
ich habe mich mit dem Projekt beschäftigt.. dann habe ich es für ein 
paar Tage liegen lassen, und heute morgen wollte der LCD nichts mehr 
ausgeben.

von booster (Gast)


Lesenswert?

Ich hatte auch schon so einen Fehler. Ursache war der Proprammieradapter 
welcher noch an der Platine angesteckt war.

von Holger K. (krulli) Benutzerseite


Lesenswert?

Teile dem LCD Controller doch noch bitte mit, das Du den 4 Bit Modus 
wünscht.
Config Lcdbus = 4

von Alex (Gast)


Lesenswert?

>Ursache war der Proprammieradapter welcher noch an der Platine angesteckt >war.

ich habe keinen programmieranschluss auf der platine.
da ist nur ein anschluss für den LCD.

von Alex (Gast)


Lesenswert?

@ holger

habe ich

 $crystal = 1000000

 Config Lcdbus = 4
 Config Lcd = 16 * 2
 Config Lcdpin = Pin , Db4 = Portb.0 , Db5 = Portb.1 , Db6 = Portb.2 , 
Db7 = Portb.3 , E = Portb.5 , Rs = Portb.4
 Initlcd
....

passiert nichts.
µC kaputt?
aber warum?

von Stefan B. (stefan) Benutzerseite


Lesenswert?

> µC kaputt?

Wie kommst du darauf? Dein Multimetertest hat doch gezeigt, dass 
zumindest der µC läuft und dass Portb.0 nicht geschrottet ist. Wenn du 
bzgl. der anderen Portpins unsicher bist, kannst du die ja genau so 
testen.

von Alex (Gast)


Lesenswert?

>Wie kommst du darauf?
was kann es sonst noch sein?

von Holger K. (krulli) Benutzerseite


Lesenswert?

Ist denn auf dem LCD wenigstens ein schwarzer Balken zu sehen?

von Alex (Gast)


Lesenswert?

>Ist denn auf dem LCD wenigstens ein schwarzer Balken zu sehen?
ja, wenn ich den Kontrast aufdrehe!
 :((

von Alex (Gast)


Lesenswert?

was könnte ich denn noch machen?

von Niels H. (monarch35)


Lesenswert?

Verdrahtung überprüfen. Noch und Nöcher. Beim Durchklingeln nötigenfalls 
direkt zwischen Portpin und LCD-Kontroller messen. Beim Zählen immer 
schön bei PIN 1 anfangen und nicht irgendwo anders.

Der 4-Bit-Init ist eine ziemlich blöde Angelegenheit. Die Timingzeiten 
der Kontroller varieren doch sehr stark.

von Karl H. (kbuchegg)


Lesenswert?

... mal etwas Zeit verstreichen lassen, bis der initlcd
kommt.
Alternativ: mal beides einschalten und dann nur den µC
einzeln resetten.
Hitergrund: Das LCD braucht nach dem Anlegen der Spannung
etwas Zeit bis seine eigene Reset-Sequenz durchlaufen
ist. Wenn der µC daher zu früh loslegt, dann ist das
LCD noch nicht fertig und der Anfang der Init Sequenz
geht in die Hose.


Du gibst zu schnell auf :-)

von Niels H. (monarch35)


Lesenswert?

Keine schlechte Idee. Vieleicht Bascom's Lahmheit einfach einen oben 
draufsetzen und den Code einfach mit einem Waitms 1000 anfangen lassen 
:)

von Alex (Gast)


Lesenswert?

@Karl heinz Buchegger
danke schön! :)))
werde ich dann morgen früh ausprobieren, wenn ich wieder auf der Arbeit 
bin.
da ich zu Hause sowieso keinen Parallelenport habe, lasse ich die Sachen 
dort liegen. :)
soll ich einen Reset-Taster anbringen?
Einfach gegen 5V tasten, oder?
:) Alex

von jack (Gast)


Lesenswert?

>soll ich einen Reset-Taster anbringen?
>Einfach gegen 5V tasten, oder?

Liest Du eigentlich überhaupt nichts? Nichtmal Datenblätter?

von Alex (Gast)


Lesenswert?

>Liest Du eigentlich überhaupt nichts? Nichtmal Datenblätter?
uups, sorry :))
habe mich verschrieben.. ich meinte gegen GND natürlich :)))

von Stefan B. (stefan) Benutzerseite


Lesenswert?

> was könnte ich denn noch machen?

Poste den konkreten Schaltplan und/oder ein aussagekräftiges Foto vom 
Hardwareaufbau.

Insbesondere interessiert mich, wie du die Verstrippung an Portb.5 und 
Portb.4 gemacht hast. Diese Pins von PortB sind nämlich auch Teil der 
ISP Programmierschnittstelle.

Hast du beim Ausprobieren des LCD einen ISP Adapter (Welchen?) 
angeschlossen oder ziehst du den jeweils ab?

von Alex (Gast)


Lesenswert?

>Hast du beim Ausprobieren des LCD einen ISP Adapter angeschlossen

wie ich schon geschrieben habe, es gibt auf dieser Platine keinen 
Anschluss für ISP.
ich stecke dem µC zum proggen immer um ;)
foto werde ich morgen mal machen :)

von Troll B. (blaubeer)


Lesenswert?

Alex wrote:
> habe da im Code natürlich auch 1000000Mhz eingesetzt.

Eine Million Megahertz, also 1000 Gigahertz oder 1 Terahertz.

So einen AVR will ich auch haben!!!

Uuuuunnnnnbedingt!!!


> ist genau so wie hier angeschlossen.
> http://www.roboternetz.de/wissen/images/thumb/e/ec...

Warum fragst Du eigentlich nicht dort nach, wo Du die Schaltung her 
hast, die bei Dir nicht funktioniert?? Dort sind vielleicht die Leute, 
die diese Schaltung entwickelt haben und sich damit auskennen. Wenn ich 
Fragen zu einem OBI-Produkt habe, frage ich doch auch nicht bei 
Eisenkarl.

MfG, Blau, bärischer

von Niels H. (monarch35)


Lesenswert?

Kotz ist man denn nirgens vor diesem Trollpack gefeit, die alles und 
jeden meinen mit ihrem geistigen Dünnschiss behelligen zu müssen?!

Geh sterben! Aber bitte leise....

von Holger K. (krulli) Benutzerseite


Lesenswert?

Ich möchte nun langsam wissen, warum Blaubier sich immer in Bascom 
Fachgespräche einmischt. Sei ruhig, wir wollen unseren Spagetticode 
selber auslöffen. Viele Grüße in den Blaubärwald... :))

von Roland Z. (r-zimmermann)


Lesenswert?

Hmm,

ich kann diese ganzen Spitzen in denen immer gegen Bascom geschossen 
wird ehrlich gesagt nicht verstehen. Ich Programmiere in C und auch ab 
und zu in Bascom, bin ich jetzt nicht l33t nur weil ich kein gnadenloser 
C oder Assembleranhänger bin der alles andere abwertet und verteufelt? 
Jeder kann mit der Programmiersprache die er will glücklich werden, 
zumindest ist das mein Standpunkt.

@Blaubeer, wenn du sinnvolle informationen zu dieser diskussion 
beizutragen hast, her damit, wenn nicht halte dich bitte raus (einen 
härteren Ton verkneife ich mir jetzt)

@Alex was für ein Display verwendest du, genauer gesagt welchen 
Controller hat das. Schaltplan deiner Schaltung wäre auch gut dann 
wissen wir wovon wir reden. Ich kann dir dann evtl. auch schnell nen 
Democode tippseln, und den vorher schnell auf dem Breadboard 
ausprobieren bei mir damit du sicher bist das der rennt.

Roland

von jack (Gast)


Lesenswert?

>bin ich jetzt nicht l33t nur weil ich kein gnadenloser
>C oder Assembleranhänger bin der alles andere abwertet und verteufelt?

Die Abneigung gegen Bascom resultiert wahrscheinlich nicht so sehr aus
der Sprache selbst, sondern daraus, daß viele unbedarfte junge Menschen
meinen, sie könnten jetzt plötzlich programmieren, weil Bascom ihnen
alles abnimmt und sie sich nicht mehr um die Hardware kümmern müssen
(glauben sie).

Daraus entstehen dann viele mühsame Threads ;-)

von Alex (Gast)


Lesenswert?

Danke an alle für die Unterstützung!
@Roland
zum Display kann ich leider nicht viel sagen, weil das gerade auch der 
Arbeit liegt, und ich zu Hause bin. ich weiss nur dass es 14 pins hat.
Zum Schaltplan: Ich hatte von sowas wie einen Bordcomputer zu bauen.
mit Bordspannungsanzeige, Temp. innen/ aussen, Drehzahlmesser, 
Motortemperatur, Öldruck, usw.
Die temp. anzeige habe ich schon mit dem KTY-81 und einem OP realisiert.
die Spannung messe ich dann mit dem ADC.
Drehzahl funktioniert auch. mit dem f/U Wandler (weiss die genaue 
Bezeichnung nicht aus den Korf) wandle ist die Frequenz von Unterbrecher 
in die Spannung um, die auch nicht dem ADC erfasst wird. Zw, 
Unterbrecher und f/U-Wandler habe ich noch einen Schmitt-Trigger 
eingesetzt.
Bordspannung auch klar: Spannungsteiler und ab an den ADC :)) (ADC ist 
meine Lieblingsfunktion, weil ich damit auch umgehen kann).
nachdem ich alles bis dahin fertig war, musste ich auf der Arbeit paar 
Funkanlagen und noch paar Kleinigkeiten reparieren. Also kabe ich meine 
Schaltung erst mal zur Seite gelegt. nach 4 Tagen, also heute Morgen, 
wollte ich weitermachen. eingeschaltet...... funktioniert nicht mehr.
warum? weiss ich nicht. habe damit wirklich nichts gemacht, nochts 
verändert.
Ich dachte erst wenn ich den µC neu programmiere, wird es alles wieder 
laufen. aber ich hatte mein ISP nicht dabei.
musste ich als neuen schnell löten.
fertig! alles angeschlossen.... ponyprog.... hex-Datei..... 
schreiben.... verifiring... writing sucesfull... testen.......... GEHT 
NICHT!
dann dachte ich lcd sei kaputt. den Anderen genommen. Kabel war schon 
früher angelötet.
Geht wieder nicht.. dann habe ich diesen Theard erstellt.
Inzwische ist mir aufgefallen, dass ich noch eine Schaltung habe, die 
ich schon früher, als ich geübt habe, gebastelt hatte. die hat auch 
funktioniert.
da ist nur der AtMega16, 7805, 100n ein 10k R und ein Anschluss für den 
LCD drauf. "nun muss es aber gehen" - habe ich gadacht!
µC auf die platine... einschalte... Geht immer noch nicht...
dann habe ich mein Quellcode so weit bearbeitet, dass es nur "Hello" 
ausgeben sollte.. hat auch nicht funktioniert.
Dann habe ich noch mal den Datenblatt angeguckt, zu den Fuses noch was 
gelesen... paar fuses anders gesetzt. es hat sich nichts verändert.
die geschichte weiter muss ich nicht erzählen.. es steht oben schon 
alles.
nun bin ich echt RATLOS.
Danke, dass ihr mir helft!
MfG Alexander

von jack (Gast)


Lesenswert?

>nun bin ich echt RATLOS.

Du kannst eigentlich nur ganz von vorn anfangen:

Schreib ein kleines Programm das eine Led blinken läßt.
Wenn das geht, versuche das LCD zu initialisieren, am besten im 8-Bit
Modus. Und so weiter.

von Alex (Gast)


Lesenswert?

>Schreib ein kleines Programm das eine Led blinken läßt.
habe ich schon, um den µC zu testen.. das läuft.
muss noch 8-bit modus probieren.

von Stefan W. (wswbln)


Lesenswert?

..und der Reset-Pin ist wie beschaltet?

Mann, muss man Dir wirklich die Würmer einzeln aus der Nase ziehen? 
Warum postest Du nicht - wie schon mehrmals erbeten - einen Schaltplan 
und/oder Fotos vom Aufbau??

von winne (Gast)


Lesenswert?

Hat der 16 zufällig ne Jtag?

wenn ja muss diese dezidiert abgeschaltet werden solltest du die 
betreffenden pins verwenden wollen () beim 32er betrifft es Port D oder 
C Pins. da der 16er wohl etwas scmaler ist könnte ich mir vorstellen, 
das es die unteren Ports betrifft.

von jack (Gast)


Lesenswert?

>Hat der 16 zufällig ne Jtag?

Natürlich. Das wär wieder der Klassiker: JTAG-Fuse gesetzt.

von Mr. Fluke (Gast)


Lesenswert?

>Hat der 16 zufällig ne Jtag?

Tja, das weiß man immer nicht genau. Ich hatte auch schonmal nen 
Atmega8, der hatte sogar 16kB Flash, und 1,5kByte SRAMdafür leider aber 
kein eeprom.

Hm, Zufälle gibts.
Grüße

von Alex (Gast)


Lesenswert?

>Warum postest Du nicht - wie schon mehrmals erbeten - einen Schaltplan
>und/oder Fotos vom Aufbau??
wie ich schon mehrmal gesagt habe, liegt die Schaltung auf der Arbeit. 
ich komme morgen früh dahin, und schon um 7.00 sind die fotos da :)

@winne :JTAG hat mega16 aum PortC.

>Natürlich. Das wär wieder der Klassiker: JTAG-Fuse gesetzt.
ist NICHT gesetz

von Jörg B. (joerg-sh)


Lesenswert?

Bei mir war es ja bis jetzt immer das eine Leitung nicht richtige 
angeschlossen war. Grad bei nicht durchkontaktierten Platinen...

Das hab ich dann auch meist immer nach Stunden gefunden anstatt gleich 
ALLE Leitungen durch zu klingeln...

von Alex (Gast)


Lesenswert?

@ Jorg B.
bei mir sind das auf einmal 2 Platinen, die davon perfekt funktionier 
haben.. etwas verdächtig, wenn die 2 zum gleichen Zeitpunkt kaputtgehen.

von Jörg B. (joerg-sh)


Lesenswert?

an beiden das selbe Display (angesteckt) ?

von Alex (Gast)


Lesenswert?

>Jörg B.
nein, ich habe 2 ganz verschiedene.

von Alex (Gast)


Angehängte Dateien:

Lesenswert?

Guten Morgen.
so, die fotos sind im Anhang.

von Alex (Gast)


Angehängte Dateien:

Lesenswert?

und noch ein.

von Ronny S. (duselbaer)


Lesenswert?

Ganz schön eng aufgebaut :)

Hast Du schonmal die Batterie gewechselt/geprüft? Externen Takt mal an 
XTAL1 gegeben, hilft das vielleicht?

von Alex (Gast)


Lesenswert?

@Ronny Spiegel

ENG hat glaube ich eronisch bemeint, oder?
da kommen noch viele Sachen dazu.. sollten zumindestens, desswegen habe 
ich mir noch Platz gelassen.
Batterie ist ok, 8.5V. da sind sowieso 7805s drauf.
warum soll ich takt anlegen, wenn der int. Oszillator aktiv ist?

von Ronny S. (duselbaer)


Lesenswert?

> ENG hat glaube ich eronisch bemeint, oder?

ja :)

> Batterie ist ok, 8.5V. da sind sowieso 7805s drauf.
> warum soll ich takt anlegen, wenn der int. Oszillator aktiv ist?

Ich hab mir jetzt nicht alles durchgelesen, aber Du schreibst, dass der 
uC nicht mehr losrennt (warum auch immer). Ein externer Takt (ich hab da 
meisst nen Tiny genommen und den schnell geflasht, Quarzoszillator oder 
ähnliches tuts natürlich auch) hat da bei mir schon oft Wunder bewirkt.

Ansonsten würde ich mal versuchen, den uC auszutauschen, nur um 
sicherzustellen, dass der nicht defekt ist.

Was mir auch schon passiert ist:

Binary war falsch gelinkt (Makefile war nicht so doll, nur mal eben 
zusammengeschustert). Das hatte zur Folge, dass das Programm immer 
gestartet ist und dann, sobald ein Timer aktiviert wurde, wieder neu 
gestartet wurde. Hat mich bestimmt auch ein paar Stunden gekostet, die 
Ursache zu finden...

Gruss,

RSp

von Alex (Gast)


Lesenswert?

>Du schreibst, dass der uC nicht mehr losrennt

habe ich erst gedacht...
die LED kann man aber blinken lassen.
ganz komisch die ganze Sache.
ich habe leider keinen Anderen AtMega16 da.. nur ......8, dann muss ich 
alles umlöten :(

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Tip von mir: Das LCD-Flachbandkabel ist zu lang. Mehr als 20cm 
unterminiert führt zu Fehlern, ab 40cm geht (oft) gar nichts mehr. 
Ausnahme: extem langsame Busgeschwindigkeiten und Pausen zwischen Daten 
aufschalten und Enable-Impuls.

von Niels H. (monarch35)


Lesenswert?

Travel Rec. wrote:

> Ausnahme: extem langsame Busgeschwindigkeiten und Pausen zwischen Daten
> aufschalten und Enable-Impuls.

Also CPU runtertakten ohne Werte in der Software zuverändern.
Schon den Programmcode mit einem Waitms 1000 anfangen lassen?

von Alex (Gast)


Lesenswert?

>Schon den Programmcode mit einem Waitms 1000 anfangen lassen?
ja.
der andere LCD hat nur ca. 15cm kabel

von holger (Gast)


Lesenswert?

Programmier mal die BODEN und BODLEVEL Fuse.

von Falk B. (falk)


Lesenswert?

@ Travel Rec. (travelrec)

>Tip von mir: Das LCD-Flachbandkabel ist zu lang. Mehr als 20cm
>unterminiert führt zu Fehlern, ab 40cm geht (oft) gar nichts mehr.

Naja, man kann sicher viel falsch machen, aber so pauschal würde ich das 
sicher nicht gelten lassen.

>Ausnahme: extem langsame Busgeschwindigkeiten und Pausen zwischen Daten
>aufschalten und Enable-Impuls.

Das ändert an Reflexionen gar nichts. Siehe Wellenwiderstand.

MFG
Falk

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

>Das ändert an Reflexionen gar nichts.

Richtig, aber daran, daß die Signale stabil sind, bevor Enable gepulst 
wird. Mittels einer Pause zwischen Daten senden und Enable pulsen kann 
man einiges bewirken. Geschieht das zu schnell nacheinander, sieht das 
LCD nur Müll.

von Niels H. (monarch35)


Lesenswert?

holger wrote:
> Programmier mal die BODEN und BODLEVEL Fuse.

Wir eröffnen die grosse Raterunde...jeder darf mal :)

von holger (Gast)


Lesenswert?

>Wir eröffnen die grosse Raterunde...jeder darf mal :)

Was soll man schon noch groß dazu sagen ?
Ohne BODEN aktiviert und BODLEVEL auf höchsten Wert
kommt mir jedenfalls kein ATMega in die Schaltung.

von Falk B. (falk)


Lesenswert?

@ Travel Rec. (travelrec)

>>Das ändert an Reflexionen gar nichts.

>Richtig, aber daran, daß die Signale stabil sind, bevor Enable gepulst
>wird.

Ha, du glaubst doch nicht allen Ernstes, dass ein AVR so schnell ist, 
dass er noch während die Reflexion lustig am klingeln ist, einen Enable 
Puls generieren kann?
Selbst bei 20 MHz sind da mind. 50ns zwischen Daten anlegen und Enable 
Puls. In der Zeit sind die Reflexionen, so es welche gibt, schon dreimal 
abgeklungen.

> Mittels einer Pause zwischen Daten senden und Enable pulsen kann
>man einiges bewirken.

Naja, an die Zeiten im Datenblatt sollte man sich schon halten. Und da 
steht bei mir, dass RW ud RS 140 ns vor der steigenden Flanke von Enable 
anliegen müssen. Das ist immerhin ein Takt bei 7 MHz. nd wenn die 
"Experten" ihre AVRs immer mit 16 MHz takten müssen . . .
Selbes gilt für die Daten, die müssen 195ns vor der fallenden Flanke 
anliegen.

> Geschieht das zu schnell nacheinander, sieht das
>LCD nur Müll.

RTFM. Zu 99,999% hält sich das LCD an das Timing im Datenblatt.

MFG
Falk

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

>Ohne BODEN aktiviert und BODLEVEL auf höchsten Wert
>kommt mir jedenfalls kein ATMega in die Schaltung.

Mir auch nicht. Abgesehen davon ist das wohl der längste Thread, indem 
es darum geht, eine Schaltung mit einem Controller und einem LCD zum 
Laufen zu bringen...

>Ha, du glaubst doch nicht allen Ernstes, dass ein AVR so schnell ist,
>dass er noch während die Reflexion lustig am klingeln ist, einen Enable
>Puls generieren kann?
>Selbst bei 20 MHz sind da mind. 50ns zwischen Daten anlegen und Enable
>Puls. In der Zeit sind die Reflexionen, so es welche gibt, schon dreimal
>abgeklungen.

Du hast die Reflexionen in´s Spiel gebracht. Ach und meine Displays 
laufen alle. Ab 8Mhz brauche ich zwischen Datenausgabe und Enable ein 
'nop', ab 16Mhz 2 davon.

von Falk B. (falk)


Lesenswert?

@ Travel Rec. (travelrec)

>Du hast die Reflexionen in´s Spiel gebracht. Ach und meine Displays

Nöö, das hast du implizit getan.

"Tip von mir: Das LCD-Flachbandkabel ist zu lang. Mehr als 20cm
unterminiert führt zu Fehlern, ab 40cm geht (oft) gar nichts mehr."

>laufen alle. Ab 8Mhz brauche ich zwischen Datenausgabe und Enable ein
>'nop', ab 16Mhz 2 davon.

Ahha, also dann lügt das Datenblatt also doch nicht. Wie sagt ein 
Kollege von mir immer:

"Kaum macht man es richtig, schon funktionierts.".

MFG
Falk

von Volker (Gast)


Lesenswert?

@ Travel Rec. (travelrec)

>Mir auch nicht. Abgesehen davon ist das wohl der längste Thread, indem
>es darum geht, eine Schaltung mit einem Controller und einem LCD zum
>Laufen zu bringen...


Scheint die nahtlose Fortsetzung von diesem Thread:

Beitrag "LCD am AVR Problem"

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

>>Du hast die Reflexionen in´s Spiel gebracht. Ach und meine Displays

>Nöö, das hast du implizit getan.

>"Tip von mir: Das LCD-Flachbandkabel ist zu lang. Mehr als 20cm
>unterminiert führt zu Fehlern, ab 40cm geht (oft) gar nichts mehr."

Nee nee, mal langsam: Flachbandkabel neigt zu Übersprechen und das nimmt 
bei hohen Geschwindigkeiten zu. Somit hat man kurz nach dem Umschalten 
nicht nur mit Reflexionen, sondern eher mit Signalverzerrungen infolge 
Übersprechen und Kapazitäten zwischen den einzelnen Leitern zu tun. 
Deshalb mein (allgemeingehaltener) Hinweis zum Flachbandkabel. Aber 
egal, daran liegt´s ja nun wohl nicht, daß das LCD nicht geht...

von Stefan B. (stefan) Benutzerseite


Lesenswert?

Alex wrote:
> Guten Morgen.
> so, die fotos sind im Anhang.

Aha.

Alex wrote:
> da ist nur der Atmega16, seine Stromversorgung und ein Anschluss für den
> LCD drauf.. mehr nicht.

Nö.

Vielleicht hängt es damit zusammen. (Gerade gesehen, Danke an die 
Diskutanten dort für die ausführlichen Erklärungen und Tipps.)
Beitrag "Anstiegszeit von AVCC und VCC verschieden ATmega 128"

Mir dünkt auf der rechten Seite des Fotos ist eine eigene 
Spannungsversorgung für AVcc...

Stammt die Erfahrung "gestern liefs noch" vielleicht aus der Zeit, als 
die rechte Seite der Platine noch nicht bebastelt war?

Ansonsten halte ich mich ab jetzt hier raus, bis ein vernünftiger 
Schaltplan kommt. Es hat so keinen Zweck.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Nee, so wie es auf der Unterseite aussieht, wird AVcc über einen 
Widerstand von Vcc abgeleitet. Ist aber auch nur geraten.

von holger (Gast)


Lesenswert?

Bei dem fetten Elko der da scheinbar auch hinter dem
Spannungsregler sitzt tipp ich immer noch auf BODEN.
Ich würde das Riesenteil da mal auslöten und max 10uF einsetzen.

Ich denke auch es wird jetzt Zeit hier Schluß zu machen.

von Knut B. (Firma: TravelRec.) (travelrec) Benutzerseite


Lesenswert?

Ein Satz noch: Wenn die Schaltung mal ging und jetzt nicht mehr geht, 
muß irgendetwas verändert worden sein oder es hat sich von allein etwas 
verändert (vom Material her). Dies herauszufinden, kann nur der Alex 
selbst erledigen.

von Alex (Gast)


Lesenswert?

ich habe mir einen anderen mega16 geholt.. geht alles wieder :)

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.