- LiTime Speicher und Akkus         
Ergebnis 1 bis 9 von 9

Thema: Arduino-Nachbau ohne Quarz? Was beachten?

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    31.03.2014
    Beiträge
    163

    Arduino-Nachbau ohne Quarz? Was beachten?

    Anzeige

    Powerstation Test
    Hallo,

    für eine (zeitunkritische, nur manuelle Taster on/off) Schaltung möchte ich die dazu notwendigen Bauteile des Arduino mit auf meine eigene Platine verlöten. Auf den Quarz könnte ich verzichten und die interne Taktung des ATMEL 328 verwenden. Zumindest ist mir das theoretisch bekannt. Der Quarz incl. der 2 gegen GND gesetzten Kondensatoren sitzt am ATMEL zwischen PIN 9 und 10. Kann ich diese 3 Bauteile einfach weglassen und dann schaltet der ATMEL von sich aus (mangels externer Taktquelle) automatisch auf seinen internen Takt? Oder muss zusätzlich auch im verwendeten Sketch etwas verändert werden, was dem ATMEL sagt, "schalte bitte auf deinen internen Takt"?


    Andi

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.651
    .. Bauteile des Arduino .. eigene Platine .. Quarz .. verzichten .. schaltet der ATMEL von sich aus .. automatisch auf seinen internen Takt ..
    Hi Andi,

    schön wärs, wenn das automatisch ginge. Da hätten viele (auch ich) in der Anfangszeit weniger Probleme mit "verfusten" Controllern gehabt => WENN der Controller mal auf Quarz eingerichtet ist, weigert er sich ohne seinen Taktgeber irgend eine Arbeit zu tun. Aber es gibt einen positiven Anteil an der Frage/Antwort: fabrikfrisch sind die Controller so eingerichtet (gefuset - also die Fusebits=einstellbare Parameter des Controllers - klick mal hier - sind voreingestellt), dass die Controller ohne Quarz arbeiten. Sie werden durch den internen Takt mit einem achtel des 8 MHz -Taktgebers bedient; sprich: sie ticken dann mit 1 MHz. Fabrikfrisch.

    Das war aber nur der Punkt 1.

    Fazit :
    Ein FABRIKfrischer controller muss nicht "umgestellt" werden, der taktet mit 1 MHz, kann aber auf 8 MHz gestellt werden.
    Ein "arduino"-konformer Controller müsste auf Quarz mit 16 MHz eingestellt sein - ohne Quarz funzt der nur als Stromverbraucher.

    .. für eine (zeitunkritische, nur manuelle Taster on/off) Schaltung ..
    Ich verstehe eigentlich kaum was von arduino, insbes. nicht von der plattformspezifischen Programmierung - und ich kenne auch Dein Programm nicht.

    Trotzdem Punkt 2:

    Ich weiß ich nicht, ob Dein Programm später vielleicht doch die arduinospezifischen 16 MHz voraussetzt. Es wird aber z.B. der Bootloader ohne Quarz schon mal nicht funktionieren, ebenso Arduinokommandos zu Zeitabfragen u.ä.
    Ciao sagt der JoeamBerg

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    02.08.2006
    Ort
    Würzburg, Germany
    Beiträge
    716
    Guten Morgen,

    wenn es ohne Quarz sein soll, würde ich auch auf das andere Arduino-Gedöns verzichten, zumal ohne Quarz eine serielle Kommunikation zum flashen eh nicht möglich sein wird. Man kann sich einen Arduino als ISP-Flasher programmieren. Du musst dann auf deiner Anwendung mit dem Taster lediglich zusätzliche 4 Pins zur Pogrammierung (und natürlich GND und VCC) als Pinheader einplannen. Das setzen der korrekten Fuses ist dann auch notwendig, wie oberallgeier schon richtig angemerkt hat.

    Viele Grüße
    Andreas

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.643
    Hallo Andi!

    Ich habe mal was zusammengesucht.
    Ich bin auf zwei Seiten gestoßen, die weiterhelfen sollten.

    Erste ist in Englisch gehalten, hat aber die Beschreibung, wie man die richtige Auswahl in die Arduino-IDE rein bekommt.
    Es ist notwendig, dass das File: boards.txt bearbeitet wird.
    Dort muss ein passender Eintrag rein, mit entsprechenden Einstellungen. Diesen Code findet man auf dieser Seite.
    https://www.instructables.com/id/USB...a-8mhZ-intern/
    Für den Fall, dass Du Dich damit nicht auskennst, folgendes.
    Boards.txt ist im Arduino-Verzeichnis zu finden (arduino/avr/boards.txt).
    In diese Datei fügt man diesen Code ein und speichert die Datei, danach die Arduino-IDE neu starten.
    Code:
    ##############################################################
    
    atmega328bb.name=ATmega328 on a
    atmega328bb.name=ATmega328 on a breadboard (8 MHz internal clock)
    atmega328bb.upload.protocol=stk500
    atmega328bb.upload.maximum_size=30720
    atmega328bb.upload.speed=57600
    atmega328bb.bootloader.low_fuses=0xE2
    atmega328bb.bootloader.high_fuses=0xDA
    atmega328bb.bootloader.extended_fuses=0x05
    atmega328bb.bootloader.path=arduino:atmega
    atmega328bb.bootloader.file=ATmegaBOOT_168_atmega328_pro_8MHz.hex
    atmega328bb.bootloader.unlock_bits=0x3F
    atmega328bb.bootloader.lock_bits=0x0F
    atmega328bb.build.mcu=atmega328p
    atmega328bb.build.f_cpu=8000000L
    atmega328bb.build.core=arduino:arduino
    atmega328bb.build.variant=arduino:standard

    Die Zweite Seite ist in Deutsch gehalten, dort steht beschrieben, wie man einen ATmega328P, mit internem Clock,
    programmieren kann.
    https://wolles-elektronikkiste.de/at...lone-betreiben


    Nachtrag:

    Ich bin gerade drüber gestolpert, dass das Obige nicht ganz korrekt ist.
    Die Arduino-IDE zeigte mir diverse Hinweise.
    Deswegen habe ich noch mal gesucht und auch gefunden.
    Hier also eine dritte Seite: https://forum.mysensors.org/topic/30...o-ide-1-6-5-r5
    Dort gibt es ein File: breadboard-1-6-x.zip
    Das enthält sowohl den boards.txt-Eintrag, als auch einen Bootloader, der bei mir von der Arduino-IDE akzeptiert wird.
    Ich hatte schon einen Bootloader installiert, aber irgendwie bekam ich eine Fehlermeldung. Habe den aus dem ZIP-File genommen
    und den anderen überschrieben, scheint in Ordnung zu sein. Zumindest keine Fehlermeldung bezüglich des Bootloaders.
    Was den Eintrag im Boards.txt angeht, meldet die Arduino-IDE auch wieder, es fehle etwas. Nämlich der "atmega328bb.build.board"-Eintrag.
    Ich habe bei mir einfach einen hinzugefügt.




    MfG
    Geändert von Moppi (24.05.2020 um 10:44 Uhr)

  5. #5
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.651
    Hi Andi,
    im Nachgang zu meinem Post noch zwei Programmierhilfen.

    Einmal ein Bildschirmdump (klick hier) vom Programmieren der Fuses aus dem AVRStudio4. Darin ist die Programmierung der SUT_CKSEL (Start Up Table, Clock Selekt) gezeigt - mit allen Möglichkeiten die beim mega328(P) verfügbar sind; bevorzugt die 8 MHz-Variante (blau unterlegt). Die andern Fuses stehen so, wie ich beim 3238er üblicherweise die Fuses setze. BODLEVEL, also Brown-out detection Level habe ich meist auf 2,7 V gestellt oder gar abgeschaltet (disabled). Der Test auf BODLEVEL bewirkt ein Abschalten des Controllers, wenn die eingestellte Spannung unterschritten wird.

    Dazu noch nen screen dump von dem Fusecalkulator (nochn Klick) mit dem online das Setzen der Fuses getestet/geübt/etc werden kann. Der ist mit diesem Link zu finden.

    Im Übrigen kann man mit dem Herabsetzen des Taktes auf 8 MHz - und mit der dann auch viel größeren Toleranz des Taktes - ne serielle Datenübertragung (UART) mit 9,6 kBd, manchmal aber nur noch mit 4800 Bd machen. Aber es geht *ggg* bei den meisten Computern.

    Viel Erfolg
    Geändert von oberallgeier (24.05.2020 um 12:35 Uhr) Grund: bevorzugte Variante
    Ciao sagt der JoeamBerg

  6. #6
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    31.03.2014
    Beiträge
    163
    Danke für Eure Antworten. Möglicherweise habe ich das falsch ausgedrückt. Ich möchte einen bereits auf einem normalen UNO programmierten ATMEL-von diesem dann entfernen und in meiner Schaltung einsetzen. Dort soll dann nichts mehr programmiert werden, das wird nur einmalig (auf separatem Board) programmiert und soll dann dauerhaft in meiner Schaltung laufen, integriert auf meiner eigenen Platine, auf der sich auch die anderen Sachen dann befinden.

    Wenn ein Quarz notwendig ist, würde es dann auch ein 10 MHz tun (statt des 16 MHz)? Ich habe noch 10er rumliegen und müsste dann keine 16er extra neu kaufen. Und bei dem Sketch kommt es nicht auf 100stel Sekundenbruchteile an in der Ausführung. Könnte ich einfach einen 10 MHz nehmen ohne irgendwas in der Programmierung des ATMEL zu verändern?

    Andi

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.643
    Ich habe auch schon einen andern Quarz eingesetzt. Hab's einfach ausprobiert. Die Timings stimmen dann nicht mehr (delay() ... micros() ... etc., und die serielle Schnittstelle u.U. auch nicht), aber funktioniert hat es.

    MfG

  8. #8
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    31.03.2014
    Beiträge
    163
    Danke nochmals. Habe mir jetzt mal die Anleitungen (Eure Links) angeschaut. Da muss ich mich einarbeiten, aber auf den ersten Blick sind da schon viele nützliche Hinweise enthalten.

    Danke
    Andi

  9. #9
    Erfahrener Benutzer Robotik Visionär Avatar von oberallgeier
    Registriert seit
    01.09.2007
    Ort
    Oberallgäu
    Beiträge
    8.651
    .. Wenn ein Quarz notwendig ist, würde es dann auch ein 10 MHz tun (statt des 16 MHz)? .. noch 10er rumliegen und müsste dann keine 16er extra neu kaufen ..
    Also ich sehe bei (D)einer zeit-unkritischen Anwendung nicht wirklich nen Grund statt des internen Oszillators mit 8 MHz einen Quarz mit 10 MHz zu verwenden. Die zeitliche Stabilität des Quarzes ist zwar deutlich besser als die des internen Oszillators - aber - wenns sowieso egal ist . . . Ich habe z.B. bei (m)einer Temperatursteuerung für den LabornetzteilVentilator auch keinen Quarz. Ob die PWM mit 3,9 kHz schaufelt oder viereinhalb ist ja nu wirklich egal. Das ist sicher weitab von irgendwelchen Eigenfrequenzen. Und wenn Du "nur" Tasten abfragen willst . . . sollte die Zeit auch eine untergeordnete Rolle spielen. Dies also aufgrund meiner wenigen Erfahrungen OHNE Quarz - die aber problemlos funktionieren.
    Ciao sagt der JoeamBerg

Ähnliche Themen

  1. Arduino Clones - was ist zu beachten?
    Von Andi#87 im Forum Arduino -Plattform
    Antworten: 5
    Letzter Beitrag: 23.04.2019, 10:20
  2. Antworten: 13
    Letzter Beitrag: 07.11.2015, 02:21
  3. Asuro-Nachbau ohne Bootloader
    Von Arkon im Forum Asuro
    Antworten: 5
    Letzter Beitrag: 23.09.2010, 18:08
  4. Ohne quarz??
    Von Crocodile im Forum AVR Hardwarethemen
    Antworten: 1
    Letzter Beitrag: 04.08.2005, 21:16
  5. Programmieren ohne Quarz?
    Von Trabukh im Forum AVR Hardwarethemen
    Antworten: 13
    Letzter Beitrag: 26.01.2005, 20:30

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiTime Speicher und Akkus