Hilfe und Tipps bei der Fehlersuche

OP #3037588
Lesenswert?

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 ?
Angehängte Dateien:
Gast #3037614
Lesenswert?

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!
OP #3037623
Lesenswert?

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 ?
Gast #3037645
Lesenswert?

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?
OP #3037665
Lesenswert?

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
OP #3037753
Lesenswert?

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
Gast #3037806
Lesenswert?

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!!!
Gast #3037810
Lesenswert?

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)
Gast #3038061
Lesenswert?

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)?
(Firma: matzetronics) #3038064
Lesenswert?

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.
Gast #3038081
Lesenswert?

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.
OP #3038112
Lesenswert?

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...
(Firma: matzetronics) #3038114
Lesenswert?

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.
OP #3038183
Lesenswert?

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
OP #3038283
Lesenswert?

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
OP #3038480
Lesenswert?

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..

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