Moin,
es geht um folgendes: ICh habe hier jeweils einen MEGA32 und einen
MEGA644P. Aufbau ist folgender: Der AVR bekommt über ein Quarz einen
Takt zugeführt, ganz normal per 22pf-Kondis gegen GND gezogen und auf
XTAL1 udn 2. Neben XTAL1 liegt an Pind.0 ein knapp 1 MHz schnelles
Signal an, das nicht synchron zum AVR läuft und auf seinen Zustand
geprüft werden muß.
Jetzt das seltsame - nach wochenlangen rumprobieren und erfolglosen
Versuchen habe ich das Quarz entfernt, an einer LED an einem anderen
Port sekudnenweise herausblinken lassen und gemerkt, daß das 1
MHz-Signal an pind.0 den AVR taktet.
Gut, XTAL 1 und 2 aus dem Sockel weggebogen, pind.0 drinnen gelassen,
AVR wird immer noch extern getaktet. Alles Fuses von Ceramic Resonator
über Einstellung X und Y, CKOPT an/aus, irgendwas auf weiß der Henker
was gestellt, AVR taktet immer noch, selbst wenn man böserweise XTAL1
und 2 kurzschließt oder beide voll gegen Masse zieht. Irrsinnigerweise
verhält sich sowohl der MEGA3 als auch der 644er gleich. Das 1
MHz-Signal scheint sogar ein vorhanenes, parallel mitlaufendes
Quarzsignal zu stören.
"überspricht" hier etwas -im- AVR, an den Pins, oder ist mit den 1 MHz
asynchroner Takt an diesem Pin für den AVR technisch gesehen ein Limit
erreicht, ist intern in den AVR-Prots ein Problem, was solche Frequenzen
angeht, das velelicht der Pullup oder weiß der Henker wer intern auf GND
und somit auf Takt streut; habe ich hier ein simples Übersprechen - voll
ratlos im Moment.
Viele Grüsse
Sorry, Schaltplan, Code etcpp ist leider nicht; das ist ein Projekt, an
dem mehrere Leute sitzen und das in den Verkauf geht. Nur, um es von
vorneherein "auszusieben": Ich programmiere AVR´s seit 15 Jahren, falls
Gelüste nach "drück´s ihm rein, ist bestimmt ´n Anfänger-Depp"
hochgekommen sein sollten.
´s hat nichts mit der Programmierung oder den Fuses ansich zu tun. Ich
weiß, "höh, der hat die 1 MHZ internal RC-Fuse gestellt=> eben nicht.
Ich weiß, was ich tue. Aber den Fall hatte ich eben noch nicht. Mag ja
sein, das beim AVR bei 1 MHz aynchron Feierabend ist, vielleicht tiltet
auch der UART dahinter herum; ich weiß es nicht.
Viele Grüsse
Was passiert, wenn Du den Pin D.0 als Ausgang setzt, oder wenn er noch
Eingang ist ihn nach Masse kurzschließt?
Irgendjemand muß ihn doch takten, sonst würde er doch Deine Kontroll-LED
nicht blinken lassen können.
MfG Paul
Wenn du als einzige Info nen ellenlangen Text hergibts würde ich an
deiner Stelle nicht mehr als die immergleichen Vorschläge aus der
Glaskugel erwarten.
Es gibt doch ne Fuse, die den internen Takt direkt an einen Pin legt.
Häng dich da doch mal mit dem Oszi drauf, daraus sollte sich schließen
lassen, welche Frequenz das Störsignal hat.
Oder probier doch mal, ob die Störung weg ist, wenn das 1MHz-Störsignal
abgeklemmt wird.
Sorry.Ich habe grob gesehen eine mit Eagle gamachte, gätzte Platine,
einen AVR, ein Quarz (wahlweise 14-22 MHz), am Quarz zwei 22pf-Kondis
gegen Masse. Der Mega32 (wahlweise Mega644P) (beide DIL-40), bekommt an
Portd.0, also genau neben XTAL1, ein knapp 1 MHz Rechtecksignal
zugeführt. Dieses Signal muß ich auf high/low überprüfen; spielt aber im
Moment keine Rolle. Das Signal wird von einam anderen Schaltkreis
erzeugt, der quarzseitig nicht synchron mit dem AVR arbeitet.
In dem Moment, in dem das Quarz entfernt ist und die Pins von XTAL1 und
XTAL2 nur noch in Richtung Kondensatoren gelegt sind und der AVR noch
auf External Crystal steht (gleichwohl, welche Einstellung), bezieht der
AVR diese 1 MHz als Ersatz für einen Quarztakt. ziehe ich XTAL1, oder 2,
oder beide auf Masse, oder schleße sie kurz, bezieht der AVR seinen Takt
an portd.0 immer noch von diesem 1 MHz-Signal. Das einzigste, wo der AVR
nicht auf dieses Signal reagiert, ist, wenn der interne RC aktiviert
ist.
Jedwede Fuse außerhalb der CKSEL-Fuses, d.h. Brown-out, CKOPT oder
dergleichen, hat keinen Einfluß auf das Verhalten. Die Platine habe ich
auch schon etliche male durchgemessen; es ist nichts festzustellen.
Deswegen mein Verdacht, das entweder der Eingang "stört" und/oder intern
zum Takt wird.
Viele Grüsse
Und, habe ich vergessen zu erwähnen: Ja, der Prozessor bleibt stehen,
sobald das 1 MHz-Singal weggeklemmt wird. Das Testprogramm ist nur ein
simples Bascom-Programm, das einfach nur, ohne jegliche überprüfung
dieses Pins, alle 500ms einen Pin einschaltet und nach 500ms wieder
ausschaltet.
Möglich. Hängt vom mechanischen Aufbau ab, die Amplitude am Quarz ist
nicht sehr groß, und der Eingangsverstärker sehr hochohmig, da kriegt
man alles mögliche rein.
Könnte man lösen, indem man das Störsignal räumlich vom Quarz wegführt
oder zumindest zur Abschirmung eine Leitung dazwischenlegt, die auf
GND-Potential liegt. Das hilft ja auch bei Flachbandkabeln gegen
übersprechen.
Alternativ/zusätzlich könnte man das Übersprechend noch deutlich
mildern, indem man die Flankensteilheit des zugeführten Störsignals
verringert.
@ttl: Nönö, das "Produkt" ist ordentlich in ASM programmiert. Mit Bascom
tut man sich bei so Kleinigkeiten halt wesentlich einfacher ;-)
@Andreas K - werde ich probieren. Ich meine mal vor etlichen Jahren von
einem ähnlichen Problem gelesen zu haben.
IOch probiers einfach nochmal mit verlegtem Signal durch.
Vielen Dank an alle!
Gruß
Stef schrieb:> Sorry, Schaltplan, Code etcpp ist leider nicht; das ist ein Projekt, an> dem mehrere Leute sitzen und das in den Verkauf geht. Nur, um es von> vorneherein "auszusieben": Ich programmiere AVR´s seit 15 Jahren, falls> Gelüste nach "drück´s ihm rein, ist bestimmt ´n Anfänger-Depp"> hochgekommen sein sollten.
Auch Profis sind nicht unfehlbar und machen mal ganz ganz dusselige
Fehler.
Mit dem jetzigen Informationsstand kann man dir so gut wie gar nicht
helfen.
Simon K. schrieb:> Stef schrieb:>> Sorry, Schaltplan, Code etcpp ist leider nicht; das ist ein Projekt, an>> dem mehrere Leute sitzen und das in den Verkauf geht. Nur, um es von>> Auch Profis sind nicht unfehlbar und machen mal ganz ganz dusselige> Fehler.>> Mit dem jetzigen Informationsstand kann man dir so gut wie gar nicht> helfen.
Nicht nur das.......er will Geld damit verdienen aber die
"Drecks"-arbeit soll jemand (wir?) umsonst machen!
Gruss
Michael
Stef schrieb:> Und, habe ich vergessen zu erwähnen: Ja, der Prozessor bleibt stehen,> sobald das 1 MHz-Singal weggeklemmt wird.
wie..."weggeklemmt"....Du erklaerst uns doch gerade, dass das aus dem uC
selber kommt weil alles andere okay ist.
Was macht der uC im Emulator?
Im Einzelschrittbetrieb?
Gruss
Michael
@Michael Roeck:
Sorry, wenn Du dich dadruch angefriffen fühlen solltest, ich habe
lediglich eine Frage gestellt, ob es für dich persönlich nicht stimmig
ist, bleibt dir überlassen. Gesetzt den Fall ,ich hätte die Aussage
nicht gebracht, das ich die Platine verkaufen möchte -ich habe selbst
ein Jahr "Drecksarbeit" mit der ganzen Sache hinter mir- wäre die Frage
dann "umsonst" gewesen? Wie verhält es sich denn in den ganzen
Programmierforen anseits von Controllern, meinetwegen in VB, C oder weiß
der Henker welchen Foren? Sitzen den nnur Leute, die aus Spaß an der
Freude programmieren? Oder in Office-Foren, wo Leute fragen stellen, die
gerade in der Arbeit sitzen und wegen einem Problem nicht weiterkommen?
Die verdienen mit der Antwort, die ihnen auf ihre Frage gegeben wird,
auch ihr Geld. Und selbst wenn, was ist daran so schlimm? Wen nich
jemandem eine Antwort auf eine Frage gebe, was Controller anbelangt,
ziehe ich auch 15 Jahre Programmiererfahrung aus dem Ärmel, bezahlt mir
-die- irgendjemand?
Also, immer locker bleiben.
Stef schrieb:> @Michael Roeck:> Also, immer locker bleiben.
Mich regt nicht auf, dass Du fragst, sondern dass Du Hilfe moechtest
aber keine Angaben aus den o.a. Gruenden liefern willst.
Wenn Du so viel Erharung hast, weisst Du auch, dass Du kaum auf
Unterstuetzug hoffen kannst, wenn Du keine Unterlagen schickst und nur
sagst dass Du schon alles richtig gemacht hast und furchtbar viel
Erfahrung hast.... einen Besseren als Dich findest Du dann hier nicht.
Gruss
Michael
Ja, das ist schon richtig, wie gesagt, ich kann aus den genannten
Gründen keine Schaltung offenlegen, so gerne ich es würde.
Das Problem hat sich aber erledigt; da ich schlicht und ergreifend
vergessen habe, den WDR beim Mega32 zu deaktivieren (geht hier ja nur
übers Programm). In der Folge hat der WDR permanent in der scheinbaren
Frequenz von 1 MHz resettet.
Tud mir leid.
Viele Grüsse
>"überspricht" hier etwas -im- AVR, an den Pins,
Ja, natürlich! Steht doch in jeder Application Note, daß man mit
digitalen Signalen in der Nähe des Oszillator vorsichtig sein soll und
genügend Abstand halten muß.
Du hast hoffentlich kein DIL40-Gehäuse??
Er schrieb DIL Gehäuse. Dann schrieb er auch, dass der Atmel stehen
bleibt, wenn das 1MHZ Signal entfernt wird. Und später dann, dass es der
Watchdog war... Irgendwas passt nicht.
@ttl: Auch laufen die von mir (große sowie kleine) mittels Bascom
erstellten Programme bisher zuverlässig. Andere im Netz gefundene ASM
oder auch C Programme hängen auch gelegentlich... Die Hauptfehlerquelle
beim proggen sitzt meist zwischen Tastatur und Stuhllehne.
Also immer schön locker bleiben...
Es kann schon vorkommen, dass ein PIN überspricht. Störungen durch hohe
Frequenzen lassen sich durch gutes Board-Design in den Griff bekommen.
Einen anderen Eingangspin nehmen und die ungeschirmten Wege so kurz wie
möglich halten.
@Peter R.: Das mit dem WDR ist in der Tat verwunderlich. Faktisch, mit
aktiviertem WDR, ohne Quarz, aber mit 1 MHZ-Signal, blinkt er in ca.
einem MHz heraus. Ist das Signal weg, bleibt er stehen.
Deaktiviert man den WDR, blinkt er mit oder ohne diesem 1 MHZ-Signal und
ohne Quarz nicht mehr heraus.
Gezwungenermaßen habe ich nun das 1 MHZ-Signal auf Portd.6 gelegt und
der AVR arbeitet überhaupt nicht mehr, d.h. selbst SPI funktioniert nur
sporadisch. Der Abstand vom AVR zum Quarz beträgt ca. 5mm. wird das
Signal wieder entfernt, habe ich zumidnest wieder Zugriff auf den AVR.
Die Signalleitungen auf dem Board haben quasi alle eine Masseschirmung.
Viele Grüsse & sorry für die "Konfusion", ih bin auch schon garz wirr im
Kopp. Besser, ich mache morgen daran weiter.
XTAL1 ist ein analoger Eingang, von daher könnte es ungünstig sein, an
den Nachbarpin niederohmig hohe Frequenzen anzulegen.
Es kommt dann sehr auf das Layout an, das sollte Du mal zeigen.
Es gibt auch ne Atmel AN mit Schaltplan und Layout.
Die üblichen Anfängertips brauchst Du wohl nicht.
Peter
Stef schrieb:> ganz normal per 22pf-Kondis gegen GND gezogen
Das könnte auch Teil des Problems sein, nicht drüber nachgedacht,
einfach kopiert? Und der Rest der Schaltung?
Denn für meine Quarze z.B. wäre 56pF angebracht.
Wie man das aufbaut ist auch nicht zu vernachlässigen.
Stef schrieb:> Gezwungenermaßen habe ich nun das 1 MHZ-Signal auf Portd.6 gelegt und> der AVR arbeitet überhaupt nicht mehr
Deutlichen Zeichen, daß mit der Hardware was im Argen liegt (Schaltplan,
Layout, Kurzschluß, Unterbrechung).
Peter
Stef schrieb:> Das Problem hat sich aber erledigt; da ich schlicht und ergreifend> vergessen habe, den WDR beim Mega32 zu deaktivieren (geht hier ja nur> übers Programm). In der Folge hat der WDR permanent in der scheinbaren> Frequenz von 1 MHz resettet.
Anfängerfehler würd ich sagen.
@Andreas K.: Nein, Flüchtigkeitsfehler. For lauter "tralala".
Ansosten: Habe die Platine abgescannt und kann im Füllbereich keinen
Schluß an GND feststellen. Das liegt mit sehr hoher Wahrscheinlichkeit
der Fehler.
Vielen Dank an alle, die sich den Kopp zerbrochen haben ;-)
Viele Grüsse & guten Wochenstart!
Hi
>Anfängerfehler würd ich sagen.
Eher eine faule Ausrede. Der ATMega644 hat einen 128kHz
Watchdog-Oszillator und der Watchdog kann mit maximal f/2 ausgelöst
werden.
Der ATMega32 hat zwar einen 1Mhz Oszillator. Aber die höchste Frequenz
wäre f/16k.
MfG Spess