Forum: Mikrocontroller und Digitale Elektronik Mikrocontroller reagiert falsch


von Heinrich A. (Gast)


Lesenswert?

Guten Tag,

Ich habe mich eben daran gemacht ein Programm zu programmieren aber 
erstmal die Taster zu testen, allerdings habe ich das Problem das er ein 
anderes Lauflicht bei Taster RA1 laufen lässt als er eigentlich sollte. 
Undzwar lässt er das Lauflicht für den Taster RA2 laufen aber wenn ich 
RA1 gedrückt halte macht er es korrekt. Das Problem ist aber das es bei 
RA3 RA4 RA5 genau so ist obwohl die noch gar nicht programmiert sind 
(mal machen die nichts und manchmal führen die Taster das Lauflicht von 
RA2 aus) Habe bereits alles probiert aber komme nicht darauf woran es 
liegen könnte.
Hat irgendjemand eine Idee woran es liegen kann?

Mit freundlichen Grüßen,
Heinrich

von 50c (Gast)


Lesenswert?

Heinrich A. schrieb:
> Hat irgendjemand eine Idee woran es liegen kann?

...schaue dir mal die Zeile 42 in deinem Programm an, da ist der Fehler!

von Jemand aus dem Forum (Gast)


Lesenswert?

Heinrich A. schrieb:
> Hat irgendjemand eine Idee woran es liegen kann?

Wir nicht, denn dazu müssten wir Schaltung und Programm kennen.

von BuildIt (Gast)


Lesenswert?

Ist heute der Feiertag der Trolle? Habe ich den etwa übersehen?

von Sebastian R. (sebastian_r569)


Lesenswert?

Ohne Schaltplan und Quelltext wird es schwer, irgendwelche Angaben zu 
machen.

von Max (Gast)


Lesenswert?

Dein Text ist sehr schwer zu lesen und zu verstehen.
Zudem fehlt dein Programm und ein Schaltplan. Wie sollen wir das kennen? 
Wahrsagen?

von Jens M. (schuchkleisser)


Lesenswert?

Index beginnt bei 0.
Case ohne Break.
Und es fehlt ein ;

von test (Gast)


Lesenswert?

Der reagiert nicht falsch, der macht exakt das was du ihm gesagt hast 
;-) D.h. du hast ihm blödsinn erzählt ;-)

Schaltplan, Bild vom Aufbau und Quellcode. Dann findet sich hier sicher 
jemand der dir hilfreiche Tipps zum weiteren Vorgehen gibt.

von Harald W. (wilhelms)


Lesenswert?

Heinrich A. schrieb:

> Ich habe mich eben daran gemacht ein Programm zu programmieren

Ist das sowas ähnliches wie eine Rede reden oder eine Frage fragen?

von Sebastian R. (sebastian_r569)


Lesenswert?

Bestimmt ein Bug im Silizium!

von Heinrich A. (Gast)


Angehängte Dateien:

Lesenswert?

Hier ist der Quellcode, Den Schaltplan für den Mikrocontroller habe ich 
leider nicht aber daran sollte es nicht liegen, da es bei allen 
Mikrocontroller war die ich getestet habe (5Stück) ebenfalls ist es nur 
bei RA2 so also RA3 und RA1 klappen ganz normal und es sind nur die 
Taster neben RA2 also wenn ich RA1 und RA3 drücke führt er das falsche 
aus. Zusätzlich habe ich schon den interrupt Befehl etc. rausgeholt und 
probiert aber immer das selbe Problem

von Nachdenklicher (Gast)


Lesenswert?

Is doch ganz klar. Der Mikrocontroller kann mit Quelltext im PNG-Format 
einfach nix anfangen. #Anfängerfehler

von Heinrich A. (Gast)


Lesenswert?

Nachdenklicher schrieb:
> Is doch ganz klar. Der Mikrocontroller kann mit Quelltext im
> PNG-Format
> einfach nix anfangen. #Anfängerfehler

und wie soll ich sonst den Quelltext hier hochladen? Bin tatsächlich 
noch ein Anfänger :)

von Jens M. (schuchkleisser)


Lesenswert?

Nohmal ganz genau überlegen was == macht, wo man das will und wo man das 
nicht will.

von Nachdenklicher (Gast)


Angehängte Dateien:

Lesenswert?

Ich bin zu faul, es abzutippen...

von Jens M. (schuchkleisser)


Lesenswert?

NB:
Kann es sein, das hier drei Leute gleichzeitig an einem LED-Cube mit 
PIC, Schieberegister, Tastern und Ebenen rumbasteln, aber alle 
aneinander vorbeireden?
Oder hat da jemand Trollaccounts?

von Heinrich A. (Gast)


Lesenswert?

Jens M. schrieb:
> Kann es sein, das hier drei Leute gleichzeitig an einem LED-Cube mit
> PIC, Schieberegister, Tastern und Ebenen rumbasteln, aber alle
> aneinander vorbeireden?

Gut möglich das es der erste Fall ist, allerdings habe ich die anderen 
beiden schon gefragt und die haben auch keinen Plan.

von Heinrich A. (Gast)


Angehängte Dateien:

Lesenswert?

Nachdenklicher schrieb:
> Ich bin zu faul, es abzutippen...

So besser?

Beitrag #5725483 wurde von einem Moderator gelöscht.
Beitrag #5725484 wurde von einem Moderator gelöscht.
von Heinrich A. (Gast)


Lesenswert?

Jens M. schrieb:
> Nohmal ganz genau überlegen was == macht, wo man das will und wo man das
> nicht will.

== war eine Überprüfung oder? d.h. wenn der Taster 1 ist soll er das 
durchführen habe dann womöglich meinen Fehler gefunden. Er ist 
wahrscheinlich im interrupt oder?

von Adam P. (adamap)


Lesenswert?

Die Datei:

Rumpf_main.c

hätte vollkommen gereicht, also nur Dateien die du selbst schreibst, 
sprich die mit *.c oder *.h Dateiendung.

von Heinrich A. (Gast)


Lesenswert?

Adam P. schrieb:
> Die Datei:
>
> Rumpf_main.c
>
> hätte vollkommen gereicht, also nur Dateien die du selbst schreibst,
> sprich die mit *.c oder *.h Dateiendung.

Weiß ich fürs nächste mal Bescheid, danke

von Heinrich A. (Gast)


Lesenswert?

Ich werde dann einen komplett neuen Beitrag aufmachen wo ich es direkt 
und genau erkläre mit dem zugehörigen Code etc.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Heinrich A. schrieb:
> Gut möglich das es der erste Fall ist, allerdings habe ich die anderen
> beiden schon gefragt und die haben auch keinen Plan.

Auch den einen von den beiden, der die gleiche Email-Adresse verwendet 
wie Du?

Wir mögen solche "multiplen Persönlichkeiten" hier nicht.

von Max B. (citgo)


Lesenswert?

Loool

von Heinrich A. (Gast)


Angehängte Dateien:

Lesenswert?

Guten Tag,

dies ist nun der zweite Beitrag da der erste einige Mangel hatte.

Nämlich ist mein Problem, dass wenn ich den Taster_1 drücke er auch 
seinen eigenen Befehl ausführt, allerdings führt er auch manchmal den 
Befehl von Taster_2 aus was er eigentlich gar nicht soll. Das selbe 
Problem mit Taster_3, da er noch nicht konfiguriert ist bzw. keine 
Zuweisung hat macht er manchmal gar nichts aber manchmal führt er auch 
das Lauflicht von Taster_2 aus. Habe es bereits mit 5 Mikrocontrollern 
versucht also bezweifel ich das es an der Hardware liegt sondern eher am 
Quellcode.
Habe ebenfalls versucht die interrupt-Befehle und sonst alles unnötige 
rauszuholen allerdings habe ich immer das selbe Problem. Wenn ich den 
Taster_2 nicht konfiguriere klappt alles einwandfrei, das einzige 
Problem ist das ich alle 6 Taster benötige und ihn somit nicht auslassen 
kann.
Ich bedanke mich schonmal für eure Hilfe

Schönen Tag noch

von Heinrich A. (Gast)


Lesenswert?

Rufus Τ. F. schrieb:
> Heinrich A. schrieb:
>> Gut möglich das es der erste Fall ist, allerdings habe ich die anderen
>> beiden schon gefragt und die haben auch keinen Plan.
>
> Auch den einen von den beiden, der die gleiche Email-Adresse verwendet
> wie Du?
>
> Wir mögen solche "multiplen Persönlichkeiten" hier nicht.

Ich benutze seine E-Mail Adresse da er sich schon registriert hat. Um 
genau zu sein sitze ich gerade an seinem Schul-Pc.

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


Lesenswert?

Heinrich A. schrieb:
> Hier ist der Quellcode
Hast du den mit Paint gemalt?
Ich hätte da gerne mal was geändert, aber ich tu mir da mit Copy&Paste 
so schwer.

Heinrich A. schrieb:
> und die haben auch keinen Plan.
Warum diskutiert ihr nicht einfach mal einen der anderen 9999 
4x4x4-Cubes mal durch. So lange, bis ihr das verstanden habt?
Der sieht recht simpel aus: 
https://www.instructables.com/id/LED-Cube-4x4x4/
Und der ist sogar für einen PIC: 
https://electronza.com/4x4x4-led-cube-pic16f18877/

Jens M. schrieb:
> Kann es sein, das hier drei Leute gleichzeitig
So lange die Regel "1 Name pro Thread" eingehalten wird, gibts daran 
eigentlich nichts auszusetzen...  ;-)

von Heinrich A. (Gast)


Lesenswert?

Lothar M. schrieb:
> Und der ist sogar für einen PIC:
> https://electronza.com/4x4x4-led-cube-pic16f18877/

Werde es mir nach der Pause mal gleich anschauen, danke

von Abklatscher (Gast)


Lesenswert?

Aaaaargh, worst code ever.

von Heinrich A. (Gast)


Lesenswert?

Abklatscher schrieb:
> Aaaaargh, worst code ever.

Sind noch Anfänger :)

von Sebastian R. (sebastian_r569)


Lesenswert?

Tipp: Alle 64 LED-Hilfsfunktionen hätten in eine Funktion mit ein paar 
Zeilen und zwei, drei Parametern gepasst. Ein bisschen Abstraktion ist 
manchmal nicht schlecht und trägt der Übersichtlichkeit bei.

von Sebastian R. (sebastian_r569)


Lesenswert?

Tipp: Alle 64 LED-Hilfsfunktionen hätten in eine Funktion mit ein paar
Zeilen und zwei, drei Parametern gepasst. Ein bisschen Abstraktion ist
manchmal nicht schlecht und trägt der Übersichtlichkeit bei.

von jemand (Gast)


Lesenswert?

Meine Güte, 64 nahezu identische Methoden... Eine Methode mit einem 
simplen int parameter hätte gereicht.

von Heinrich A. (Gast)


Lesenswert?

Sebastian R. schrieb:
> Tipp: Alle 64 LED-Hilfsfunktionen hätten in eine Funktion mit ein
> paar Zeilen und zwei, drei Parametern gepasst. Ein bisschen Abstraktion
> ist manchmal nicht schlecht und trägt der Übersichtlichkeit bei.

Und wie genau? Kenne mich noch nicht so gut damit aus in der
Schule haben wir immer nur Lauflichter gemacht was nicht sonderlich 
schwer war. Und habe auch erstmal einen Tag dafür gebraucht und bin 
eigentlich relativ zufrieden falls es klappen sollte. Du solltest aber 
nicht vergessen das du auch mal ein Anfänger warst :)

von Markus M. (Firma: EleLa - www.elela.de) (mmvisual)


Lesenswert?

In deinem "Interrupt" kannst du "Taster_X" nicht auf 0 setzen, das ist 
ein PortPin und da kann man nur was lesen.

Lese mal die Doku von PIC.

von Adam P. (adamap)


Lesenswert?

ABER...die LED-Funktionen werden doch nirgends aufgerufen ?! :-/

Oder sehe ich den Wald vor lauter Bäumen nicht?

von (prx) A. K. (prx)


Lesenswert?

Adam P. schrieb:
> Oder sehe ich den Wald vor lauter Bäumen nicht?

... und den Thread vor lauter Threads nicht.
Würde nicht ein Thread für das Thema ausreichen?

von Heinrich A. (Gast)


Lesenswert?

Adam P. schrieb:
> ABER...die LED-Funktionen werden doch nirgends aufgerufen ?! :-/
>
> Oder sehe ich den Wald vor lauter Bäumen nicht?

Die sind noch gar nicht drin habe die nur Schonmal gemacht um mir später 
die Zeit zu sparen. Haben immerhin nur zwei Wochen Zeit und deswegen 
habe ich die schon vorgemacht

Markus M. schrieb:
> In deinem "Interrupt" kannst du "Taster_X" nicht auf 0 setzen, das
> ist ein PortPin und da kann man nur was lesen.
>
> Lese mal die Doku von PIC.

Hmm lese es mi gleich nach der Pause durch, hatte das jetzt gemacht weil 
es der Lehrer zu mir meinte das ich so die Taster unterbrechen soll bzw 
die unendlich Schleife hat aber nicht ganz so geklappt

