Hallo, ich habe eine Testplatine mit u.a. einem Sockel für einen ATmega328P, an dessen logischem Pin2 ein 12er-NeoPixel-Ring angeschlossen ist. Stromversorgung für den µC und das NeoPixel sind einwandfrei und mit einem ATmega328P aus einer älteren Charge funktioniert die Schaltung und das Programm auch einwandfrei: mit 1 sec Leuchtdauer werden alle 12 LEDs des NeoPixel nacheinander grün aufleuchten gelassen. Soweit so gut. Nun habe ich aber zwei ATmega328P aus einer neueren Charge von reichelt.de bestellt, die beide nicht so funktionieren wie der alte µC. Mit ein und demselben Programm auf ein und derselben Platine leuchten mit den neuen Chips alle 12 LEDs gleichzeitig und dauerhaft weiß mit maximaler Helligkeit. Das Programm wurde mit ein und denselben Parametern hochgeladen. Die Chipkennzeichnungen sind wie folgt: alt: ATMEL 35473D ATMEGA328P U 231704W neu: ATMEL 35473D ATMEGA328P U 230785D Der einzige Unterschied liegt in der Chargennummer oder wie eben die letzte Zeile "231705W"/"230785D" zu bezeichnen ist. Was fällt Euch dazu ein außer: wegschmeißen/zurückgeben und bei (zeitlich verzögertem) Neukauf darauf hoffen, daß ich Chips aus einer funktionstüchtigen Charge bekomme?
Hier zuerst einmal die Frage: läuft Deine Schaltung mit externem Quarz oder internem RC-Oszillator? Sind die Fuses korrekt gesetzt ?
Norbert schrieb: > Mit ein und demselben Programm Auch mit den selben Fuse-Einstellungen? So mancher ist schon an der CLKDIV8 Fuse gescheitert. > Was fällt Euch dazu ein außer: ... darauf hoffen, daß ich Chips aus einer > funktionstüchtigen Charge bekomme? Ich würde den Fehler suchen. Einfach ein Oszi anschließen und schauen, was sich da auf dem Bus tut. Nur aus Interesse: > an dessen logischem Pin2 Was ist ein "logischer Pin2"?
:
Bearbeitet durch Moderator
Ralph S. schrieb: > läuft Deine Schaltung mit externem Quarz oder internem RC-Oszillator? Mit dem internen RC-Oszillator auf 8 MHz. Wie gesagt dieselben Uploadparameter bei altem/neuem Chip. Bei der neuen Platine wird dann ein 16-MHz-Quarz mit zwei 22-pF-Kerkos in nächster Nähe des µC sein. Aber soweit ich gelesen habe, ist das ja nur für die Analogeingänge wichtig, oder? Ralph S. schrieb: > Sind die Fuses korrekt gesetzt ? Lothar M. schrieb: > Auch mit den selben Fuse-Einstellungen? > So mancher ist schon an der CLKDIV8 Fuse gescheitert. Boah, von den Fuses habe ich bisher noch keine Ahnung, bin noch nicht sooo tief in der Materie drin. Lothar M. schrieb: > Was ist ein "logischer Pin2"? Ich meine nicht den physischen Pin am Gehäuse (da wäre es Nr. 4), sondern den Pin, der mit "2" in der Arduino-IDE angesprochen wird. Also "2/INT0/PCINT18/PD2" laut Pinout. Lothar M. schrieb: > Ich würde den Fehler suchen. > Einfach ein Oszi anschließen und schauen, was sich da auf dem Bus tut. Ein Oszi habe ich (daheim) nicht verfügbar.
Norbert schrieb: > Ein Oszi habe ich (daheim) nicht verfügbar. Man kann erstmal mit _delay_ms(1000) nur eine Blink-LED programmieren und dann mit einer Stoppuhr ausmessen, ob das stimmt.
Norbert schrieb: > Ein Oszi habe ich (daheim) nicht verfügbar. Dann nimm einen Logikanalysator - kostet keine 10€ und ist eigentlich ein Muss, wenn es um Datenschnittstellen oder Kommunikation mit Peripherie geht.
Norbert schrieb: > Aber soweit ich gelesen habe, ist das ja > nur für die Analogeingänge wichtig, oder? Nein, das ist wichtig für alles was Zeitabhängig ist. Und die Ansteuerung der Pixel ist Zeitabhängig, denn die haben ein festes Timing und mit falscher Frequenz verstehen die gar nichts. > Boah, von den Fuses habe ich bisher noch keine Ahnung, bin noch nicht > sooo tief in der Materie drin. Das haben die meisten hier anscheinend richtig vermutet. Das ist ein beliebter Fallstrick bei dem AtMegas. Deine Annahme, "die Programmierung der beiden Kontroller ist identisch" ist leider so nicht richtig. Wenn die Fuses nicht gleich sind, dann ist es sehr gut möglich, das die Kontroller sich sehr anders verhalten, bis zu gar nichts machen. Erstbeste Idee: Kopier doch die Einstellung der Fuses vom funktionierenden Kontroller zu den neuen rüber.
Norbert schrieb: > Bei der neuen Platine wird dann ein 16-MHz-Quarz mit zwei 22-pF-Kerkos > in nächster Nähe des µC sein. Aber soweit ich gelesen habe, ist das ja > nur für die Analogeingänge wichtig, oder? Diese Aussage enthält so viel verborgenes Potential für alle möglichen Missverständnisse oder auch Fehler, die solltest du mal näher ausführen. Da du aber Kondensatoren schon angesprochen hast: Hast du welche an ALLEN Spannungsversorgungspins? Oliver
:
Bearbeitet durch User
Norbert schrieb: > Lothar M. schrieb: >> Ich würde den Fehler suchen. >> Einfach ein Oszi anschließen und schauen, was sich da auf dem Bus tut. > Ein Oszi habe ich (daheim) nicht verfügbar. Das Inbetriebnehmen und Debuggen solcher serieller Busse ohne Oszi oder Logicanalyzer ist wie "Autofahren nach Gehör": man weiß immer erst hinterher, dass es gekracht hat. Man weiß aber nie, wie knapp das insgesamt war. Mein Tipp, falls du noch mehr in Richtung Elektronik machen willst: kauf dir das billigste Picosope, dann hast du für die nächsten Jahre ausgesorgt. Oder kauf wenigstens den billigsten LA, damit du wenigstens einäugig unterwegs bist, statt völlig blind. Oliver S. schrieb: > Hast du welche an ALLEN Spannungsversorgungspins? Zwischen die Versorgungspins gehören die hin: - http://www.lothar-miller.de/s9y/archives/12-Entkopplung.html Norbert schrieb: > Bei der neuen Platine wird dann ein 16-MHz-Quarz mit zwei 22-pF-Kerkos > in nächster Nähe des µC sein. Und am besten auch richtig angeschlossen: - http://www.lothar-miller.de/s9y/archives/17-Quarz.html
Lothar M. schrieb: > kauf dir das billigste Picosope, dann hast du für die nächsten Jahre > ausgesorgt. Hmm. Meinst Du das 2204a mit 10 MHz Bandbreite, zwei Kanälen und 8 kS Speicher für 155 Euro (bzw. 125 ohne Tastköpfe)? Da würd' ich mich ja eher nach einem gebrauchten DS1054Z umsehen, das dürfte kaum mehr kosten ...
Norbert schrieb: > NeoPixel Norbert schrieb: > Mit dem internen RC-Oszillator auf 8 MHz. Selbst wenn die Fuses stimmen, kann der interne Takt zu weit abweichen. Die LEDs sind da schon recht pingelig Norbert schrieb: > Wie gesagt dieselben > Uploadparameter bei altem/neuem Chip. Schade. dass die geheim bleiben. Denn der Auslieferungszustand ist 1MHz und nicht 8 Norbert schrieb: > Bei der neuen Platine wird dann ein 16-MHz-Quarz mit zwei 22-pF-Kerkos > in nächster Nähe des µC sein. Aber soweit ich gelesen habe, ist das ja > nur für die Analogeingänge wichtig, oder? Eher selten, dass da ein exaktes Timing nötig ist. Der Adc selber ist da recht gnädig
:
Bearbeitet durch User
Lothar M. schrieb: > Ich würde den Fehler suchen. Einfach ein Oszi anschließen und schauen, > was sich da auf dem Bus tut. Kanonen und Spatzen. Dazu kommt: was nutzt es dir, rauszufinden, das sich da nichts tut? Oder es tut sich was, aber keiner weiss, ob das so richtig ist? Ein richtig angeschlossener AVR mit Fuses ab Werk läuft. Immer. Tut er das nicht: Schaltplan und Aufbau prüfen, dazu die Programmierparameter. Ein Oszi brauchts dafür nicht. Eins haben schadet natürlich trotzdem nicht. Oliver
Harald K. schrieb: > Hmm. Meinst Du das 2204a mit 10 MHz Bandbreite, zwei Kanälen und 8 kS > Speicher für 155 Euro (bzw. 125 ohne Tastköpfe)? Ja. > Da würd' ich mich ja eher nach einem gebrauchten DS1054Z umsehen, das > dürfte kaum mehr kosten ... Da brauchst du aber offenbar viel Glück und/oder viel Ausdauer. Aber letzlich ist es egal, welches davon hier verwendet wird. Jedes der beiden Messgeräte (und sogar der erwähnte Saleae-Clone für 15€) ist besser, als blind seinen Weg auf dem seriellen Bus zu suchen. Oliver S. schrieb: > Lothar M. schrieb: >> Ich würde den Fehler suchen. Einfach ein Oszi anschließen und schauen, >> was sich da auf dem Bus tut. > Kanonen und Spatzen. Wenn man die Kanone mal hat, kann man damit ruhig mal auf einen Spatzen zielen. > Dazu kommt: was nutzt es dir, rauszufinden, das sich da nichts tut? Ich finde heraus, dass sich das, was sich da tut, um den Faktor 8 zu langsam tut. > Ein richtig angeschlossener AVR mit Fuses ab Werk läuft. Immer. Du bist offenbar noch jung und dein Glaube an das Gute im Menschen felsenfest und unerschütterlich... ;-)
:
Bearbeitet durch Moderator
Lothar M. schrieb: > Jedes der > beiden Messgeräte (und sogar der erwähnte Saleae-Clone für 15€) ist > besser, als blind seinen Weg auf dem seriellen Bus zu suchen. Das definitiv, das unterschreibe ich sogar blind ...
Ok, ich gucke mich nach einem Logikanalysator um. Ich habe (bei der neuesten Platinenversion) zwischen OSC1 und OSC2 (physische Pins 9 und 10) das 16-MHz-Quarz geklemmt und jeweils einen 22-pF-Kerko zwischen OSC1/OSC2 und GND geklemmt. Bei der aktuellen Version sind diese drei Bauteile noch nicht implementiert. Beide GNDs (Pin 8 und 22) am µC sind mit dem Minuspol der Spannungversorgung verbunden. VCC, AVCC und AREF (Pin 7, 20 und 21) sind mit 5 V DC verbunden und zwischen VCC und GND klemmt ein 100-µF-Elko. Lothar schreibt hier aber von 100-nF-Kerkos!? Hoppala!? Arg schlimm!? Arduino F. schrieb: > Norbert schrieb: >> Wie gesagt dieselben >> Uploadparameter bei altem/neuem Chip. > Schade. dass die geheim bleiben. > Denn der Auslieferungszustand ist 1MHz und nicht 8 Ich habe beim Boardmanager "DIY ATmega*8" von James Sleeman installiert. - als Board "ATmega328/P/PB" ausgewählt - Processor Version "Atmega328P" - Processor Speed "(8 MHz intern) - Use Bootloader "No" - LTO "enabled" - BrownOut "2,7 V" - Rest "Standard"
:
Bearbeitet durch User
Oliver S. schrieb: > Ein richtig angeschlossener AVR mit Fuses ab Werk läuft. Immer. Aber eben mit 1 MHz und nicht mit 8 oder 16. Arduino F. schrieb: > Die LEDs sind da schon recht pingelig Um dein "pingelig" in Zahlen zu fassen: Auf Abweichung unter 150ns legen die WS2812B Wert - sagt das Datenblatt.
:
Bearbeitet durch User
Norbert schrieb: > Ich habe beim Boardmanager "DIY ATmega*8" von James Sleeman installiert. > - als Board "ATmega328/P/PB" ausgewählt > - Processor Version "Atmega328P" > - Processor Speed "(8 MHz intern) > - Use Bootloader "No" > - LTO "enabled" > - BrownOut "2,7 V" > - Rest "Standard" Sieht soweit richtig aus! Allerdings muss man bei der Arduino IDE ein einziges mal auf Bootloader brennen drücken, damit auch die Fuses richtig gesetzt werden. Selbst wenn man keinen Bootloader verwendet. Ohne wirds auch der Quarz nicht tun. Norbert schrieb: > Lothar schreibt hier aber von 100-nF-Kerkos!? Hoppala!? Arg schlimm!? An jeden der Versorgungspins gehört ein 100nF Kerko. Wie viele Elkos du da unterbringst ist fast egal, einer sollte reichen. Norbert schrieb: > VCC, AVCC und AREF (Pin 7, 20 und 21) sind mit 5 V DC verbunden Aref wird nicht mit Vcc verbunden, Das macht der intern, wenn gefordert. Aber Aref sollte ebenfalls einen 100nF Kerko bekommen.
:
Bearbeitet durch User
Arduino F. schrieb: > Allerdings muss man bei der Arduino IDE ein einziges mal auf Bootloader > brennen drücken, damit auch die Fuses richtig gesetzt werden. Selbst > wenn man keinen Bootloader verwendet. > Ohne wirds auch der Quarz nicht tun. Ha! Es geht nun! Ich erinnere mich dunkel, irgendwann mal den Bootloader auf dem "alten Chip" gebrannt zu haben. War mir dessen aber gar nicht mehr bewußt. Danke für den Hinweis! Wegen der 100-nF-Kerkos gucke ich dann mal bei der nächsten Version der Platine, bisher scheint es wie gewollt zu funktionieren. Verbessern geht aber natürlich immer. Auch hierfür danke schön!
Oliver S. schrieb: > Kanonen und Spatzen. Dazu kommt: was nutzt es dir, rauszufinden, das > sich da nichts tut? Oder es tut sich was, aber keiner weiss, ob das so > richtig ist? Man würde die falsche Bitrate sofort sehen (falls es daran scheitert).
Beitrag #7861962 wurde vom Autor gelöscht.
Sherlock 🕵🏽♂️ schrieb: > falls es daran scheitert Was es bei dem Fehlerbild aber nicht tut. Und wie die Lösung ja gezeigt hat, wars ein Ebene 8 Problem. Dafür brauchts kein Oszi... Oliver
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.