ich bin seit gestern Mittag am verzweifeln, in meinem Sketch verwende ich die UART doch immer wenn ich die Pins RX und TX mit dem Finger einem Bauteil oder irgendeine pseudo Verbindung dazwischen herstelle hängt sich mein Arduino auf und macht nichts mehr bis er resettet wird oder die Spannung weggenommen und wieder angesteckt wird.
Es handelt sich um ein steckbrett aufbau mit Atmega328 mit UNO Bootloader.
Auf meinem Steckbrett ist folgender Aufbau: Siehe Anhang.
Es ist eine Extrem abgespeckte Schaltung um sögliche Fehlerquellen auszuschließen ich habe das Orginal im Anhang.
Im Anhang die Orginal Schaltung, die ich aufgebaut habe, doch was ich versuchte es funktionierte nicht.
Der Reset ist dauer HIGH weil der Controller extern programmiert wird und dann auf den Sockel gesteckt.
Es besteht also kein Bedarf diesen zu resetten.
was wird als Stromversorgung verwendet? So ein kleines Schatnetzteil mit Eurostecker (ohne "Erde")? Dann würde ich mal genau dort ansetzen. Vor allem diese kleinen Dinger in der Klasse der Handyladegerte sind für solche Probleme bekannt, auch Laptopnetzteile ohne Schukostecker.
Hintergrund: Die Funkentstörkondensatoren sorgen für relativ hohe Netzspannungsreste auf der Ausgangsseite. Hochohnige Eingänge sind dann schnell "beleidigt". Eventuel hilft es wenn man die betroffenen Pins mit einem Widerstand in der 10k Gegend mit Masse verbindet.
Als Versorgungsspannung kommt der USB Port.
Die Spannung wird geglättet von einem USB zu TTL Wandler(Dessen Sendepins nicht angeschlossen nur + und -)
Doch auch aus dem Laptop oder USB Port direkt kann ich die Spannung nehmen.
Abgesehen von der Spannungsquelle, den Pin mit einem Pulldown versehen habe ich schon versucht ohne Erfolg, er ist trotzdem beleidigt.
Mit dem Software Serial funktioniert das Senden und empfangen doch mit Software Serial schiebe ich nur das Problem zur Seite.
Zum messen habe ich ein Oszi, die Spannung ist ziemlich stabil und erstrecht mit den 100nF
Er wird angesteuert von einem Digital Pin des Arduinos da er Senden als auch Empfangen soll.
Aber es geht garnicht um den Wandler sondern, dass der Arduino als einfachste Schaltung ( die aller erste) Störungen am TX Pin aufweist. Der 2. Schaltplan ist die ursprüngliche Schaltung welche fehlerhaft ist und um den Fehler einzugrenzen habe ich sie stück für stück auseinander genommen bis nur noch der Controller da war.
ich habe gerade ein ähnliches Problem (oder vielleicht auch das selbe?) -> s. im anderen Forum [1]
Bei mir tritt der Fehler immer dann auf, wenn ich den Arduino über eine Stromversorgung betreibe, die nicht galvanisch von der Netzspannung getrennt ist.
D.h. bei einem einfachen Schaltnetzteil mit Spartrafo oder über einen Laptop dessen Netzteil auch nicht sauber trennt funktioniert das Ganze nicht und bei mir stürzt der Arduino ab, selbst dann, wenn ich den GND mit einer nicht angeschlossenen Oszi-Messspitze (oder mit einem anderen GND) berühre! Er stürzt dabei nicht immer beim ersten Mal ab, sondern ich muss meistens mehrmals den GND berühren.
Das nächste Problem das dadurch auftritt habe ich bei meiner Lichtschranke bemerkt: Hier habe ich auf Empfängerseite eine IR-Photodiode mit Transistorverstärkung die bei Sichtkontakt zwischen 0V und 1.5V ausgibt (je nachdem, wie gut die IR-LED ausgerichtet ist) ausgibt, bei Unterbrechung des Lichtweges 2.7V.
Messe ich das Signal allerdings bei Betrieb mit nicht galvanisch getrennter Spannungsquelle, so sind die 2.7V nicht "sauber", sondern man erkennt mit einem Oszi ein leichtes ~50Hz-"Flimmern".
Benutze ich ein galvanisch getrenntes Netzteil (Schaltnetzteil oder Linear-Trafo-Netzteil spielt keine Rolle?) oder einen Laptop mit "gutem Netzteil" (ich benutze ein MacBook Pro) oder betreibe den Arduino in Akkubetrieb, dann funktioniert alles ohne Probleme! Ebenfalls funktioniert es, wenn ich ein nicht-galvanisch getrenntes Netzteil nutze und dieses an einem 230V-Trenntrafo betreibe...
Warum das so ist, konnte auch im anderen Forum bisher niemand sagen. Auf jeden Fall kommt irgendwie über die Netzspannung ein Störsignal ins System welches den Arduino durcheinander bringt...
Ich nehme das Problem hin und arbeite mit Software Serial welches funktioniert. Die Problemlösung kostet im Augenblick zu viel Zeit und Zeit ist Geld. Damit verwerfe ich die Fehler suche und nutze den Software Bus welcher glücklicherweise funktioniert.
Weitere Lösungsansätze sind natürlich nicht verboten.
Ich weiß es, da ich eine LED 1sek blinken lasse.
Die LED ist verbunden mit Pin 8 und GND. Es ist eine LED vom R mit einem eingebauten Vorwiderstand für 5V.
Ich wollte wissen, ob er sich aufhängt oder ob er einfach keine Lust hat zu senden.
Selbes Ergebnis bekomme ich natürlich auch ohne LED.
Folgender Sketch zeigt mir das:
int milliss = 0;//Zeitmerker
int led;//Ein Bool für den led status
void setup() {
Serial.begin(9600);
pinMode(8, OUTPUT);//Da hängt die LED
}
void loop() {
Serial.write(10);//Sende ein Bitmuster
//LED Blinken ohne Delay
if (millis() - milliss > 1000)
{
if (led)
{
digitalWrite(8, HIGH);
led = 0;
}
else
{
digitalWrite(8,LOW);
led = 1;
}
milliss = millis();
}
}
Und diese LED Blinkt solange der Arduino sendet. Sobald der Fehler auftritt behält die LED ihren Status High oder Low und TX geht High
int milliss = 0;//Zeitmerker
...
if (millis() - milliss > 1000)
...
milliss = millis();
Ja, da hängt sich nicht der Arduino auf sondern Du hast einen Overflow der vorzeichenbehafteten 2-Byte Variable und somit wird die IF-Bedingung nicht mehr wahr.
Das ist richtig aber irrelevant für das Problem. Mein Testzyklus bricht immer dann ab wenn TX und RX berührt wird oder in einem Controller zusammen arbeiten. Ich sage ab nun dazu, gestört... ihr habt bestimmt recht, dass es nach 32 sek sowieso aus ist mit dem LED Blinken doch ich kam noch nicht dazu solange zu testen da wie gesagt das Blinken schon vorher aufhört wenn ich TX störe es ist ja nur ein Test der mir zeigt, die Loop funktion hängt sich auf und Serial.write wird nicht mehr ausgeführt. TX geht auf HIGH vielleicht weil das Idle ist. Frage ist ja aber warum hängt der controller.