Datum: 25.10.2007 13:44
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
Datum: 25.10.2007 14:09
Schaltungsskizze? Wo liegt R/W vom Display?
Datum: 25.10.2007 14:12
>Schaltungsskizze? Wo liegt R/W vom Display? ist genau so wie hier angeschlossen. http://www.roboternetz.de/wissen/images/thumb/e/ec... am Hardware habe ich nichts verändert, und sie hat ummer funktioniert.. bloss jetzt auf einmal nicht.
Datum: 25.10.2007 14:14
> $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.
Datum: 25.10.2007 14:16
>Das kann dir das Timing zur Ansteuerung aus dem Tritt bringen.
habe ich gerade eben Ausprobiert.
hat sich nichts verändert :(
Datum: 25.10.2007 14:21
Datum: 25.10.2007 14:22
@ Stefan B sehr gute Idee werde ich sofort mal machen :) danke
Datum: 25.10.2007 14:23
Ich würde mal den Kontrast aufdrehen.
Datum: 25.10.2007 14:29
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?
Datum: 25.10.2007 14:29
> Ich würde mal den Kontrast aufdrehen.
alles schon probiert.
Datum: 25.10.2007 14:51
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
Datum: 25.10.2007 14:54
@sven habe gar keinen quarz, darum auf int. gastellt.
Datum: 25.10.2007 14:54
sorry hatte was üebersehen siehe oben
Datum: 25.10.2007 14:55
> $crystal = 10000000
Zähl mal die Nullen!
$REGFILE = "m16def.dat"
$CRYSTAL = 1000000
CONFIG CLOCKDIV = 1 ' zur Sicherheit Taktteiler so einstellen wie
' wir wollen und nicht auf Default verlassen
CONFIG Portb = Output
SET Portb.0 ' AN
DO
TOGGLE Portb.0 ' AN => AUS => AN => ...
WAIT 10 ' 10 Sekunden warten
LOOP
END
|
Datum: 25.10.2007 14:57
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
Datum: 25.10.2007 14:58
@Stefan B. CONFIG CLOCKDIV = 1 ---- Invalid Datatyp [0] ich kenne diesen Befehl leider nicht, desswegen kann ich das nicht bearbeiten .
Datum: 25.10.2007 15:06
Lass die Zeile weg. Spielt beim Atmega16 keine Rolle. Sorry.
Datum: 25.10.2007 15:09
>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. :(
Datum: 25.10.2007 15:16
nochwas nach roboternetz schließt du am port c an laut soft aber an port b sven
Datum: 25.10.2007 15:20
>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.
Datum: 25.10.2007 15:27
Ich hatte auch schon so einen Fehler. Ursache war der Proprammieradapter welcher noch an der Platine angesteckt war.
Datum: 25.10.2007 15:28
Teile dem LCD Controller doch noch bitte mit, das Du den 4 Bit Modus wünscht. Config Lcdbus = 4
Datum: 25.10.2007 15:29
>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.
Datum: 25.10.2007 15:31
@ 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?
Datum: 25.10.2007 15:37
> µ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.
Datum: 25.10.2007 15:45
>Wie kommst du darauf?
was kann es sonst noch sein?
Datum: 25.10.2007 15:47
Ist denn auf dem LCD wenigstens ein schwarzer Balken zu sehen?
Datum: 25.10.2007 15:54
>Ist denn auf dem LCD wenigstens ein schwarzer Balken zu sehen?
ja, wenn ich den Kontrast aufdrehe!
:((
Datum: 25.10.2007 16:07
was könnte ich denn noch machen?
Datum: 25.10.2007 17:03
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.
Datum: 25.10.2007 17:14
... 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 :-)
Datum: 25.10.2007 17:22
Keine schlechte Idee. Vieleicht Bascom's Lahmheit einfach einen oben draufsetzen und den Code einfach mit einem Waitms 1000 anfangen lassen :)
Datum: 25.10.2007 17:49
@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
Datum: 25.10.2007 17:53
>soll ich einen Reset-Taster anbringen? >Einfach gegen 5V tasten, oder? Liest Du eigentlich überhaupt nichts? Nichtmal Datenblätter?
Datum: 25.10.2007 17:58
>Liest Du eigentlich überhaupt nichts? Nichtmal Datenblätter?
uups, sorry :))
habe mich verschrieben.. ich meinte gegen GND natürlich :)))
Datum: 25.10.2007 17:59
> 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?
Datum: 25.10.2007 18:06
>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 :)
Datum: 25.10.2007 18:26
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
Datum: 25.10.2007 19:13
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....
Datum: 25.10.2007 19:37
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... :))
Datum: 25.10.2007 19:44
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
Datum: 25.10.2007 20:24
>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 ;-)
Datum: 25.10.2007 20:33
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
Datum: 25.10.2007 20:40
>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.
Datum: 25.10.2007 20:42
>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.
Datum: 25.10.2007 21:15
..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??
Datum: 25.10.2007 21:16
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.
Datum: 25.10.2007 21:22
>Hat der 16 zufällig ne Jtag?
Natürlich. Das wär wieder der Klassiker: JTAG-Fuse gesetzt.
Datum: 25.10.2007 21:37
>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
Datum: 25.10.2007 21:49
>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
Datum: 25.10.2007 22:11
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...
Datum: 25.10.2007 22:34
@ 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.
Datum: 26.10.2007 00:52
an beiden das selbe Display (angesteckt) ?
Datum: 26.10.2007 07:30
>Jörg B.
nein, ich habe 2 ganz verschiedene.
Datum: 26.10.2007 07:41
Guten Morgen. so, die fotos sind im Anhang.
Datum: 26.10.2007 08:03
Ganz schön eng aufgebaut :) Hast Du schonmal die Batterie gewechselt/geprüft? Externen Takt mal an XTAL1 gegeben, hilft das vielleicht?
Datum: 26.10.2007 08:19
@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?
Datum: 26.10.2007 08:28
> 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
Datum: 26.10.2007 08:38
>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 :(
Datum: 26.10.2007 09:39
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.
Datum: 26.10.2007 09:44
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?
Datum: 26.10.2007 10:51
>Schon den Programmcode mit einem Waitms 1000 anfangen lassen?
ja.
der andere LCD hat nur ca. 15cm kabel
Datum: 26.10.2007 15:42
Programmier mal die BODEN und BODLEVEL Fuse.
Datum: 26.10.2007 15:47
@ 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
Datum: 26.10.2007 15:52
>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.
Datum: 26.10.2007 15:52
holger wrote:
> Programmier mal die BODEN und BODLEVEL Fuse.
Wir eröffnen die grosse Raterunde...jeder darf mal :)
Datum: 26.10.2007 15:59
>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.
Datum: 26.10.2007 16:02
@ 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


