Hallo, folgenden Sachverhalt kann ich mir nicht erklären und hoffe deswegen hier Hilfe zu finden. Hardware: 48 Volt werden an einen LT1641-2 Hot-Swap-Controller geliefert der wiederum einen TPS54160DGQR (Abwärts(-Wandler) Buck) speist welcher 5 Volt generiert die dann mit dem Linear Regler REG1117-3.3 auf 3.3 Volt zum Atmega644 gelangen. Der reset des 644 hängt mit 10k an 3.3V. Jetzt zum Phänomen. Ich lösche über isp den flash und schalte die 48V hart ein dann liegen auf einmal an PortD 0-6 verschiedene Frequenzen an mit 3.3V Pegel. Wenn ich jetzt kurz den Reset auf Masse lege sind die Frequenzen wieder weg. Dreh ich die Spannung langsam hoch sind auch keine Frequenzen da also das normale verhalten eines gelöschten Atmega. Das Jtag fuse ist aus und es ist egal ob ich internen oder externen Oszillator verwende. Jedoch ändert sich mit dem Oscillator auch die Frequenz an PortD. Das verhalten kann unterdrückt werden wenn ich am reset einen 25uF Kondensator nach Masse hänge (einfach in den ISP header). Wenn ich das Flash lese nach dem löschen und es mit dem nach dem Frequenz-Erzeugen Vergleiche ist kein unterschied in der Datei. Ich habe ein zweites pcb was das selbe Phänomen aufweist. Ich habe alle Spannungen Oszilloskopiert und kann keine Störungen ausfindig machen. Wenn der Controller einmal startet laufen die Programme ganz normal. Das müsste ja ein EMV problem sein ?! Wohin springt der Atmega644 nach diesem Störer ohne Programm ?? Vielen Dank und beste Grüße
Simon S. schrieb: > Wohin springt der Atmega644 nach > diesem Störer ohne Programm ?? Ein leerer ATmega mit 64k Flash läuft immer im Kreis herum. 0xFF is No-Op, da läuft er früher oder später in den Bootloader, falls vorhanden, oder per Überlauf des Programmzählers wieder zum Anfang. Das bedeutet allerdings nicht, dass alle Peripherie (Timer, UART, etc.) abgeschaltet ist. Wenn er beim starten aufgrund zu geringer Versorgungsspannung verrückt spielt, kann alles Mögliche passieren. Den Brown-Out-Detektor per Fuses auf 2,7V zu setzen sollte da Abhilfe schaffen.
Vielen Dank für die Antwort. Heißt das also: Wenn ein Leerer Atmega, anfangs eine zu geringe Spannung bekommt und daraufhin verrückt spielt, das er sich wenn die Spannung wieder im Normalen Bereich befindet, sich trotzdem nicht mehr einkriegt ?? Brown Out hatte ich auf 1.8V. Den Bootloader benötige ich ja nicht. Der Bootflashsize in der einstellung ist dann egal ? Kann er in diesem Bootflash irgendwie hängen ? Der müßte doch auch FF sein ?! Beim Flash auslesen ist alles FF. Bis jetzt war es egal wie langsam die Spannung anstieg ich hatte noch nie so ein Problem. Evtl liegt es an den Atmega644 vlt ham die nen Bug?? Die Peripherie wird doch immer durch Konfiguration aktiviert und ist default immer aus ? Also FF->NOP dann aus. Kann es nicht sein das durch einen EMV impuls sich der Flash selbst beschreibt und wenn ich den dann auslese wird der vom reset wieder zurückgesetzt. Ich würde es ja den Lesern gerne vorführen da das alles echt abstrus klingt. Aber an einem leeren Atmega ein schönes 24kHz Rechteck zu messen ist doch irgendwie ?? NE !!
Simon S. schrieb: > Wenn ein Leerer Atmega, anfangs eine zu geringe Spannung bekommt und > daraufhin verrückt spielt, das er sich wenn die Spannung wieder im > Normalen Bereich befindet, sich trotzdem nicht mehr einkriegt ?? Bei Unterspannung kann alles Mögliche passieren. Inklusive Flash-Selbstprogrammierung. Bei einem Projekt von mir hat sich ohne BOD des Öfteren die Firmware beim ausschalten zerschossen. Die musste man in manchen Umgebungen (unterschiedliches EMV) nach jedem zweiten Einschalten neu programmieren, in anderen Umgebungen ging es hunderte Male gut. > Den Bootloader benötige ich ja nicht. Der Bootflashsize in der > einstellung ist dann egal ? Ist ein Bootloader in den Fuses programmiert, springt er nach dem Reset zum Bootloader. Von da per PC-Überlauf zur Adresse 0x00, also zum Reset-Vektor. Direkt zum Reset-Vektor ist besser. Ich finde diese Untersuchungen auch ein bisschen müssig, denn irgendwann wird der Chip ja mal eine Firmware bekommen. Hat er die, weiss man auch, was wo läuft. Mikrocontroller ohne Programm sind irgendwie so redundant ...
Danke Markus, das mit dem leeren Programm habe ich nur gemacht um zu zeigen das es nicht an einem Programmierfehler liegt. Wenn ich ein Programm drauf-spiele kommt es anfangs zu den selben Fehlern, nach einiger Zeit läuft dann das Prog normal. Das einzige was den normalen zustand dann sofort herstellt ist ein reset. Bei der Flash Selbstprogrammierung müsste doch das Programm bei erneutem auslesen Unterschiede aufweisen. Oder kann die EMV Störung den Controller in einen undefinierbaren zustand bringen der nach einem reset wieder weg ist. Zusätzlich ist mir aufgefallen solange ich den AVR ISP MK|| an dem Board angeschlossen habe ist der Fehler nicht aufgetreten. Wie konntest du das mit dem zerschossenen Programm den feststellen ? Ging es einfach nicht und nach Neuprogrammierung lief es wieder. Würdest du den reset zusätzlich mit einem Kondensator filtern z.b 10nF und 10k nach Vcc ?
Hi >das mit dem leeren Programm habe ich nur gemacht um zu zeigen das es >nicht an einem Programmierfehler liegt. >Wenn ich ein Programm drauf-spiele kommt es anfangs zu den selben >Fehlern, nach einiger Zeit läuft dann das Prog normal. An einem leeren AVR rührt sich an den Pins nichts. >Bei der Flash Selbstprogrammierung müsste doch das Programm bei erneutem >auslesen Unterschiede aufweisen. Ja. Allerdings ist mir in 17 Jahren mit AVRs so etwas nicht vorgekommen. >Oder kann die EMV Störung den Controller in einen undefinierbaren >zustand bringen der nach einem reset wieder weg ist. Welche Störung durch EMV hast du denn? >Zusätzlich ist mir aufgefallen solange ich den AVR ISP MK|| an dem Board >angeschlossen habe ist der Fehler nicht aufgetreten. Das deutet darauf hin, das deine Hardware eine Macke hat. Um welchen ATMega644 handelt es sich überhaupt? MfG Spess
Vielleicht ist ein Fehler in der Schaltung oder im Layout und ein 48V Puls kommt irgendwie direkt auf den MC. Klemm mal den Regler und die 48V ab und schaltet direkt die 5V ein und aus. Was MCs garnicht mögen, wenn ein IO-Pin noch vor dem VCC-Pin Spannung kriegt. VCC muß immer der erste und der letzte Pin sein, der Spannung sieht.
:
Bearbeitet durch User
Peter Dannegger schrieb: > Was MCs garnicht mögen, wenn ein IO-Pin noch vor dem VCC-Pin Spannung > kriegt. grundsätzlich richtig und unterschreibe ich aber ein AVR macht wohl gerne eine Ausnahme durch seine interne Schutzbeschaltung die alle Ports über Dioden nach VCC und GND ableitet http://wiki.neo-guerillaz.de/mediawiki/images/thumb/e/eb/Protpin.jpg/400px-Protpin.jpg Peter Dannegger schrieb: > VCC muß immer der erste und der letzte Pin sein, der Spannung sieht. Ausnahmen bestätigen die Regel: Die Leerlaufspannung ist hoch genug um einen Kondi aufzuladen und den MC arbeiten zu lassen, der Strom ist gering genug um nix zu zerstören, funktioniert offensichtlich: http://www.doc-diy.net/photo/hdr-jack/
:
Bearbeitet durch User
Hallo, es handelt sich um ATMEGA644-20AU. Ich wollte den BOD jetzt auf 2.7V stellen da lief das Programm nicht mehr. Also wieder auf 1,8 Volt dann gings. Die Betriebspannung an VCC ist 3,2V jedoch wenn ich ein Pin High setze unbelastet kommt nur 2.69V an. Wahrscheinlich sind die Frequenzen durch dauernde interne reset's zustande gekommen ?! Komisch nur das das zum teil so stabil lief. Wenn ich jetzt ein externes Netzteil direkt am MicroC hab dann ist die pin Spannung immer ca. 0,6 Volt niedriger. Bei 3V zieht er dann so 20mA ... Also der hat dann doch ein schlag weg ?! Wohin verschwinden nur die 0,6 Volt?
Hi, so hab jetzt den 644 runtergföhnt und nen anderen drauf. Um ihn nicht gleich zu zerballern hab ich die Betriebspannung langsam direckt an Vcc hochgedreht. Und trotzdem ist die Pin High spannung nur auf 2.2V bei 3V Vcc. Hä ?!
Resettet der veilleicht immernoch andauernd, und die 2,2V sind eigentlich eine ungewollte PWM? Gerade die ATmegas haben ja recht starke Ports, und ziehen Die, auch unter Last, recht nah an die Versorgungsspannung. Oder misst Du an einem Port-Pin, der fälschlicherweise doch ein Eingang ist, und dort nur der interne Pull-Up anliegt? Mit freundlichen Grüßen - Martin
>Wohin verschwinden nur die 0,6 Volt?
AVCC angeschlossen sowie ALLE GND?
spess53 schrieb: >>Bei der Flash Selbstprogrammierung müsste doch das Programm bei erneutem >>auslesen Unterschiede aufweisen. > > Ja. Allerdings ist mir in 17 Jahren mit AVRs so etwas nicht vorgekommen. Ich habe so etwas schon beobachten können. Die Wahrscheinlichkeit dafür steigt rasant, wenn der Code regulär Code zum Flashen enthält, wie es naturgemäß bei vorhandenen Bootloadern der Fall ist. Aber auch die vollständige Abwesenheit solchen Codes schützt nicht davor, daß es passiert. Und wenn dir das noch niemals passiert ist, dann wird es vielleicht Zeit, daß du es mal provozierst, um eine Vorstellung davon zu bekommen, wie relevant das Problem ist. Und die Provokation ist ganz einfach: BOD lahmlegen und verschiedene Kurven des Spannungsabfalls gezielt durchlaufen. Natürlich mit entsprechendem Testprogramm im Client, welches immer nur eins macht: Checksum über den gesamten Flash und Aussenden dieser CS über eine Debug-Schnittstelle. Du wirst dich erschrecken, wie wahrscheinlich Flash-Korruption werden kann. Man kann das über die Spannungskurve fast so genau steuern, wie ein Virus seinen Schadcode in den Stack von PC-Programmen spreaden kann. Ich fand es jedenfalls ziemlich erschreckend. Andererseits wird es dich erfreuen, daß der BOD seinen Job i.A sehr gut tut. Jedem, der unerklärliche Probleme hat, kann also als erste Maßnahme nur die Aktivierung von selbigem mit sinnvoller Triggerschwelle empfohlen werden...
Simon S. schrieb: > Ich wollte den BOD jetzt auf 2.7V stellen da lief das Programm nicht > mehr. Also wieder auf 1,8 Volt dann gings. soweit ich weiss doch nur die P Typen! und du hast keinen. Peter Dannegger schrieb: > Vielleicht ist ein Fehler in der Schaltung oder im Layout das wohl eher oder falsch gefust Simon S. schrieb: > so hab jetzt den 644 runtergföhnt und nen anderen drauf. P oder nicht, welche Arbeitsfrequenz? alle VCC nah abgeblockt?
Hi
>soweit ich weiss doch nur die P Typen! und du hast keinen.
Der ATMega644 hat die BODLEVEL 1.8, 2.7 und 4.3V.
MfG Spess
spess53 schrieb: >>soweit ich weiss doch nur die P Typen! und du hast keinen. > > Der ATMega644 hat die BODLEVEL 1.8, 2.7 und 4.3V. und das reicht um das fehlende P zu erklären? OK darüber streite ich ja nicht, mir war so nur die Erkärung von P Typen in Erinnerung...... http://www.mikrocontroller.net/articles/AVR_Typen L/V „Low-Voltage“: Speziell für niedrigere Taktraten (8 bzw. 10 MHz) sowie niedrigere Eingangsspannungen (1,8 bzw. 2,7 V) selektierte Bausteine
Simon S. schrieb: > Wie konntest du das mit dem zerschossenen Programm den feststellen ? > Ging es einfach nicht und nach Neuprogrammierung lief es wieder. Genau. Einen habe ich auch mal ausgelesen, da waren 1 oder 2 kB verändert. > Würdest du den reset zusätzlich mit einem Kondensator filtern z.b 10nF > und 10k nach Vcc ? Da ich selber nicht gerade ein Experte in Analog-Elektronik bin, gucke ich mir solche Sachen einfach bei bewährten Boards an, z.B. bei einem Arduino. Der ist ja Open Source.
Simon S. schrieb: > Ich wollte den BOD jetzt auf 2.7V stellen da lief das Programm nicht > mehr. Das würde ich als ein deutliches Zeichen einer unsauberen Versorgungsspannung werten.
Joachim B. schrieb: > mir war so nur die Erkärung von P Typen > in Erinnerung...... > > http://www.mikrocontroller.net/articles/AVR_Typen > > L/V „Low-Voltage“: Warum guckst Du in dieser Tabelle bei L/V und nicht bei P/PA, wenn Du nach dem Sinn des "P" suchst? Die P-Varianten sind Stromspar-Varianten, verbrauchen ein paar Milliwatt weniger. Ansonsten sind die genau gleich.
Markus H. schrieb: > Warum guckst Du in dieser Tabelle bei L/V und nicht bei P/PA, wenn Du > nach dem Sinn des "P" suchst? das ist dein Text, ich habe natürlich die ganze Tabelle geschaut und P ist picopower mit weniger Stromaufnahme und sagt noch nix über 1,8V Verwendbarkeit, das gilt erst ab L/V wobei die das wohl nicht so genau nehmen sonst hätte die Bezeichnung ja Simon S. schrieb: > Hallo, > es handelt sich um ATMEGA644-20AU. + L/V lauten müssen wenn man BOD auf 1,8V einstellen kann oder der TO verschweigt was.
Hi >+ L/V lauten müssen wenn man BOD auf 1,8V einstellen kann >oder der TO verschweigt was. Es gibt/gab den ATMega644, den ATMega644P, den ATMega644A und den ATMega644PA. Und alle haben die o.g. Bodlevel. Siehe http://www.atmel.com/products/microcontrollers/avr/megaavr.aspx MfG Spess
spess53 schrieb: > Es gibt/gab den ATMega644, den ATMega644P, den ATMega644A und den > ATMega644PA. Und alle haben die o.g. Bodlevel. ist klar aber müssten die dann nicht den Anhang L/V haben? siehe: http://www.atmel.com/Images/doc2593.pdf Seite 318 Figure 26-1. Maximum Frequency vs. VCC, ATmega644 V
:
Bearbeitet durch User
Hallo Leute Sorry, nach stundenlangem suchen und messen bis kurz zur Verzweiflung hab ich jetzt den Fehler!! An alle die auf eine unsaubere Versorgung getippt haben kann ich nur sagen "Ihr hattet recht". Da ich den Ad Wandler nicht benötigte ging AVCC über einen Kondensator nach Masse dann über den Ferrit nach VCC. Den Ferrit ließ ich weg !! ALso hat sich der AVCC über seine Schutzdiode auf ca 2,6V aufgeladen. (sihe oben Joachim B.) Anscheinend hängt die gesamte reset Logic auch an AVCC. AVCC ist jetzt natürlich 'Weak' und dadurch anfällig !! Wodurch dann dieses Frequenz erzeugen an den anderen Ports hervorgerufen wird. Und ich hatte ja immer diese mysteriösen 2.2V am PortA bei 3V Vcc. Sobald ich den Port belastet hatte brachen die dann auch relativ schnell ein auf 2.0. PortA wird nämlich auch von AVCC gespeist !! Für die Zukunft zumindest gut zu wissen: 1) if ->[PORT 'High' < ( VCC-supply - 0,6) ] than -> VccPort is NOT CONNECTED and uses the internal protection diodes. 2) @ Atmega644 -> [Reset & BOD Logic & PortA & AD]supplyed from AVCC. and -> AVCC must externally connected to VCC Laut Datenblatt seite 10: AVCC: AVCC is the supply voltage pin for Port F and the A/D Converter. It should be externally connected to VCC. ALso sollte(should) ist meiner meinung nach hier absolut falsch!! Genauso wie Port F der am 644 nicht existiert !! Es ist Port A. Beim Atmega1280 steht der selbe text und der hat Port F also nen Copy Paste Fehler Vlt hilft es jemanden ?! Vielen Dank an alle. Mfg Simon
Simon S. schrieb: > ALso sollte(should) ist meiner meinung nach hier absolut falsch!! Ich habe die Erfahrung gemacht, daß "sollte" in diesen Daten*büchern* immer "muß" ist, damit es funktioniert. *Ja, Bücher, denn Datenblatt ist m.E.n. bei mehreren Hundert Seiten der falsche Begriff MfG Paul
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.