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
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