Forum: Mikrocontroller und Digitale Elektronik drehimpulsgeber - auswertung läuft von selbst


von christian s. (soulcatcher)


Lesenswert?

Hallo Leute.

blöde Frage - könnt ihr sicher ratzfatz beantworten - bevor ich mich 
noch einen Tag lang herumärgere ...

Ich habe am µC einen Drehimpulsgeber hängen, aber die Auswertung zählt 
von alleine (sporadisch und unregelmäßig) am Display hoch...

Ich habe bereits:
*) ja, der Drehimpulsgeber hängt mit gemeinsamer Masse am µC
*) den Drehimpulsgeber getauscht
*) die Pins am µC gegeneinander & gegen komplett andere getauscht
*) die Schaltung 2x am Streckbrett aufgebaut
*) ein anderes Steckbrett ausprobiert
*) Tiefpässe eingebaut
*) Per 10k-R an V+ gehängt ...
*) meinen Code gegen mehrere Standard-Codes ausgetauscht
*) die Zuleitungen getauscht & sogar den Drehimpulsgeber abgehängt

Ich denk mal, dass das Steckbrett die Wackeleien verursacht ... aber 
auch wenn ich nichts an die Pins (ja, Ausgang inkl Pull-Ups) anhänge?

Ich glaube - eben weil auch Standardcode und alles bis auf die 
Display-Ausgabe ausgeklammert - ist ein Code-Beispiel unnötig ...

Danke und liebe Grüße
Christian

von Wolfgang (Gast)


Lesenswert?

christian s. schrieb:
> ich denk mal, dass das Steckbrett die Wackeleien verursacht ... aber
> auch wenn ich nichts an die Pins (ja, Ausgang inkl Pull-Up und
> gemeinsamer Masse) anhänge?

Ich würde jetzt die Schuld für eine ungeeignete Software nicht auf das 
Steckbrett ziehen. Ein AB-Signal muss sich so systematisch ändern, dass 
der Zufall sich da schon mächtig Mühe geben muss, damit die Signale für 
ein definiertes Hochzählen erzeugt werden. Ein einzelner Wackelkontakt 
auf einem Pin darf nur ein hin- und herspringen um 1 generieren.

von christian s. (soulcatcher)


Lesenswert?

jo, hab aber auch Standard-Code (von hier: 
https://www.mikrocontroller.net/articles/Drehgeber) verwendet ... der 
sollte zumindest funktionieren ...

von Dieter F. (Gast)


Lesenswert?

christian s. schrieb:
> µC

Welcher

christian s. schrieb:
> ist ein Code-Beispiel unnötig

Nein - zeig bitte

christian s. schrieb:
> jo, hab aber auch Standard-Code (von hier:
> https://www.mikrocontroller.net/articles/Drehgeber) verwendet ... der
> sollte zumindest funktionieren ...

So sehe ich das auch - also kommt der Fehler von Deiner Schaltung oder 
Deinem sonstigen Programm.

von christian s. (soulcatcher)


Lesenswert?

Wie sagt man? Experten haben meißtens recht?

Ja, Fehler im Code, Variable an falscher Stelle deklariert, und zwar 
genau die, in der das Zwischenergebnis beim Umwandeln von String in Int 
kurz vor der Ausgabe gespeichert wurde. Interessanter Nebeneffekt ...

Danke für die Info, ich hätt sonst noch stundenlang an falscher Stelle 
gesucht ...

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

christian s. schrieb:
> Danke für die Info, ich hätt sonst noch stundenlang an falscher Stelle
> gesucht ...
Ich bin mir nicht gnz 100% sicher, dass du den eigentlichen Fehler schon 
gefunden hast. Du deklarierst die Variable jetzt einfach woanders? 
Ändert sich jetzt die Variable, die an der Stelle steht, wo vorher die 
andere war?
Dann ist es ein amoklaufender Pointer...

> Variable an falscher Stelle deklariert, und zwar genau die, in der das
> Zwischenergebnis beim Umwandeln von String in Int kurz vor der Ausgabe
> gespeichert wurde. Interessanter Nebeneffekt ...
Da wäre es jetzt interessant, den fehlerhaften Code und die "Korrektur" 
mal zu sehen. Im Idealfall kannst du das auf einen "Dreizeiler" 
reduzieren.

von christian s. (soulcatcher)


Lesenswert?

Lothar M. schrieb:
> Ich bin mir nicht gnz 100% sicher, dass du den eigentlichen Fehler schon
> gefunden hast.

ja, habe ich, jetzt funktioniert alles (bis auf eine gelegentliche 
Unschärfe von einem Digit beim Umschalten, die bei einem Gray-Code in 
Kombination mit Billig-Drehimpulsgeber von Pollin üblich ist).

Ich hbe allerdings mehrere Fehler gefunden bzw. Fehlerquellen 
eliminiert. Ich habe versucht, die Werte von der Hauptschleife zu den 
Funktionen und zwischen sämtlichen Include-Files per Globale Variablen 
zu übergeben. Und das dürfte gewaltig in die Hose gegangen sein.
Nachdem ich die Variablen ordnungsgemäß und regelkonform übergeben habe 
war alles wieder gut.

Interessant war allerdings, dass die bloße Erwähnung der betroffenen 
Include-Files (#include ...) - ohne das Aufrufen der darin enthaltenen 
Funktionen - ausgereicht hat, um diese "Störung" auszulösen ...

Und die Moral von der Geschicht:
Der einfachste Weg ist nicht immer der richtige Weg ...

von Der Andere (Gast)


Lesenswert?

christian s. schrieb:
> Interessant war allerdings, dass die bloße Erwähnung der betroffenen
> Include-Files (#include ...) - ohne das Aufrufen der darin enthaltenen
> Funktionen - ausgereicht hat, um diese "Störung" auszulösen ...

Klingt sehr nach einen eigentlich anderen Problem.
Bis bald mit dem nächsten "seltsamen" Verhalten

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
Noch kein Account? Hier anmelden.