Bitte helft mir. Schon wieder AtMega16

Gast #684888
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
Angehängte Dateien:
Persönliche Seite #685001
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
#685011
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
Gast #685034
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.
#685153
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 :-)
Persönliche Seite #685181
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?
#685197
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
#685269
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
Gast #685298
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 ;-)
Gast #685307
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
Gast #685367
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
#685521
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
#685864
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
#685882
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
(Firma: TravelRec.) Persönliche Seite #685885
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.
#685895
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
(Firma: TravelRec.) Persönliche Seite #685912
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...
Persönliche Seite #685923
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren