das Problem wird sein, dass Arduino das Board in seiner IDE samt USB-Bootloader als target platform gelistet haben muss, sonst kann sie nicht auf diese Zielplattform compilieren und hochladen...
hast du jemals mit Arduinos programmiert?
das mit dem L293 Dauerstrom treibt mir allerdings auch Tränen in die Augen... :-/
IIRC, Arduino hat für jedes (eigene) Controller-Board eine eigene Spezifikation in boards.txt.
Daher funktioniert es nur mit exakt den dort gelisteten Boards und den hier spezifischen herausgeführten GPIO pins (die ja nicht 1:1 den physikalischen cpu-Pins entsprechen).
Geändert von HaWe (18.11.2015 um 19:12 Uhr)
Oh Backe.
Ich dachte eigentlich, so'n Arduino sollte die Arbeit erleichtern und sich nicht selbst im Weg stehen.
Wobei ich denke, 'nen AVR, der nun wirklich NULL externe Beschaltung braucht, in 'nen DIP-Sockel zu stecken, ist auch keine Kunst. GCC ist einfach zu verstehen. Was kann man da noch vereinfachen?.
Also im Konjunktiv: Wenn Du einen ISP-Programmer gehabt hättest und etwas C oder Assembler sprechen würdest, wär's ne typische Anwendung für den Sleep-Mode im AVR mit RTC für 3,5€ (incl. Knopfzelle) gewesen. Mit entsprechend gewähltem Uhrenquarz auch recht temperaturstabil, insbesondere dank internem Sensor softwaretechnisch temperaturkompensierbar. Das ist mit den CMOS-ICs und RC-Gliedern nicht immer so unproblematisch.
Geändert von Holomino (18.11.2015 um 20:15 Uhr)
nee, ich nutze nur die äußerst bequeme Arduino-IDE mit den äußerst praktischen Libs und den total simplen API-Funktionen, die einem den total bekloppten-C++-Klassen- und gcc-makefile-Krempel abnimmt.
Mit bare-metal-C-Programmierung hab ich nichts am Hut
Also wenn eine Lösung, dann nur mit Arduinos, oder mit einer simplen Timer-Chip-Schaltung 8-)
Ich kenne mich mit den arduinos ebenfalls nicht aus. Habe aber etwas gefunden (bei Google "arduino" und "sleepmode "). Sleepmode ist aber definitiv kein Hexenwerk.
http://playground.arduino.cc/Learning/ArduinoSleepCode
MfG Hannes
Manchmal frage ich mich, wieso meine Generation Geräte ohne Simulation entwickeln konnte?
So´n Arduino erleichterte mir die Arbeit als ich mal einen nano-Clone versuchsweise beschaffte. Schicke Miniplatine mit Stromversorgung, einem UART-USB-Wandler, /RES-Taster und ein paar LEDchen für ne Handvoll Euro. Damit war in kurzer Zeit mit ein bisschen Peripheriesteckern auf nem kleinen Gesamtboad ein sauberer Servotester mit Poti-ADC-Einstellbarkeit und LCD zur Ausgabe der Pulslänge in Ticks oder µs zusammengestellt. Saubere kleine Hardwarelösung, schnelle Softwarelösung - in C. Einziger Nachteil ist der Arduinoticker mit 16 MHz, während meine StandardAVRs mit 20 MHz zwitschern.
Von API hab ich keine Ahnung (sagn wa so: nicht wirklich), "makefile-Krempel" hatte mir AVRStudio abgenommen, pefekt wie immer im Hintergrund und die übliche C-Umgebung erlaubte mir den Zugriff auf jedes controller-interne Detail und Pinfunktionalität gemäß Datenblatt. Im Weg wäre mir allenfalls die Arduino-IDE gestanden - weil ich sie nicht kenne. Es geht also eher um Ansicht oder Ablehnung zweier IDEs - das darf jeder wie er will.
Ciao sagt der JoeamBerg
021aet04:
der Sleepmode funktoniert, na klar, selber schon gemacht - aber man brauchte dafür einen externen "Aufwecker" (z.B. ein serielles Signal).
Ich habe noch nirgends gelesen, dass man ihn auch intern per internem Timer aufwecken könnte, denn für Timer auslesen muss er ja bereits wach sein (CMIIW) - wenn es auch anders geht, zeig mir den Sketch!
PeterToo:
Natürlich weiß ich auch, dass der NE556 doppelt so viele Timer / MOSFETS hat wie der 555, aber genau deshalb könnte man das ja vielleicht nutzen: den einen für die lange Wartezeit, den anderen für den kürzeren Schaltimpuls - klar?
Was cpus angeht - da arbeite ich aber nunmal nur mit Arduinos, damit bin ich vertraut, wenn auch eher mit dem ARM Cortex M3 (Arduino Due, 84MHz, 92kB RAM) als den einfachen AVRs.
Dennoch sind ja die Arduino-API Befehle für alle Board-Plattformen die gleichen (bis auf low-level-CPU-Zugriff, aber das krieg ich auch noch hin). Eine andere, völlig neue Hardware- und IDE-Architektur tue ich mir für dieses Schaltproblem aber nicht mehr an:
Wenn also cpu, dann Arduino,
andernfalls einfach zu beschaltende Timer-Chips, wo ich aber schon wenigstens größenordnungsmäßig die Daten für die Widerstände und Kondensatoren zur Beschaltung bräuchte, also konkrete Lösungen.
So ein Bauteile-Rechner wäre also schon genial, aber eben mit Schaltzeiten als Input und Bauteil-Dimensionierung als Output - oder verlässliche Erfahrungswerte.
Sketch kann ich nicht anbieten, da ich nicht mit der Arduino IDE programmiere (ich verwende AVR Studio). Aber laut Datenblatt kann man aus jedem Sleepmode mit dem Watchdog Timer aufwachen und mit Timer 2 aus Idle und Powersave bzw wenn der Timer im asynchron Modus läuft auch aus dem ADC Noise Reduction Mode. Gelesen im Datenblatt des Atmega168 (der sollte auf dem Arduino Nano verbaut sein, wenn ich das richtig gefunden habe).
Das sollte die IDE unterstützen, ansonsten ist die der reinste Mist.
Ansonsten könntest du, wie schon geschrieben wurde, mit RTC arbeiten. Man stellt den RTC so ein wie man es will (wann geweckt werden soll) und legt den uC dann schlafen. Wenn die Zeit abgelaufen ist weckt der RTC den uC auf. Dieser führt das Programm dann von dieser Stelle, wo er in den Sleepmode gegangen ist, fort.
Wenn du mit dem NE55x arbeiten willst musst du einen AMV und einen MMV verwenden. Der AMV wird auf die lange Zeit eingestellt, dieser triggert den MMV. Der MMV gibt einen kurzen Impuls ab (z.B. 1s). Wenn man lange Zeiten braucht geht man mit der Kapazität hinauf, damit man mit dem Widerstand herunterkommt. Das man nicht eine Kapazität im nF Bereich wählt und einen Widerstand im MOhm Bereich braucht. Man nimmt üblicherweise Widerstandswerte von ca. 1k bis 500k (niedriger ist besser). Das ist etwas Spielerei mit den Werten. Du kannst als Anhaltspunkt die Schaltungen in diesem Thread nehmen https://www.roboternetz.de/community...-leise-tmc2100
MfG Hannes
Geändert von 021aet04 (19.11.2015 um 10:49 Uhr)
Lesezeichen