Bei meinem neuen "Nachbau" Projekt habe ich echte Probleme, vielleicht habt Ihr einige Tipps. Stehe echt auf dem Schlauch ! Nun es geht um folgendes, ein DDS AVR Signalgenerator http://www.scienceprog.com/avr-dds-signal-generator-v20/ Die Anzeige ist nur beluchtet und am Pin 19 des Atmega16 Kein Signal. OpAmp und das Widerstandnetzwerk noch nicht eingelötet. Den original Schaltplan habe ich geringfügig abgeändert und eine eigene PCB erstellt. Was wurde gemacht : 1 . Firmware , HEX Datein mit Pony auf dem AVR übertragen. 2. PonyProg Fuse Einstellungen CKSEL 0 bis CKSEL 3,SUT0, SUT1 deaktiviert, alle andere Fuses ungeändert. Also diese Optionskästchen sind unmarkiert. Eine LCD Anzeige 16x2 angeschlossen. Die Versorgung am AVR OK und habe die LCD Leitungen RS.RW,E DB4 bis DB7 direkt von LCD bis Atmega Pin durchgemessen. OK. Die Anzeige ist OK. Kontrast auch...( Habe schon etliche Sachen mit AVRs und LCD gebaut ) Hier noch mein Schaltplan und Board. Ich habe mal die Schaltung auch kurz auf dem Steckbrett zusammengesteckt. Das gleiche Ergebnis. Bei der Fehlersucherei, habe auf dem AVR getippt, habe meinen letzten Atmega16 total verfused. Mit einem Quartzoszillator an XTAL1 kriege ich momentan auch keine Verbindung hin. Wo kann ich noch suchen ?
Du hast die Fuses für externe Taktquelle eingestellt, aber einen Quarz angeschlossen. Das kann nicht funktionieren. Ponyprog kann jetzt auch nicht mehr auf den Flash Speicher zugreifen, oder doch? Wo sind denn die Abblock-Kondensatoren der 5V Spannungsversorgung? Die sind ganz wichtig!
Moment, wenn CKSEL0 bis CKSEL3 im Ponyprog deaktiviert sind, dann ist es für einen Quarz.Das stimmt. Nach dem ich verfused habe, habe mit einem Quarzoszillator versucht dranzukommen. Die Schaltung bekommt 8V von einem Labor NT , ich denke das Problem, wenn eine LCD garnichts anzeigt, liegt nicht undbedingt an 100nF an 5V. Auf dem Steckbrett geht auch nicht. oder wie sollten die Fuses bei einem Atmega16 mit 16MHz Quarz aussehen in verbindung mit Ponyprog ?
Ok, Ponyprog zeigt ein Häkchen, wenn die Fuse "0" ist - sehr verwirrend. Wie ist das nun mit der Spannungsversorgung? Du hast doch nicht etwa 8V als VCC angelegt? Kondensatoren an VCC sind sehr wichtig! Wenn die fehlen, dann kann alles mögliche passieren. Und wenn die Leitungen zwischen AVR und dem 5V Spannungsregler (bzw Netzteil) länger als 10cm sind, dann brauchst Du auch noch Elkos an VCC/GND, zum Beispiel 10yF. Schwingt der Quarz? Wenn nicht, kümmer Dich um die Spannungsversorgung und kontrolliere die Fuses nochmal. Wenn er schwingt, schreibe ein Minimalprogramm (z.B. LED Blinker), dann siehst Du, ob der AVR überhaupt funktioniert. Die mir bekannten LC-Displays zeigen in nicht-initialisiertem EINEN grauen Balken an (alos ob der Kontrast schlecht eingestellt sei). Die andere Zeile bleibt hell. Erst nach erfolgreicher Initialisierung verschwindet der Balken. Wie sieht das bei Dir aus?
Nochwas: Berührt das Gehäuse des Quarz die Platine? Schiebe ein Stück Papier dazwischen.
Ja von einer Seite ist Pony braucht etwas gewöhnungsbedürftig. Arbeite schon länger damit, ich glaube , habe bisher max 2 oder 3 AVRs verfused. Klaro lege ich keine 8V an AVR an...da ist doch ein 7805 verbaut. Stefan schrieb: > Wie sieht das bei Dir aus? "zeigen in nicht-initialisiertem EINEN grauen Balken an (also ob der Kontrast schlecht eingestellt sei). Die andere Zeile bleibt hell." Genauso Zeile1 sind Balken, Zeile 2 leer. ( Dieses Problem kenne ich, kommt auch vor, wenn die LCD evtl. falsch angeschlossen wäre ) Deshalb habe ich irgendwo richtung AVR getippt weil die Anschlüsse korrekt sind. Was mich wundert, daß der Anschluss RW vom Controller gesteuert wird, normaleweise liegt dieser LCD Pin an GND
Stefan schrieb: > Nochwas: Berührt das Gehäuse des Quarz die Platine? Schiebe ein Stück > Papier dazwischen. Nein, das ist auch klar...( Aufbau auf dem Steckbrett teigte zu 100% das gleiche Problem ! )
Könnte jemand, der sich mit C auskennt schauen, wie ist mit dem LCD Anschluss RW aussieht ? Ich kenne es so, weil in Bascom RW nicht benutzt wird, also immer GND. Zum Testen , ob grundsätzlich alles soweit OK ist, werde dieses Programmchen mal reinladen. $regfile = "M16def.DAT" $crystal = 16000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.2 , Rs = Portc.0 Rw Alias Portc.1 Config Rw = Output Rw = 0 Cls Do Locate 1 , 1 Lcd "Zeile 1" Locate 2 , 1 Lcd "Zeile 2" Loop
RW und nicht RW: Du kannst damit das Display auslesen. Oft wird das nicht benötigt, daher hängt der Pin an GND (=W).
Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.2 , Rs = Portc.0 Jo, RS, nicht RW an PC1 (!) anschließen! Bei deinem Listing steht: Rs = Portc.0 Im Schaltplan ist aber Portc.1 verbunden, das muss angeglichen werden. Abblock-C 100n so dicht wie irgend möglich an +/Masse des Controllers!!!
erik schrieb: > Jo, RS, nicht RW an PC1 (!) anschließen! Bei deinem Listing steht: > Rs = Portc.0 > Im Schaltplan ist aber Portc.1 verbunden, das muss angeglichen werden. Also beides verbessern: -am Display RS anschließen (RW kommt auf Masse wenn nicht gelesen werden soll, meine ich, Datenblatt gucken) -Rs = Portc.1 (wenn es so wie im Plan oben angeschlossen ist)
Rs ist angeschlossen an Pin 22 RW lege ich dann auf Masse. Muss schauen ob ich meinem verfused Atmega wiederbeleben kann, ansonsten warten bis Reichelt nöchste Woche welche bringt. Danke ! Gibt es noch eine andere Möglichkeit wie mit 1 Mhz an Clock1 rangehen den verfused AVR zu reanimieren ? HV Programmer habe keinen.
Thomas der Bastler schrieb: > Gibt es noch eine andere Möglichkeit wie mit 1 Mhz an Clock1 rangehen > den verfused AVR zu reanimieren ? klar. wenn du noch einen zweiten controller hast, kannst du ihn so programmieren, dass er an einem bein immer den zustand wechselt (toggelt). an diesem bein liegt dann die halbe taktfrequenz an. damit taktest du dann den verfuseden controller. Die Clock muss auch nicht genau 1 Mhz haben. wahrscheinlich kannst du mit einem astabilen multivibrator und einem emitterfolger zur impedanz-wandlung bereits ein brauchbares clock-signal erzeugen. oder du baust mit einem transistor einen quarzoszillator auf, wandelst mit einem zweiten transistor die impedanz (wieder emitterfolger) und fütterst damit die clock. dabei aber auf jeden fall auf die richtigen pegel achten (nicht zu groß und nicht zu klein). du kannst auch mit vielen ttl-bausteinen (74xxyyy) einen quarzoszillator aufbauen, dann stimmt der pegel (hoffe, die angabe ist so richtig, bin hier kein fachmann, bitte geg. korrigieren). weiß nicht, wie du bauteilemäßig ausgestattet bist. eventuell läßt sich ein älteres defektes gerät (radio, cd-player etc.) zur teilegewinnung ausschlachten. hast du si-dioden und/oder zenerdioden um die 3 bis 5V vorrätig (zur signalbegrenzung)?
Thomas der Bastler schrieb: > Gibt es noch eine andere Möglichkeit wie mit 1 Mhz an Clock1 rangehen > den verfused AVR zu reanimieren ? Ja, du kannst mit einem anderen AVR und Pin toggeln den Takt erzeugen und an XTAL1 einspeisen. Die genaue Taktfrequenz ist unwichtig, da die AVRs voll statisch arbeiten, allerdings darf die ISP Frequenz max. 1/4 des angelegten Taktes sein. Das solltest du in PonyProg einstellen. Ein externer TTL Oszillator geht da auch. Sowas findet sich ab und zu auf alten Mainboards und VGA Karten, darf bloss nicht flotter als 20 MHz sein.
Matthias Sch. schrieb: > Die genaue Taktfrequenz ist unwichtig, da die > AVRs voll statisch arbeiten, Dann kannst du wohl auch einen trafo mit sekundär 9V o.a. nehmen und die ausgangsspannung über einen vorwiderstand und zwei anitparallele diodenreihen auf 3V begrenzen und das ganze als takt benutzen. dauert bei 50Hz dann zwar recht lange, bis die fuses neu geschrieben sind, sollte aber auch funktionieren. wenn du dich nicht so auskennst, lieber noch mal hier nachfragen, bevor du das machst (wegen richtiger spannungsbegrenzung). auf jeden fall musst du erst die masse anschließen, bevor die clock verbunden wird (wegen eventueller überspannungen). ps: ein netzteil mit pulsierender gleichspannung sollte auch gehen, auf jeden fall muss aber die ausgangsspannung noch begrenzt/an die maximal zulässige CLK-spannung des Controllers angepasst werden und darf auf keinen fall größer sein als die reale betriebsspannung des controllers.
Danke für die zahlreichen Vorschläge, hoffe komme ich heute dazu ! Was Bauteile anbelangt, glaube ich, recht gut ausgestattet ! Ich werde probieren, ich glaube, daß Problem war ja evtl. bei mir, wo ich auch mit einem 4Mhz Oszillator probiert hatte Pin 14 - 5V Pin 7 - GND Pin 8 an AVR XTAL1 daß ich den ISP Frequent "unverändert" habe. Mal gucken...
4 Mhz ist optimal! Wie erwähnt, musst du nur noch ISP unter 1MHz drücken. Ich programmiere meistens mit 125kHz, da ich es nicht so eilig habe :-P erik schrieb: > Dann kannst du wohl auch einen trafo mit sekundär 9V o.a. nehmen und die > ausgangsspannung über einen vorwiderstand und zwei anitparallele > diodenreihen auf 3V begrenzen und das ganze als takt benutzen. Hahaha - da musst du aber wirklich viel Zeit haben und vor allen Dingen ein Programmer, der mit 10Hz oder so arbeitet.
Vielleicht meint er die 100kHz aus einem Schaltnetzteil ;-) ..duckundwech... Irgendwo hatte ich auch mal gelesen, eine Textdatei mit lauter "U" ´s per terminalprogramm an der RS232 ausgeben, und als Takt benutzen. Weiss aber nicht mehr wo das war. Gruss Asko.
Also der Atmega lebt wieder habe erfolgreich auf Quarzbetrieb geflascht. alles OK Moment.... erik schrieb: > Jo, RS, nicht RW an PC1 (!) anschließen! Bei deinem Listing steht: > Rs = Portc.0 > Im Schaltplan ist aber Portc.1 verbunden, das muss angeglichen werden. Im Schlatplan ist folgendes : RS Portc.0 RW Portc.1 ( kommt auf GND ) E Portc.2 oder ? Demnach ist der Code hier so OK $regfile = "M16def.DAT" $crystal = 16000000 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.2 , Rs = Portc.0 Config Lcd = 16 * 2 Cls Do Locate 1 , 1 Lcd "Zeile 1" Locate 2 , 1 Lcd "Zeile 2" Loop
Irgendwo ist der Wurm drin... Mein Programm läuft weder in der fertige Platine noch auf dem Steckbrett.. Um die Problematik, weiter einzugrenzen, habe das Programmchen auch einen MEGA8 angepasst...klar läuft auf dem gleichen LCD auf meinem Steckbrett. Also muss irgendwas mit dem MEGA16 was sein. Die LCD Anschlüsse habe nochmal durchgeklingelt bis zum MEGA16 Pins. Passen. LCD ist OK, läuft mit meinem ATMEGA8 Steckbrett
An der JTAG Fuse mache normaleweise nichts, also Originalzustand. Wenns so wäre, klar dan würde nicht funzen LCD DB7
Das ist der Punkt, im Mega16 ist JTAG default enabled und Du must es disablen damit Du die Pins als IO benutzen kannst.
Oh...das ist aber ein guter Hinweis !!!!!! könnte dran gelegen haben...
Thomas der Bastler schrieb: > Oh...das ist aber ein guter Hinweis !!!!!! könnte dran gelegen haben... Funktionierd denn jetzt alles?
Naja, mein Mega16 zickt wieder rum.... Konnte einmal auslesen, die Fuses waren zu dem Zeitpunkt, nach dem setzen OK Also CKSEL alle demarkiert. sowie SUT0 und SUT1 also passte. danach habe ich mein testprogramm reingeladen ging , von flashen her ja, aber das Programm lief nicht.JTAG war also noch im Originalzustand, also kann keine LCD Ausgabe erfolgen weil DB7 nicht geht. Seitdem kommt ich wieder nicht ran. Muss meinen 1 MHz wieder anschliessen. Habe momentan zur Seite gelegt, ich bräuchte für Heute mal ein Erfolgserlebnis. Habe meinen MEGA8 für ein Audio Projekt, mit LCD erfolgreich geflasht und getestet. Ich warte bis nächste Woche bis frisch Fleisch von Reichelt kommt. Dann werde ich mal erneut probieren. JTAG muss also "demarkiert in Pony sein. Klar, bin sicher es lag daran..hoffe ich...smile..
Keine Ursache, Manchmal sind es kleine Sachen die ganz grosse Freude machen.
Vorallem, wenn man auf nette Leute trifft ! Wieder was dazu gelernt.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.