Hallo Leute, ich hätte eine Frage zur Programmierung eines Mikrocontrollers(16F690) mittels Assembler: Kann ich mehrere Programme auf den PIC "raufgeben" und mit einem oder mehreren Tastern von einem Programm auf das andere switchen? Ich steuere nämlich einige LEDS mit dem und möchte jedoch per Knopfdruck andere Programme aufrufen. Wenn ja, an welchem Port schließe ich den Taster an? Oder wenn ich 3 Taster habe mit denen ich 3 verschiedene Programme betreiben möchte??? Danke LG
Das macht man nicht mit mehreren Programmen. Das ist ein nur Programm, wo man aus einem Array ein Lauflichtmuster auswählt. Dieses wird solange durchlaufen, bis man das nächste auswählt. Man braucht auch nicht mehrere Taster. Es reicht ein Taster und bei jedem Druck wird das folgende ausgewählt und am Ende wieder das erste. In Assembler ist das aber sehr komplizert, das geht viel besser in C. Peter
Ich habe drei fertige Programme! Wie kann ich sie kombinieren und mit einem oder drei Taster steuern? Welche Pins sind für die Taster geeignet? Könnt ihr mir einige Tipps geben? Danke auch an Peter, jedoch möchte ich das mit Assembler machen, weil die Programme schon fertig sind und ich sie nur kombinieren möchte. LG Danke
Hallo Anfänger, auch wenn du jetzt die harten Satzzeichen auspackst, ich glaube nicht dass du auf die Art hier Hilfe bekommst. Deine Aufgabe ist, ein Minimum an Eigenleistung vorausgesetzt, auch für Anfänger zu bewältigen. Die besagte Eigenleistung musst du erstmal bringen, also zumindest erklären wie weit du bist und wo du nicht weiterkommst. Wahrscheinlich kann ein geübter PIC-Programmierer deine Aufgabe in wenigen Minuten lösen, wenn die bestehenden Programme keine besonderen Fallstricke enthalten. Aber, er hat ja nichts davon, also kannst du nur freundlich um Mithilfe bitten und den Löwenanteil musst du selber leisten. Alles klar? Gruß, Edson
Danke für die schnelle Antwort, jedoch habe ich dieses "Satzzeichen" einfach so eingesetzt, aber es hatte keinen besonderen Grund dafür gehabt. Ich glaube, dass ich meine Texte recht freundlich formuliert habe, aber trotz allem bedanke ich mich für deine mühe, mir beizubringen wie man in Foren schriebt. LG und Danke
Hallo Anfänger, :-) Nimm nicht alles krumm was im Forum so geschrieben wird. Doch jetzt zur Sache: Falls noch nicht geschehen, solltes Du Dir unbeding mal die Seite von "sprut" [http://www.sprut.de/index.htm] als Pflichtlektüre zu Gemüte führen. Da findest Du fast alle Grundlagen für die Programmierung des PIC. Hier mal meine Tips: Ganz wichtig: Datenblatt grob überlesen (damit man den Überblick hat), dann die interessierenden Stellen genauer nachlesen Du schreibst am einfachsten eine Interrupt-Service-Routine (ISR) welche bei einem Tastendruck aufgerufen wird. Natürlich muss der Taster ordentlich entprellt sein. Das kann mittels RC-Kombination, bessr jedoch mittels Software geschehen Selbstverständlich kann die Tasterabfrage auch ohne ISR durchgeführt werden. Mit ISR ist aber eleganter und lässt außérhalb des Tastendruckes dem µC alle Zeit für andere Aufgaben. Zum Anschluss des Tasters eignet sich z.B ein Portpin, der die Interruptfunktion "Interruptaufruf bei steigender oder fallender Flanke" zur Verfügung stellt (RA2). Das entsprechende Bit zum Einschalten findet man im OPTION_REG (Option-Register) Bit6 INTEDG: Interrupt Edge Select bit 1 = Interrupt on rising edge of RA2/INT pin 0 = Interrupt on falling edge of RA2/INT pin Register INTCON (Interrupt Control-Register) bit 4 INTE: RA2/INT External Interrupt Enable bit 1 = Enables the RA2/INT external interrupt 0 = Disables the RA2/INT external interrupt In der ISR zählst Du einfach die Anzahl der Tastendrucke mit. Nach Rückkehr aus der ISR verzweigst Du mittels Abfrage des Zählerstandes in die gewüschte Subroutine, welche das angewählte Muster darstellt. Ich würde dies am einfachsten mit einer Tabelle lösen. Das an sich einfache Programm geht in Assembler prima zu programmieren. Als Ideen-Beispiel (Entwurf) habe ich Dir einen Programmablaufplan (PAP) beigefügt. Einen solcher empfiehlt sich stets vor dem Erstellen der Software zu erstellen und aktuell zu halten. Der PAP kann z.B. mit Variablen, Flags usw, grob bis beliebig tief detailliert sein. Kostensloser Download [http://www.gso-koeln.de/papdesigner/Download.html] Siehe auch: [http://de.wikipedia.org/wiki/Programmablaufplan] mfG Ottmar
Hallo Anfänger, habe ganz vergessen zu sagen, dass Deine 3 Programme die von mir im PAP genannten Unterprogramme sind und du diese über das Hauptprogramm "Main", so wie im PAP dargestellt verknüpfen solltest. Den doppelten und dreifachen Programmcode musst du halt editieren, also bereinigen. Es ist nicht möglich im PIC 3 Programme wie z.b. in Windows zu laden und einfach aufzurufen. Die Programme müssen wie von mir dargestellt zu EINEM Programm umgeschrieben werden, was auch großenteils mit drag and drop in einer IDE wie MPLAB geschehen kann. mfg Ottmar
Boahh:) Ottmar ich bedanke mich herzlich für dein Schreiben und ich hoffe, dass ich das schaffen werde:) Vielen Danke für deine Mühe
Ottmar K. schrieb: > Nimm nicht alles krumm was im Forum so geschrieben wird. Hat er ja nicht. Nach Lektüre deiner Tipps hoffe ich jetzt, dass er auch nicht jeden Rat ungefiltert annimmt. Ottmar K. schrieb: > Zum Anschluss des Tasters eignet sich z.B ein Portpin, der die > Interruptfunktion "Interruptaufruf bei steigender oder fallender Flanke" > zur Verfügung stellt (RA2). Meine Kritik: Ein INT als Tasteneingang ist allgemein als schlechte Praxis bekannt. Die CPU wird durch einen prellenden Taster und damit häufig auftretende Interrupts unnötig ausgebremst. Eine Wartezeit innerhalb einer ISR ist zum Zwecke der Entprellung eine Holzhammermethode, die massive Latenz-Zeiten einbringt. Hardware-Entprellung ist ineffizient, weil man das eben leicht in SW erledigen kann. Mein Tipp: Tasten kommen an einen einfachen Portpin, in einer Timer-ISR können dann Abfrage und Entprellung vorgenommen werden. Der entprellte Signalzustand wird über das RAM ans Hauptprogramm gegeben. Ganz einfach. Für die Aufgabe des TE brauchen dann nur die Einsprungpunkte der Unterprogramme in der Hauptschleife so angeordnet werden, dass je nach Tastenzustand (oder Zählerstand, wie du es beschrieben hast) das korrespondierene Programm ausgeführt wird. Gruß, Edson
Hallo Anfänger, Meister Eder schrieb: > Tasten kommen an einen einfachen Portpin, in einer Timer-ISR können dann > Abfrage und Entprellung vorgenommen werden. Der entprellte Signalzustand > wird über das RAM ans Hauptprogramm gegeben. Ganz einfach. Da hat Meister Eder schon recht, vergiss meinen Vorschlag und nimm den seinen! mfg Ottmar
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.
