| Autor |
Problem bei PIC-Programmierung Suche nach: pic (2060) |
|
|
|
|
BID = 408238
Racingsascha Schreibmaschine
    
Beiträge: 2247 Wohnort: Gundelsheim
|
|
Hallo allerseits
Ich hab zwar schon etwas erfahrung in Assembler, aber ich hab ein Problem bei der Programmierung eines PIC.
Folgendes: an 2 I/O-pins (GPIO 0 und 1 eines 12F675) sind drei taster angeschlossen (siehe schaltplan) die alle unterschiedliche reaktionen des PIC (mit goto-befehlen) auslösen sollen. Das ganze findet in der Interrupt-routine statt, ich poste hier mal den ausschnitt:
;********************************
;***Interrupt der UPM+- Tasten***
;********************************
movwf w_temp ;|\
swapf STATUS,w ;| Interrupt
bcf STATUS, RP0 ;| Saver
movwf status_temp ;|/
btfss mode,1 ;mode fragen
goto BBL-Modus ;wenn mode=FF, dann SL-modus
SL-Modus
btfss GPIO,0
btfss GPIO,1
goto UPMminus
goto UPMplus
comf mode
BBL-Modus
btfss GPIO,0
goto blinkplus
btfss GPIO,1
goto blinkminus
comf mode
mode ist ein register, das als zu groß dimensioniertes flag dient, der rest sind marken.
Das problem ist hauptsächlich die abfrage von 2 Pins gleichzeitig. (da der dritte beide pins gleichzeitg auf masse zieht)
kann mir jemand helfen? falls noch mehr infos gebraucht werden bitte stellen |
|
BID = 408248
Ltof Inventar
     
Beiträge: 9386 Wohnort: Hommingberg
|
|
In Application Note 234 von Microchip wird beschrieben, wie man mehrere Taster mit nur einem Pin (!) auswerten kann. Gleich auf den ersten Seiten.
http://ww1.microchip.com/downloads/en/AppNotes/00234a.pdf
_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor) |
|
BID = 408257
Racingsascha Schreibmaschine
    
Beiträge: 2247 Wohnort: Gundelsheim
|
danke, werde mal da nachkucken
|
BID = 408260
Racingsascha Schreibmaschine
    
Beiträge: 2247 Wohnort: Gundelsheim
|
danke, werde mal da nachkucken
|
BID = 408289
Racingsascha Schreibmaschine
    
Beiträge: 2247 Wohnort: Gundelsheim
|
die AN hat sehr geholfen, hab sie gespeichert für zukünftige projekte  aber habs auch so geschafft
nächste frage: kann man aus der Interrupt-routine sofort in einen Teil der hauptroutine springen (also wenn im interrupt zb ein bestimmter wert errechnet wurde: goto abc)?
wenn nich wird das komplette programm eine interruptroutine
|
BID = 408291
Ltof Inventar
     
Beiträge: 9386 Wohnort: Hommingberg
|
Nee, das geht nicht. Dann wäre es ja kein Interrupt mehr. Man kann aber aus der ISR ein Unterprogramm aufrufen.
Wenn möglich, am besten ganz auf den Interrupt verzichten.
Das ist auch relativ einfach, weil sich die Interrupt-Ereignis-Flags in PIR1 auch so auswerten lassen, selbst wenn kein Interrupt benutzt wird.
Gruß,
Ltof
_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)
|
BID = 408302
Racingsascha Schreibmaschine
    
Beiträge: 2247 Wohnort: Gundelsheim
|
hmm Interrupt weglassen is ne gute Idee weil der PIC in beiden Programmen hauptsächlich mit ner Softwarewarteschleife beschäftigt ist und da en Poll aufs INT-Flag gut einzubauen is. INT-flag->kucken welche Taste->Progwechsel oder Parameterverstellung im aktuellen prog  warum bin ich da nich gleich drauf gekommen
|