jemand schrieb:
> Meine Güte, 64 nahezu identische Methoden... Eine Methode mit
> einem simplen int parameter hätte gereicht.

Weiß leider nicht was genau du meinst bin noch kein experte in dem 
Gebiet

von Sebastian R. (sebastian_r569)


Lesenswert?

Nja, aber ich hatte als Anfänger nicht wirklich Zugang zum Internet und 
damit zum vollständigen Wissen der Menschheit (plus ein bisschen 
Koitalentertainment und Katzenbilder).

Und ich bin mir auch ziemlich sicher, dass ich in der (Berufs-)Schule 
etwas mehr als Lauflichter hatte, bevor es ein Abschlussprojekt gegeben 
hätte, welches es nicht gab.

Funktionen, Parameter und Rückgabewerte gehören eigentlich zum 
Grundverständnis der Programmierung in C. Wenn ihr das nicht gelehrt 
bekommen habt, bevor ihr die Freigabe für so ein ambitioniertes Projekt 
bekommen habt, dann solltet ihr euch mal bei eurem Lehrer beschweren.

Ansonsten: Google. C Funktionen.

von Adam P. (adamap)


Lesenswert?

A. K. schrieb:
> Würde nicht ein Thread für das Thema ausreichen?

Denn hab ich ja auch überflogen...

Aber ich sehe nur, dass die PORTs auf verschiedene Werte gesetzt werden,
weder ein Aufruf von Lauflicht() nocht von Led_x_y().

Was soll der Sinn der Taster-Funktionen sein - ergibt kein Sinn, da 
Eingang, wie Markus M. bereits sagte - du willst eher den Status der 
Taster zurücksetzen, dafür benötigst du jedoch Flag-Variablen.

Aber ich tu mich grad schwer zu erkennen, wie der Code ein Lauflicht 
produziert.

-> Von dem du am Anfang berichtet hast.

von Heinrich A. (Gast)


Lesenswert?

Sebastian R. schrieb:
> Nja, aber ich hatte als Anfänger nicht wirklich Zugang zum
> Internet und damit zum vollständigen Wissen der Menschheit (plus ein
> bisschen Koitalentertainment und Katzenbilder).
>
> Und ich bin mir auch ziemlich sicher, dass ich in der (Berufs-)Schule
> etwas mehr als Lauflichter hatte, bevor es ein Abschlussprojekt gegeben
> hätte, welches es nicht gab.
>
> Funktionen, Parameter und Rückgabewerte gehören eigentlich zum
> Grundverständnis der Programmierung in C. Wenn ihr das nicht gelehrt
> bekommen habt, bevor ihr die Freigabe für so ein ambitioniertes Projekt
> bekommen habt, dann solltet ihr euch mal bei eurem Lehrer beschweren.
>
> Ansonsten: Google. C Funktionen.

Wir sind auch eigentlich keine AM-Klasse sondern eher eine IT-Klasse da 
ist es nur eins von vielen BU Fächern allerdings haben wir daran 
gefallen gefunden und wollten deshalb dies auch als Abschlussprojekt 
wählen

Habe ich schon versucht das einzige Problem ist nur da sind meistens 
komplett andere Befehle die ich nutze z.b. Wird dort mit einem : der 
Befehl beendet statt mit einem Semikolon.

von Heinrich A. (Gast)


Lesenswert?

Adam P. schrieb:
> A. K. schrieb:
> Würde nicht ein Thread für das Thema ausreichen?
>
> Denn hab ich ja auch überflogen...
>
> Aber ich sehe nur, dass die PORTs auf verschiedene Werte gesetzt werden,
> weder ein Aufruf von Lauflicht() nocht von Led_x_y().
>
> Was soll der Sinn der Taster-Funktionen sein - ergibt kein Sinn, da
> Eingang, wie Markus M. bereits sagte - du willst eher den Status der
> Taster zurücksetzen, dafür benötigst du jedoch Flag-Variablen.
>
> Aber ich tu mich grad schwer zu erkennen, wie der Code ein Lauflicht
> produziert.

Okay flag-Variablen sind mir neu werde mal gleich dazu recherchieren. 
Wie gesagt habe die nur schonmal programmiert damit ich mir später wenn 
ich alles durch habe die Zeit spare, noch stehen die da einfach ohne 
einen Grund. Hast du auch vielleicht eine Antwort zu meinem eigentlichen 
Problem?

von Heinrich A. (Gast)


