Der AVR-/ARDUINO-Faden
Moderatoren: Heaterman, Finger, Sven, TDI, Marsupilami72, duese
- ProgBernie
- Beiträge: 593
- Registriert: Fr 16. Sep 2022, 21:59
- Wohnort: Zwischen Hamburg und Haiti ^W Lübeck
Re: Der AVR-/ARDUINO-Faden
Von den LGT8F328P "MiniEVB" auf einem Nano hatte ich ja schon berichtet. Die sind mit dem Takt gut doppelt so schnell wie "normale" Nanos.
Wenn die Pins zu Ende gehen: Einfach einen "Arduino" mit mehr Beinen nehmen. Hier einer im Formfaktor DIL-40.
Aus reinstem Chinesium ist der aufgebrachte Käfer, ebenfalls ein LGT8F328P, aber im LQFP-48-Gehäuse:
https://www.aliexpress.com/item/4000151967508.html
Für die üblichen Bastelaufgaben tun die gut. Einbindung in Platformio ist auch nicht schwer.
Wenn die Pins zu Ende gehen: Einfach einen "Arduino" mit mehr Beinen nehmen. Hier einer im Formfaktor DIL-40.
Aus reinstem Chinesium ist der aufgebrachte Käfer, ebenfalls ein LGT8F328P, aber im LQFP-48-Gehäuse:
https://www.aliexpress.com/item/4000151967508.html
Für die üblichen Bastelaufgaben tun die gut. Einbindung in Platformio ist auch nicht schwer.
Re: Der AVR-/ARDUINO-Faden
Kann man machen... man kann auch den OSC umschalten. Nur dann geht nichts mehr, da alle Timer und die RTC um Faktor 4.7 zu langsam laufen.Hightech hat geschrieben: ↑Do 13. Apr 2023, 07:09 Den externen Quarz kann man hier einfach einschalten?
https://docs.espressif.com/projects/esp ... tc-clk-src
Der verantwortliche Interruptvector ist im Code per Compiler-Switch hardcodiert.
Rate mal woher ich das weiß
Edit: Die IDF4.4 hat ein Workaround für den Deep-Sleep Bug mit den RC-Oszillator. Ab Hardware Revision 3 ist der Fehler im Silizium behoben.
Grüße Jan
ArduServo
Moin,
ich habe hier DC-Motoren mit Encoder drauf, 512 Pulse pro Umdrehung.
Hat das schonmal jemand am Arduino gemacht?
Es gibt die Encoder-Lib und die Servo-Lib.
Die Servolib ist nur für fertige Servos.
Die Encoder nur für den Encoder.
Was fehlt ist der Servo-Regler.
Ich habe ein Signal von -1000 bis +1000 welches ich dann als Position am Servo haben möchte.
Also im Prinzip
Motor start bis der Zähler des Encoders die Position bsp. 500 Schitte erreicht hat, dann stop.
dann immer eine Differenz und die Anzahl Schritte in die Richung.
Aber das ist ja nicht so toll
Mann muss ja eine gewisse Rampe fahren,
Das gibt es doch sicher fertig?
ich habe hier DC-Motoren mit Encoder drauf, 512 Pulse pro Umdrehung.
Hat das schonmal jemand am Arduino gemacht?
Es gibt die Encoder-Lib und die Servo-Lib.
Die Servolib ist nur für fertige Servos.
Die Encoder nur für den Encoder.
Was fehlt ist der Servo-Regler.
Ich habe ein Signal von -1000 bis +1000 welches ich dann als Position am Servo haben möchte.
Also im Prinzip
Motor start bis der Zähler des Encoders die Position bsp. 500 Schitte erreicht hat, dann stop.
dann immer eine Differenz und die Anzahl Schritte in die Richung.
Aber das ist ja nicht so toll
Mann muss ja eine gewisse Rampe fahren,
Das gibt es doch sicher fertig?
-
- Beiträge: 240
- Registriert: Mo 16. Feb 2015, 13:50
Re: Der AVR-/ARDUINO-Faden
Moin auch
die EncoderLib gibt ja die Absolute Position aus.
daraus und der sollposition die Differenz durch einen PID mölern.
das Ergebnis auf einen H-Brückentreiber ,zB BT7960, (gibt ne LIB) und fertig ist die Geschichte.
die Rampe macht im Idealfall der PID
Gruß Frickelfred
die EncoderLib gibt ja die Absolute Position aus.
daraus und der sollposition die Differenz durch einen PID mölern.
das Ergebnis auf einen H-Brückentreiber ,zB BT7960, (gibt ne LIB) und fertig ist die Geschichte.
die Rampe macht im Idealfall der PID
Gruß Frickelfred
- Alexander470815
- Beiträge: 2395
- Registriert: So 11. Aug 2013, 15:42
- Wohnort: D:\Hessen\Gießen
Re: Der AVR-/ARDUINO-Faden
Wenn die Performance gut werden soll muss man mehrere Regler ineinander verschachteln und entsprechend parametrieren.
Lageregler->Drehzahlregler->Stromregler
Von langsam nach schnell.
Alles mit einem Regler auszuregeln funktioniert nur mäßig gut.
Den Stromregler kann man vielleicht noch weg optimieren da der schon einiges an Bandbreite braucht aber Eine Störgrößenaufschaltung auf das Stellsignal in Abhängigkeit der Drehzahl sollte schon sein um den Gegen-EMK des Motors zu kompensieren.
Wenn der Regler mit Sollwertsprüngen zurechtkommen soll muss man den sehr lahm parametrieren damit er nicht überschießt.
Besser wäre es die Rampen davor zu erzeugen so das er keine Sprünge ausregeln muss.
Man muss auch schauen wie die encoder lib arbeitet, für einen Drehencoder den man per Hand dreht ist die Geschwindigkeit kein Problem.
Bei 512 Pulsen pro Umdrehung und ein paar tausend U/min muss das schon entsprechend schnell arbeiten sonst kommt da nur Müll raus.
Ich habe sowas mal mit einem 328P gebaut und den Encoder an die beiden Interrupt Eingänge angeschlossen um somit direkt bei Pegel Änderungen den Zählerstand zu aktualisieren.
Für prellende mechanische Encoder ist sowas jedoch nichts(falls man sowas da dran anklemmen würde).
Lageregler->Drehzahlregler->Stromregler
Von langsam nach schnell.
Alles mit einem Regler auszuregeln funktioniert nur mäßig gut.
Den Stromregler kann man vielleicht noch weg optimieren da der schon einiges an Bandbreite braucht aber Eine Störgrößenaufschaltung auf das Stellsignal in Abhängigkeit der Drehzahl sollte schon sein um den Gegen-EMK des Motors zu kompensieren.
Wenn der Regler mit Sollwertsprüngen zurechtkommen soll muss man den sehr lahm parametrieren damit er nicht überschießt.
Besser wäre es die Rampen davor zu erzeugen so das er keine Sprünge ausregeln muss.
Man muss auch schauen wie die encoder lib arbeitet, für einen Drehencoder den man per Hand dreht ist die Geschwindigkeit kein Problem.
Bei 512 Pulsen pro Umdrehung und ein paar tausend U/min muss das schon entsprechend schnell arbeiten sonst kommt da nur Müll raus.
Ich habe sowas mal mit einem 328P gebaut und den Encoder an die beiden Interrupt Eingänge angeschlossen um somit direkt bei Pegel Änderungen den Zählerstand zu aktualisieren.
Für prellende mechanische Encoder ist sowas jedoch nichts(falls man sowas da dran anklemmen würde).
Re: Der AVR-/ARDUINO-Faden
Treiber ist ein L298 (oder so? HBrücke)
Leider ist der Encoder am Motor, nicht am Getriebe.
Ich schau mal nach ner schnellen Encoder Lib.
Leider ist der Encoder am Motor, nicht am Getriebe.
Ich schau mal nach ner schnellen Encoder Lib.
Re: Der AVR-/ARDUINO-Faden
guck mal, vielleicht ist die was: https://github.com/brianlow/Rotary
hatte ich vor längerem probiert mit PinChangeInt zusammen.
allerdings nur ein Test mit nur dem Encoder dran.
hatte ich vor längerem probiert mit PinChangeInt zusammen.
allerdings nur ein Test mit nur dem Encoder dran.
Re: Der AVR-/ARDUINO-Faden
Ich habe tatsächlich feststellen müssen, dass es bei kleinen Motoren auch noch ganz gut mit Drecksau-PID über die ganze Regelstrecke geht.
Die Gegen-EMK des Motors verursacht zwar einen Fehler, aber dieser hat ein unproblematisches Vorzeichen. Die Induktivität des Motors ist eher ein Arschloch, aber bei Kleinmotoren im Vergleich zum Widerstand nicht so groß. Wenn die Motoren in kg gemessen werden, wird das potentiell zum Problem.
Wichtig ist, die PWM-Frequenz hoch genug zu wählen, dass auch wirklich eine Glättung an der Motorinduktivität passiert, und man nicht nur die Heizleistung in den Wicklungen moduliert. Das heißt 5kHz oder mehr (wenn Menschen in der Nähe sind, bitte 16-20 sonst AUA MEINE OHREN).
Am Ende wird das Ganze deutlich weniger Performance haben als ein "echter" Kaskadenregler. Aber es ist immer noch ausreichend, dass die damit gebaute Käsefräse nicht an den Antrieben sondern an der mechanischen Stabilität an die Grenzen kommt...
Wir haben das damals (tm) aber mit STM32 gemacht; da gibts welche mit Hardwareencoderauswerter.
Die Gegen-EMK des Motors verursacht zwar einen Fehler, aber dieser hat ein unproblematisches Vorzeichen. Die Induktivität des Motors ist eher ein Arschloch, aber bei Kleinmotoren im Vergleich zum Widerstand nicht so groß. Wenn die Motoren in kg gemessen werden, wird das potentiell zum Problem.
Wichtig ist, die PWM-Frequenz hoch genug zu wählen, dass auch wirklich eine Glättung an der Motorinduktivität passiert, und man nicht nur die Heizleistung in den Wicklungen moduliert. Das heißt 5kHz oder mehr (wenn Menschen in der Nähe sind, bitte 16-20 sonst AUA MEINE OHREN).
Am Ende wird das Ganze deutlich weniger Performance haben als ein "echter" Kaskadenregler. Aber es ist immer noch ausreichend, dass die damit gebaute Käsefräse nicht an den Antrieben sondern an der mechanischen Stabilität an die Grenzen kommt...
Wir haben das damals (tm) aber mit STM32 gemacht; da gibts welche mit Hardwareencoderauswerter.
Pin invertieren für eine Funktion
Moin,
ich muss für eine stepper Funktion den Enable-Pin invertieren.
Wie mache ich das?
#define enablePinStepper1 0
setup:
stepper1->setEnablePin(enablePinStepper1);
ich muss für eine stepper Funktion den Enable-Pin invertieren.
Wie mache ich das?
#define enablePinStepper1 0
setup:
stepper1->setEnablePin(enablePinStepper1);
Re: Der AVR-/ARDUINO-Faden
enable = !notenable
-
- Beiträge: 135
- Registriert: So 9. Dez 2018, 11:30
Re: Der AVR-/ARDUINO-Faden
Ich habe irgendwie nicht gelesen welche Lib du nutzt. Ich vermute mal FastAccelStepper von https://github.com/gin66/FastAccelStepper.
Hier hat der Aufruf setEnablePin() einen zweiten bool Parameter der beschreibt ob der Pin invertiert ist.
Also für einen Active Low Enable: stepper1->setEnablePin(enablePinStepper1, true);
Nutzt du AccelStepper http://www.airspayce.com/mikem/arduino/AccelStepper/ gibt es einen extra Aufruf
void setPinsInverted (bool directionInvert=false, bool stepInvert=false, bool enableInvert=false)
Hier hat der Aufruf setEnablePin() einen zweiten bool Parameter der beschreibt ob der Pin invertiert ist.
Also für einen Active Low Enable: stepper1->setEnablePin(enablePinStepper1, true);
Nutzt du AccelStepper http://www.airspayce.com/mikem/arduino/AccelStepper/ gibt es einen extra Aufruf
void setPinsInverted (bool directionInvert=false, bool stepInvert=false, bool enableInvert=false)
Re: Der AVR-/ARDUINO-Faden
TOP! Danke.
Ewig gesucht, nix gefunden.
Ewig gesucht, nix gefunden.
Re: Der AVR-/ARDUINO-Faden
Hallo,
ich versuche seit gestern Abend das erste mal SPIFFS für meinen ESP32 Arduino zu verwenden. Alle Beispiele, die ich online finde sind ungefähr gleich. Trotzdem kann ich das nicht kompilieren und ich finde dazu per Suchmaschine keine Abhilfe. Vielleicht hat hier jemand eine Idee? Hier mal mein Sketch:
Viele Grüße
Andreas
ich versuche seit gestern Abend das erste mal SPIFFS für meinen ESP32 Arduino zu verwenden. Alle Beispiele, die ich online finde sind ungefähr gleich. Trotzdem kann ich das nicht kompilieren und ich finde dazu per Suchmaschine keine Abhilfe. Vielleicht hat hier jemand eine Idee? Hier mal mein Sketch:
Code: Alles auswählen
#define FORMAT_SPIFFS_IF_FAILED true
#include "FS.h"
#include "SPIFFS.h"
void setup ()
{
if (SPIFFS.begin (true))
{
File root = SPIFFS.open ("/"); //Compilation error: 'File' was not declared in this scope
if (file)
{
//...
}
//else
}
//else
}
Andreas
Re: Der AVR-/ARDUINO-Faden
Und die Fehlermeldung lautet wie?
- Weisskeinen
- Beiträge: 3950
- Registriert: Di 27. Aug 2013, 16:19
Re: Der AVR-/ARDUINO-Faden
Ich würde annehmen
Code: Alles auswählen
Compilation error: 'File' was not declared in this scope
Re: Der AVR-/ARDUINO-Faden
'File' sollte da sein. Aber warum oben 'root' definiert wird und unten 'file' geprüft wird ist seltsam.
- Weisskeinen
- Beiträge: 3950
- Registriert: Di 27. Aug 2013, 16:19
Re: Der AVR-/ARDUINO-Faden
Stimmt eigentlich. Ich lese das so, dass 'root' vom Typ 'File' ist. Aber was ist 'file' und welchen Typ hat das? Und wo wird das deklariert? Und wo gesetzt?
Re: Der AVR-/ARDUINO-Faden
quatsch stand hier
-
- Beiträge: 135
- Registriert: So 9. Dez 2018, 11:30
Re: Der AVR-/ARDUINO-Faden
Probiere mal den explizit den namespace anzusprechen.
Also File root => fs::File root
Ansonsten würde ich sagen das dort eine unpassenden Version von FS.h eingebunden wird. In https://github.com/espressif/arduino-es ... S/src/FS.h ist die Klasse File direkt definiert.
Also File root => fs::File root
Ansonsten würde ich sagen das dort eine unpassenden Version von FS.h eingebunden wird. In https://github.com/espressif/arduino-es ... S/src/FS.h ist die Klasse File direkt definiert.
Re: Der AVR-/ARDUINO-Faden
Hallo,
Viele Grüße
Andreas
Hier muss ich mich entschuldigen. Diese Verwechslung ist aus den ganzen Copy & Paste Beispielen vom Internet entstanden. Natürlich müssen entweder beide "root" oder beide "file" heißen. Der Fehler war aber tatsächlich der "Compilation error: 'File' was not declared in this scope". (Also File groß geschrieben)Weisskeinen hat geschrieben: ↑Mi 14. Jun 2023, 12:59 Ich lese das so, dass 'root' vom Typ 'File' ist. Aber was ist 'file' und welchen Typ hat das?
Das hat geholfen. Vielen Dank für diesen Tipp! Da wäre ich nie drauf gekommen. Nur der Vollständigkeit halber und um vielleicht noch etwas mehr zu lernen: Hat jemand eine Idee, was hier bei mir schief läuft?
Viele Grüße
Andreas
Re: Der AVR-/ARDUINO-Faden
File ist eine Klasse.
root ein Objekt vom typ File.
(root könnte noch ein Schlüsselwort sein, verwendung solcher führt zu komische Effekten?)
normal macht man's ja so:
import FS.h // bringt File mit
File rooot; // deklaration
void setup(){
rooot= konstruktorAufruf();//definition
oder wenn's zulässig ist deklaration und definition in einem, dann aber im globalen Namespace, nicht in einer Methode.
oder halt wie jetzt explizit/statisch (fs::methode) als allerletzter Notnagel.
meine c++ Ahnung hält sich auch in grenzen, bitte um Berichtigung.
root ein Objekt vom typ File.
(root könnte noch ein Schlüsselwort sein, verwendung solcher führt zu komische Effekten?)
normal macht man's ja so:
import FS.h // bringt File mit
File rooot; // deklaration
void setup(){
rooot= konstruktorAufruf();//definition
oder wenn's zulässig ist deklaration und definition in einem, dann aber im globalen Namespace, nicht in einer Methode.
oder halt wie jetzt explizit/statisch (fs::methode) als allerletzter Notnagel.
meine c++ Ahnung hält sich auch in grenzen, bitte um Berichtigung.
-
- Beiträge: 135
- Registriert: So 9. Dez 2018, 11:30
Re: Der AVR-/ARDUINO-Faden
Füge doch mal irgendwo in den Code ein. Es gab in älteren Versionen von Arduino das Problem das die Klasse File von mehreren Dateisystemimplementierungen (SPIFFS, SD-Card) bereitgestellt wurde und diese nicht zusammengepasst haben. Mit dem define wird der Export der File Klasse in den globalen Namespace unterbunden und somit macht es die explizite Benennung des Namespace notwendig.
Ist FS_NO_GLOBALS bereits wo anders definiert sollte der Compiler mit mindestens einer Warnung antworten. Dann solltest du suchen wo dieses Define herkommt.
Code: Alles auswählen
#define FS_NO_GLOBALS DEADBEEF
Ist FS_NO_GLOBALS bereits wo anders definiert sollte der Compiler mit mindestens einer Warnung antworten. Dann solltest du suchen wo dieses Define herkommt.
Zuletzt geändert von virtexultra am Sa 17. Jun 2023, 17:53, insgesamt 1-mal geändert.
Re: Der AVR-/ARDUINO-Faden
Hallo,
Bringt ebenfalls die gleiche Fehlermeldung. Ich nutze einige Bibliotheken, aber bisher keine von der ich vermuten würde eine File Klasse zu beinhalten. Gibt es eine Möglichkeit das rauszufinden?
Viele Grüße
Andreas
Ich nutze die IDE 2.1.0. Wenn ich FS.h nicht include kommt die gleiche Meldung. Den Namen root habe ich auch mal testweise zu Erdbeeren geändert, auch kein Erfolg. Und:virtexultra hat geschrieben: ↑Do 15. Jun 2023, 09:11 Es gab in älteren Versionen von Arduino das Problem das die Klasse File von mehreren Dateisystemimplementierungen (SPIFFS, SD-Card) bereitgestellt wurde und diese nicht zusammengepasst haben
Code: Alles auswählen
#define FS_NO_GLOBALS DEADBEAF
Bringt ebenfalls die gleiche Fehlermeldung. Ich nutze einige Bibliotheken, aber bisher keine von der ich vermuten würde eine File Klasse zu beinhalten. Gibt es eine Möglichkeit das rauszufinden?
Viele Grüße
Andreas
Re: Der AVR-/ARDUINO-Faden
Das ist ein Vorteil einer IDE, da kann man suchen wer File oder irgendwas wo verwendet.
Hab auch eine Frage.
in der pins_arduino.h von attinycore steht:
ich möchte das nicht dort ändern sondern in meinem eigenen code:
das gibt aber gemecker beim bauen:
Hab auch eine Frage.
in der pins_arduino.h von attinycore steht:
Code: Alles auswählen
#define TIMER_TO_USE_FOR_MILLIS 0
Code: Alles auswählen
#undef TIMER_TO_USE_FOR_MILLIS
#define TIMER_TO_USE_FOR_MILLIS 1;
geht das nicht oder kann ich da was machen?(.text+0x0): multiple definition of `__vector_5'
.\sloeber.ino.cpp.o (symbol from plugin):(.text+0x0): first defined here
collect2.exe: error: ld returned 1 exit status
make: *** [makefile:81: Tacho.elf] Error 1
"E:/Tools/eclipseSloeber4.4/arduinoPlugin/tools/make/make all" terminated with exit code 2. Build might be incomplete.
-
- Beiträge: 135
- Registriert: So 9. Dez 2018, 11:30
Re: Der AVR-/ARDUINO-Faden
Ich glaube nicht das das ein sinnvoller Ansatz ist. Vermutlich werden nun Teile des Codes mit dem Wert 0 für TIMER_TO_USE_FOR_MILLIS gebaut und andere mit 1, je nachdem welcher Header zuerst kommt/eingebunden ist.
Ich würde aus dem Code in pins_arduino.h ein
machen und dann per Compileroption (-D bei gcc) den Wert anpassen.
Ich würde aus dem Code in pins_arduino.h ein
Code: Alles auswählen
#ifndef TIMER_TO_USE_FOR_MILLIS
#define TIMER_TO_USE_FOR_MILLIS 0
#endif
-
- Beiträge: 135
- Registriert: So 9. Dez 2018, 11:30
Re: Der AVR-/ARDUINO-Faden
Mein #define (FS_NO_GLOBALS) war etwas anders gemeint. Die Frage war ob der Code bereits ein #define für FS_NO_GLOBALS hat. Der Compiler motzt wenn man probiert ein vorhandenes #define zu überschreiben. Also zu einem funktionierenden Codestand die Zeile #define FS_NO_GLOBALS DEADBEEF hinzufügen und schauen ob der Compiler was dazu sagt.
Re: Der AVR-/ARDUINO-Faden
Danke, bei den (Sloeber) Arduino>>Compile Options>> append to all:
-DTIMER_TO_USE_FOR_MILLIS=1
hat funktioniert.
-DTIMER_TO_USE_FOR_MILLIS=1
hat funktioniert.
Re: Der AVR-/ARDUINO-Faden
Hallo Chris,
Viele Grüße
Andreas
In meinen Quelltexten nutze ich das bisher nicht. Und die Arduino IDE sucht nicht in den verlinkten Bibliotheken, oder habe ich etwas übersehen?
Viele Grüße
Andreas
Re: Der AVR-/ARDUINO-Faden
Die ist halt sehr rudimentär.
eclipse und imho alle anderen "guten" können das.
eclipse und imho alle anderen "guten" können das.
Re: Der AVR-/ARDUINO-Faden
Hab das wesentliche mal raus gezeichnet: die Datenleitungen hab ich wegen der Übersichtlichkeit weggelassen.
Die Widerstände haben alle 1K.
Spannungsversorgung über USB.
Bei einem blanken Tiny funktioniert das, verlötet nicht immer gut/ oder wie gerade, überhaupt nicht*.
1 Idee, Die Widerstände verkleinern ? (ich glaube mein Schaltung taugt nichts, es wird wohl auf 2 oder 3 hinaus laufen müssen)
2 Idee, noch mal neu aufbauen, schöner und verständlicher wie hier:
https://github.com/felias-fogg/RescueAVR (das ist auch meine Software in Teilen)
3 Idee, was kaufen das einfach funktioniert und keine Probleme macht ?
* an VCC des Tiny hängt der Regler mit Kondensator,
an Reset die Basis eines Transistors, wie auch an PB4,
der Rest hängt in der Luft.
Wie sind eure Erfahrungen? was funktioniert gut "In-System"?
Re: Der AVR-/ARDUINO-Faden
Warum schließen die Transistoren die Spannungen kurz? Ich würde da schon das erste Problem vermuten, weil die Spannung am Widerstand mit dem Stromverbrauch der Schreibvorgänge im Tiny schwankt.
Re: Der AVR-/ARDUINO-Faden
wenn ich's noch richtig weiß habe ich den für 5v nachgerüstet wegen genau solcher Probleme.
Und glaubte Erfolg gehabt zu haben. Im original kommen die einfach von einem Nano Pin.
Der für 12v ist prinzipiell auch im original so.
Die Software schaltet beide Spannungen nur kurz zu wie im Datenblatt beschrieben.
es geht ja nur darum per HV die Fuses zu setzen im Grunde.
Ich werde wohl mal neu aufbauen mit kleinstmöglichen Widerständen.
Nee, vorher werde ich einen Testmode einbauen der mir ein pwm signal pin-weise generiert.
das könnte Erkenntnis bringen.
Und glaubte Erfolg gehabt zu haben. Im original kommen die einfach von einem Nano Pin.
Der für 12v ist prinzipiell auch im original so.
Die Software schaltet beide Spannungen nur kurz zu wie im Datenblatt beschrieben.
es geht ja nur darum per HV die Fuses zu setzen im Grunde.
Ich werde wohl mal neu aufbauen mit kleinstmöglichen Widerständen.
Nee, vorher werde ich einen Testmode einbauen der mir ein pwm signal pin-weise generiert.
das könnte Erkenntnis bringen.
Re: Der AVR-/ARDUINO-Faden
Ich habe Probleme mit einem Nano Clone. Der steigt sporadisch regelmäßig aus.
Ich kann nichts ausschließen, hab aber tendenziell was elektrisches in Verdacht.
Die Hardware mit Stromversorgung mache ich grade neu.
Ein Watchdog liefert nur Blödsinn wegen des Bootloaders, deshalb, unter anderem, kann der weg.
Das nur zu den Randbedingungen.
Ich hadere jetzt mit den Fuses.
Offenbar sind die auf "Low Power Crystal Oscillator" gesetzt.
kann ich gefahrlos "Full Swing Crystal Oscillator" probieren?
Brown Out enabled hätte ich gerne, weil ich in den EEprom schreibe.
Um die Fuses per HV zu resetten muss wohl der 6beinige SchwingDing raus, da traue ich mich nicht ran.
Deshalb hab ich Schiss und frage lieber nach.
Ich kann nichts ausschließen, hab aber tendenziell was elektrisches in Verdacht.
Die Hardware mit Stromversorgung mache ich grade neu.
Ein Watchdog liefert nur Blödsinn wegen des Bootloaders, deshalb, unter anderem, kann der weg.
Das nur zu den Randbedingungen.
Ich hadere jetzt mit den Fuses.
Offenbar sind die auf "Low Power Crystal Oscillator" gesetzt.
kann ich gefahrlos "Full Swing Crystal Oscillator" probieren?
Brown Out enabled hätte ich gerne, weil ich in den EEprom schreibe.
Um die Fuses per HV zu resetten muss wohl der 6beinige SchwingDing raus, da traue ich mich nicht ran.
Deshalb hab ich Schiss und frage lieber nach.
Re: Der AVR-/ARDUINO-Faden
Jo, das Flag kannst du relativ gefahrlos setzen, das kann helfen, gerade falls das einer dieser Nano's ist, die mit 3.3V laufen, den AVR aber trotzdem (ausserhalb der Spec) mit 16 MHz laufen lassen.
Es gibt leider auch echt grosse Unterschiede in der Qualität der gefälschten AVRs auf den Nanos, einige laufen 100%ig, können auch Strom sparen, etc.
Andere verbrennen dauerhaft 2mA, völlig egal in welchem Betriebsmodus
(ich hab gerade nicht nachgeschaut, ob die Fusebits selbst gerade so richtig sind, das checkst du idealerweise nochmal mit nem FuseCalc Online-Tool)
Re: Der AVR-/ARDUINO-Faden
Danke, der läuft zwar mit 5v aber die Bedingungen sind wohl eher... noisy.
Bis auf die unbenutzten eFuses sind die gleich mit denen der boards.txt
so einer ist das, mit usb und regler auf der Rückseite.
Bis auf die unbenutzten eFuses sind die gleich mit denen der boards.txt
so einer ist das, mit usb und regler auf der Rückseite.
- Dateianhänge
-
- noex_259.jpg (6.41 KiB) 609 mal betrachtet
- Alexander470815
- Beiträge: 2395
- Registriert: So 11. Aug 2013, 15:42
- Wohnort: D:\Hessen\Gießen
Re: Der AVR-/ARDUINO-Faden
Löte mal direkt an die Pins für die Versorgungsspannung einen SMD Kerko, muss nicht groß sein, aber direkt dran.
Ist ein bisschen knifflig den zwischen Quarz und Controller zu quetschen aber geht.
Das hat das Problem bei mir zuverlässig behoben.
Ich hatte das Problem sogar mit originalen 328PB auf den gleichen Nano Platinen, irgendwas ist da anders.
Auch wenn 328P drauf steht ist manchmal 328PB drin.
Der P hat zwei GND und VCC der PB nur jeweils einen.
Ist ein bisschen knifflig den zwischen Quarz und Controller zu quetschen aber geht.
Das hat das Problem bei mir zuverlässig behoben.
Ich hatte das Problem sogar mit originalen 328PB auf den gleichen Nano Platinen, irgendwas ist da anders.
Auch wenn 328P drauf steht ist manchmal 328PB drin.
Der P hat zwei GND und VCC der PB nur jeweils einen.
Re: Der AVR-/ARDUINO-Faden
hab nachgeguckt, dieser hat 2 gnd schon mal.
1206 ist eigentlich das kleinste was ich mir zutraue,
aber man wächst ja an seinen Aufgaben, mal schauen.
Auf dem Schreibtisch funktioniert's, eingebaut werd ich mir das mit dem Scope ansehen soweit möglich.
Was mir das MCUSR sagen will ist ne andere Sache, trotz ohne Bootloader
das hier liefert jetzt meistens 1101, ob nun Reset oder Kabel ziehen.
beim/nach flashen (000)0
so richtig schlau werde ich trotz dabla nicht draus.
1206 ist eigentlich das kleinste was ich mir zutraue,
aber man wächst ja an seinen Aufgaben, mal schauen.
Auf dem Schreibtisch funktioniert's, eingebaut werd ich mir das mit dem Scope ansehen soweit möglich.
Was mir das MCUSR sagen will ist ne andere Sache, trotz ohne Bootloader
Code: Alles auswählen
uint16_t mus=0;
if (mcusr_mirror & (1<<PORF))mus+=1;//Power-on
if (mcusr_mirror & (1<<EXTRF))mus+=10;//Reset
if (mcusr_mirror & (1<<BORF))mus+=100;//Brown-out
if (mcusr_mirror & (1<<WDRF))mus+=1000;//Watchdog
rec.addMsg(rec.MSG_AVR_START, millis(),mus, avr_starts, true);
beim/nach flashen (000)0
so richtig schlau werde ich trotz dabla nicht draus.
Re: Der AVR-/ARDUINO-Faden
Moin, hier hängt es mal wieder:
Ich habe einen max232 an RX0 und TX0 eines Arduino Mega2560, kann es ein, das ich den RX0 nicht benutzen kann, weil der auf dem Arduino-Board einen USB-TTL Wandler hat, der den RX0 auf High hält?
Ich kann Daten mit der RS232 Empfangen, aber der TTL- Pegel am Arduino geht nur auf ca. 2,5V unter beim Senden.
Ich habe einen max232 an RX0 und TX0 eines Arduino Mega2560, kann es ein, das ich den RX0 nicht benutzen kann, weil der auf dem Arduino-Board einen USB-TTL Wandler hat, der den RX0 auf High hält?
Ich kann Daten mit der RS232 Empfangen, aber der TTL- Pegel am Arduino geht nur auf ca. 2,5V unter beim Senden.
Re: Der AVR-/ARDUINO-Faden
Es ist nie eine gute Idee, zwei Peripheriebausteine unselektiv parallel an den gleichen Port zu klemmen. Schalte ordentlich zwischen beiden um oder benutze eine andere serielle. Der Atmega hat reichlich davon.
MfG. Andreas
MfG. Andreas