Lesenswert?

> Was soll der Sinn der Taster-Funktionen sein - ergibt kein Sinn, da
> Eingang, wie Markus M. bereits sagte - du willst eher den Status der
> Taster zurücksetzen, dafür benötigst du jedoch Flag-Variablen.
>
> Aber ich tu mich grad schwer zu erkennen, wie der Code ein Lauflicht
> produziert.
>
> -> Von dem du am Anfang berichtet hast.

Lauflicht ist vllt schlecht ausgedrückt sind einfach nur paar LED‘s die 
bei Taster_X angehen wollen da ich noch Raumprobleme wie ich ein Befehl 
in die Endlosschleife legen kann aber dann trotzdem auf einen anderen 
Taster zugreifen zu können bzw das der dann die eine unendlich-Schleife 
unterbricht und eine neue beginnt. Das bekomme ich aber gerade ebenfalls 
nicht hin

von Erich (Gast)


Lesenswert?

Heinrich A. schrieb:
> die
> bei Taster_X angehen

WO sind die Taster angeschlossen?
Wo ist das Schaltbild?

von Heinrich A. (Gast)


Lesenswert?

Erich schrieb:
> WO sind die Taster angeschlossen?
> Wo ist das Schaltbild?

Einen Schaltplan habe ich leider nicht. Die Taster und LED`S sind alle 
auf der selben Platine angeschlossen wie der Controller

von Martin Maulheld (Gast)


Lesenswert?

Zu diesem Thread fallen mir nur drei Worte ein: rofl lol

von Max B. (citgo)


Lesenswert?

Heinrich A. schrieb:
> Einen Schaltplan habe ich leider nicht. Die Taster und LED`S sind alle
> auf der selben Platine angeschlossen wie der Controller

So kann dir kein Mensch hier helfen!

Es geht uns nicht um das WO die Taster angeschlossen sind sondern um das 
WIE!

Heinrich A. schrieb:
> Das Problem ist aber das es bei
> RA3 RA4 RA5 genau so ist obwohl die noch gar nicht programmiert sind

Taster kann man nicht programmieren!
Wenn für die Taster noch kein Code hinterlegt sein sollte, dann sind sie 
einfach nur falsch angeschlossen!

Beitrag #5725626 wurde von einem Moderator gelöscht.
von Adam P. (adamap)


Angehängte Dateien:

Lesenswert?

(Beitrag neu erstellt, bzgl. doppeltem Dateianhang)

Ich kann mir das nicht länger mit ansehen...

HIER BITTE.

Es gibt 1000 Möglichkeiten, aber hab versucht es so einfach wie möglich
zu halten.

von Heinrich A. (Gast)


Lesenswert?

Adam P. schrieb:
> (Beitrag neu erstellt, bzgl. doppeltem Dateianhang)
>
> Ich kann mir das nicht länger mit ansehen...
>
> HIER BITTE.
>
> Es gibt 1000 Möglichkeiten, aber hab versucht es so einfach wie möglich
> zu halten.

Danke dafür, kannst du mir noch vllt erklären was die zahlen bei dem 
#define darstellen soll? Habe das noch nicht so ganz verstanden.

Bist aber der einzige der mir ernsthaft versucht hat zu helfen :)

PS: Es heißt Logik, wie du mir hilfst, helfe ich dir :)

von Heinrich A. (Gast)


Lesenswert?

> Danke dafür, kannst du mir noch vllt erklären was die zahlen bei dem
> #define darstellen soll? Habe das noch nicht so ganz verstanden.
>
> Bist aber der einzige der mir ernsthaft versucht hat zu helfen :)
>
> PS: Es heißt Logik, wie du mir hilfst, helfe ich dir :)

Nevermind habe es verstanden danke (:

von Adam P. (adamap)


Lesenswert?

Ja ich hätte auch Bit-Shifting machen können, aber dann wäre es mit der 
switch bissel blöd.

Die stellen die einzelnen Bits in der 8-Bit Variable dar.

von Lochrasterfan (Gast)


Lesenswert?

Heinrich A. schrieb:
> erklären was die zahlen bei dem #define darstellen soll?

#define ist eine Compiler-direktive:

wenn du schreibst

#define Heinrich 100

wird der Präprozessor vor dem eigentlichen Compilieren des Quellcodes 
alle Vorkommen von "Heinrich" durch "100" ersetzen.

https://de.wikibooks.org/wiki/C-Programmierung:_Pr%C3%A4prozessor

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.