RFID-Projekt - Tipps und Kaufberatung Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte
Autor |
RFID-Projekt - Tipps und Kaufberatung Suche nach: rfid (252) |
|
|
|
|
BID = 435153
Ltof Inventar
Beiträge: 9334 Wohnort: Hommingberg
|
Bevor Du darüber verzweifelst:
Die Register ANSEL und CMCON0 müssen initialisiert werden.
ANSEL (in Bank 1) wird einfach gelöscht
in CMCON0 wird 0x07 geschrieben.
Die Analog-Eingänge haben nach dem Reset Vorrang gegenüber der digitalen I/O-Funktion.
_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)
[ Diese Nachricht wurde geändert von: Ltof am 7 Jun 2007 16:55 ]
|
BID = 435178
Haudegen Neu hier
Beiträge: 26
|
|
Zitat :
Ltof hat am 7 Jun 2007 16:52 geschrieben :
|
Bevor Du darüber verzweifelst:
| Schon längst geschehen
Ich muss das machen, dass meine Pins auf analogen Input geschaltet sind, oder?
Mach ich das mit:
Code : |
CLRF ANSEL ; ANSEL auf 0 setzen
MOVLW 0x07 ; 7h ins Arbeitsregister laden
MOVWF CMCON0 ; Arbeitsregister nach CMCON0 kopieren |
|
Das bin ich schon längst Hänge schon den ganzen Tag vor der Kiste und bekomme nichts hin.Z.B. Möchte beim dem einfachen Programm Blinklicht den Port 3 (GP4) als Ausgang definieren. Leider leuchtet die LED nur wenn ich das Programm so schreibe und zwar an GP0.
Code : |
main
bsf STATUS,RP0 ; select Register Page 1
bcf TRISIO,0 ; make IO Pin C0 an output
bcf STATUS,RP0 ; back to Register Page 0
Mainloop
BSF GPIO,0 ;turn on LED C0
Onloop
DECFSZ Delay1,f
GOTO Onloop
DECFSZ Delay2,f
GOTO Onloop
BCF GPIO,0 ;turn off LED C0
Offloop
DECFSZ Delay1,f
GOTO Offloop
DECFSZ Delay2,f
GOTO Offloop
GOTO Mainloop ;do it again |
|
Meine angeschlossene LED soll einfach an Port 3 Leuchten. Geht nicht.
Bin zu blöde die Ports zu initialisieren. Was ich nicht verstehe ist das mit den Ports. Du schreibst dass die kleinen Bausteine nur einen Port haben GPIO. Ok, aber kann ich den nicht einem beliebigen Pin zuweisen?
Was muss ich im Programm noch so initialisieren?
GP4 als Ausgang
GP2 als ST-Eingang (Wie aktivieren ich den ST?)
Was ich eigentlich heute wollte war:
1. Pins initialisieren
2. Schmitt Trigger aktivieren
3. Das ganze ausprobieren indem ich an den Eingang 3V anlege und schaun ob die LED brennt.
Du hast zwar ganz am Anfang geschrieben, dass es mit 30 Zeilen Assembler getan wäre... aber irgendwie kommt es mir vor als stehe ich vor nem riesigen Berg.
[ Diese Nachricht wurde geändert von: Haudegen am 7 Jun 2007 18:52 ] |
|
BID = 435183
Racingsascha Schreibmaschine
Beiträge: 2247 Wohnort: Gundelsheim
|
Zitat :
| Du schreibst dass die kleinen Bausteine nur einen Port haben GPIO. Ok, aber kann ich den nicht einem beliebigen Pin zuweisen? |
GPIO ist das Register, in das du die Zustände der als Output konfigurierten Pins einschreibst. Die einzelnen Pins ham die Namen GP0, GP1...GP5, welche direkt mit den einzelnen Bits im GPIO-Register korrespondieren. (siehe Datenblatt) Wenn du die LED an GP3 leuchten lassen willt, schreibst du 0x08 (00001000) in das GPIO-Register. dann geht GP3 auf high und die Led erstrahlt (wenn sie gegen Masse geschaltet ist)
@ Ltof: korrigier mich, wenn ich falsch liege, bin schon etwas eingerostet
_________________
Fnord ist die Quelle aller Nullbits in deinem Computer.
Fnord ist die Angst, die Erleichterung, und ist die Angst.
Fnord schläft nie.
|
BID = 435187
Ltof Inventar
Beiträge: 9334 Wohnort: Hommingberg
|
OK, schön eins nach dem anderen:
Die Initialisierung von ANSEL und CMCON0 so wie Du sie gemacht hast, dient dazu alle Pins als "digital I/O" zu verwenden. Macht man das nicht, verweigern die I/O den Dienst für digitale Eingangs, bzw. Ausgangssignale.
Bei der Initialisierung von ANSEL fehlt die Bankumschaltung. ANSEL liegt in Bank 1, das heisst, vorher muss umgeschaltet werden, sonst wird auf ein Register in Bank 0 zugegriffen (Siehe Kapitel 2.2.2). Das ist eine kleine Gemeinheit der PICs über die fast alle Anfänger stolpern. Ansonsten ist dieser Codeschnipsel richtig.
Was meinst Du mit "Port 3"? Ich habe das Gefühl, dass Du PIN 3 meinst. Bringe die Begriffe "Port" und "Pin" nicht durcheinander. Der Pin ist das Ding aus Draht, das aus dem schwarzen Käfer kommt. Der "Port" ist das Ein-/Ausgangsregister in dem Käfer drin, das mit den Pins außen verbunden ist - sofern es durch die Initialisierung auf die Pins geschaltet ist.
GP4 spielt nicht, wegen der nicht erfolgten Löschung von ANSEL. Setze "clrf ANSEL" vor oder nach "BCF TRISIO GPIO,...". Dort wird auf Bank 1 zugegriffen. UND, was ich an Deinem Code NICHT sehen kann: der PIC muss in den Configuration-Bits so eingestellt werden, das der Interne Oszillator OHNE Clockout läuft. Ansonsten hast Du an diesem PIN den Prozessor-Takt.
Man kann nicht jede interne Funktion auf einen beliebigen PIN setzen. Welche Funktionen die PINs haben KÖNNEN, sieht man im PIN-Diagramm. Momentan benutzt Du nur die digitalen Funktionen GP0 bis GP5. Die analogen interessieren nicht.
GP2 ist automatisch ein Schmitt-Trigger-Eingang, wenn er als digitaler Eingang Initialisiert ist (Siehe TABLE 1-1).
Dein Code läuft übrigens, nachdem ich ANSEL und CMCON0 richtig anspreche und die Deklaration von Delay1 und Delay2 eingefügt ist.
Der Berg wird abgetragen.
edit:
@Rennsascha
Prinzipiell richtig, doch an GP3 lässt man NIEMALS eine LED leuchten. Das ist der einzige, der nur als Eingang geht.
_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)
[ Diese Nachricht wurde geändert von: Ltof am 7 Jun 2007 20:09 ]
|
BID = 435212
Racingsascha Schreibmaschine
Beiträge: 2247 Wohnort: Gundelsheim
|
siehste, eingerostet obwohl mein erstes Projekt für nen 16F675 war/ist, bei dem geht GP3 auch nur als Eingang. ist aber schon en halbes Jahr her glaub ich.
_________________
Fnord ist die Quelle aller Nullbits in deinem Computer.
Fnord ist die Angst, die Erleichterung, und ist die Angst.
Fnord schläft nie.
|
BID = 435232
Haudegen Neu hier
Beiträge: 26
|
Hatte nur ab der Mainfunction gepostet. Der ganze Code sieht jetzt mit deiner Korrektur so bei mir aus.
Code : |
; This file is a basic code template for assembly code generation *
; on the PIC12F683. This file contains the basic code *
; building blocks to build upon. *
; *
; If interrupts are not used all code presented between the ORG *
; 0x004 directive and the label main can be removed. In addition *
; the variable assignments for 'w_temp' and 'status_temp' can *
; be removed. *
; *
; Refer to the MPASM User's Guide for additional information on *
; features of the assembler (Document DS33014). *
; *
; Refer to the respective PIC data sheet for additional *
; information on the instruction set. *
; *
;**********************************************************************
; *
; Filename: xxx.asm *
; Date: *
; File Version: *
; *
; Author: *
; Company: *
; *
; *
;**********************************************************************
; *
; Files required: *
; *
; *
; *
;**********************************************************************
; *
; Notes: *
; *
; *
; *
; *
;**********************************************************************
list p=12F683 ; list directive to define processor
#include <p12F683.inc> ; processor specific variable definitions
errorlevel -302 ; suppress message 302 from list file
__CONFIG _FCMEN_OFF & _IESO_OFF & _CP_OFF & _CPD_OFF & _BOD_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_OFF & _INTRC_OSC_NOCLKOUT
; '__CONFIG' directive is used to embed configuration word within .asm file.
; The lables following the directive are located in the respective .inc file.
; See data sheet for additional information on configuration word settings.
;***** VARIABLE DEFINITIONS
w_temp EQU 0x70 ; variable used for context saving
status_temp EQU 0x71 ; variable used for context saving
cblock 0x40
Delay1 ; Define two file registers for the
Delay2 ; delay loop
endc
;**********************************************************************
ORG 0x000 ; processor reset vector
goto main ; go to beginning of program
ORG 0x004 ; interrupt vector location
movwf w_temp ; save off current W register contents
movf STATUS,w ; move status register into W register
movwf status_temp ; save off contents of STATUS register
; isr code can go here or be located as a call subroutine elsewhere
movf status_temp,w ; retrieve copy of STATUS register
movwf STATUS ; restore pre-isr STATUS register contents
swapf w_temp,f
swapf w_temp,w ; restore pre-isr W register contents
retfie ; return from interrupt
main
MOVLW 0x07 ; 7h ins Arbeitsregister laden
MOVWF CMCON0 ; Arbeitsregister nach CMCON0 kopieren
bsf STATUS,RP0 ; select Register Page 1
CLRF ANSEL ; ANSEL auf 0 setzen
bcf TRISIO,0 ; make IO Pin C0 an output
bcf STATUS,RP0 ; back to Register Page 0
Mainloop
BSF GPIO,0 ;turn on LED C0
Onloop
DECFSZ Delay1,f
GOTO Onloop
DECFSZ Delay2,f
GOTO Onloop
BCF GPIO,0 ;turn off LED C0
Offloop
DECFSZ Delay1,f
GOTO Offloop
DECFSZ Delay2,f
GOTO Offloop
GOTO Mainloop ;do it again
; initialize eeprom locations
ORG 0x2100
DE 0x00, 0x01, 0x02, 0x03
END ; directive 'end of program'
|
|
Wenn der Schmitt-Trigger mit Ansel bereits aktiviert wurde dann sollte er ja bei genügend Spannugn an GP2 schon auf den Ausgang durchschalten, oder? Bräuchte ja dann keinen Programmcode mehr da er ja eh ein High herausgeben soll. Habe aber immer noch Probleme den Ausgang (Pin) zu definieren. Wenn ich Pin GP4 nehmen will dann müsste ich doch laut eurer Aussage folgendes schreiben,
Code : |
MOVLW 0x09 ; 9h ins Arbeitsregister laden
MOVWF GPIO |
|
, oder? Danke für deinen letzten Satz...hat mir wieder Mut gemacht
|
BID = 435240
Ltof Inventar
Beiträge: 9334 Wohnort: Hommingberg
|
Damit würden GP0 und GP3 (hä?, meinst wohl GP4, also 0x11) auf high gesetzt werden - wenn denn in TRISIO auch beide als Ausgang initialisiert sind.
bcf TRISIO,0
bcf TRISIO,4
oder:
movlw B'11101110'
movwf TRISIO
Wie ich schon an anderer Stelle schrub: die unbeschalteten Portpins besser auf Ausgang schalten.
also
clrf TRISIO
oder, wenn GP2 als Eingang ins Spiel kommt:
movlw B'00000100'
movwf TRISIO
In ANSEL und CMCON0 werden nur die Analogfunktion abgeschaltet. Da wird noch nicht definiert, welche Richtung (Ein- oder Ausgang) der Digitalport hat.
Du bist schnell!
_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)
[ Diese Nachricht wurde geändert von: Ltof am 7 Jun 2007 22:08 ]
|
BID = 435241
Racingsascha Schreibmaschine
Beiträge: 2247 Wohnort: Gundelsheim
|
Zitat :
| Wenn ich Pin GP4 nehmen will dann müsste ich doch laut eurer Aussage folgendes schreiben:
Code : |
MOVLW 0x09 ; 9h ins Arbeitsregister laden
MOVWF GPIO |
|
|
Richtig aber immmer drauf achten in welcher Bank du dich befindest und wo das Zielregister ist. und falls du mal was größeres machen willst: bei der Variablendeklaration kannst du auch in der 2 (und 3. und 4. Bank) Variablen erstellen, musst halt nur darauf achten dass du in dir richte Bank springst. Bei der Initialisierung gehe ich folgendermaßen vor: ich richte erst alles in Bank 0 ein, dann kommt Bank 1 usw. dann gehts zurück in Bank 0 und das programm beginnt
_________________
Fnord ist die Quelle aller Nullbits in deinem Computer.
Fnord ist die Angst, die Erleichterung, und ist die Angst.
Fnord schläft nie.
|
BID = 435441
Ltof Inventar
Beiträge: 9334 Wohnort: Hommingberg
|
@Haudegen
Na, die Nacht durchprogrammiert?
Zum Test, ob das machbar ist was ich Dir da eingebrockt habe, hab ich das aus irgendwelchen alten Codeschnipseln von anderen Programmen zusammengewurschtelt.
Das geht und verbraucht gemessene 5 bis 6µA (ca. 4 Jahre Standby mit der CR2032).
Was ich gemacht habe:
-Der µC läuft mit 31 kHz.
-Wake Up per WDT nach zwei WDT-Takten (mit Codeausführung insgesamt etwa alle 35 ms).
-Messung der Spannung an AN0/Pin7 (das war einfacher zu testen, weil das Poti auf dem Demoboard da angeschlossen ist).
-Bei Überschreiten einer oberen Schwelle geht die LED an GP4 für eine Zeit ein mal an und ignoriert fortan das Überschreiten der Schwelle (ein "Merkbit" wird gesetzt).
-Bei Unterschreiten eines niedrigeren Spannungswertes löscht er das "Merkbit" wieder.
Falls Du schon von Bits und Bytes träumst und nix mehr hinbekommst, gebe ich konkrete Unterstützung. Da Du aber mörderschnell losgelegt hast und funktionierenden Code hinbekommen hast ( ) wirst Du das voraussichtlich auch alleine hinbekommen.
Gruß,
Ltof
_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)
|
BID = 435504
Haudegen Neu hier
Beiträge: 26
|
Bin leider erst heute Abend heimgekommen. Konnte heute leider noch nichts machen. Morgen bin ich auf ner Hochzeit eingeladen da wirds auch schwer... Werde mich aber jetzt nochmal mit der Initialisierung und Portvergabe auseinandersetzen. Blicke da immer noch nicht richtig durch. Du denkst zwar dass ich schnell bin aber mir kommt das gar nicht so vor.
Habe mal wieder versucht die Initialisierung zu machen. Mein Ziel ist immer noch.
1. GP4 als Ausgang
2. Schmitt-Trigger ( GP2) aktivieren um 3 V anlegen zu können und schaun ob eine angeschlossene LED leuchtet und wieder ausgeht wenn ich die Spannung wegnehme. Ok mit den beiden Befehlen für Digital I/O ist wie du sagst der ST bereits aktiv. Nur wenn ich den Quellcode unten auf den PIC spiele dann bringt er mir auf GP4 ein High ohne dass ich eine Spannung anlege. Nebenbei bringt er mit bei GP0 auch eine leuchtende LED. Ich weiß dass ich irgendwas total falsch mache nur was?
In den letzten 4 Zeilen habe ich versucht deine Tips einzubinden. Hab das nicht ganz verstanden. könntest du mir diese Zeilen mal kommentieren?
Code : |
bcf STATUS,RP0 ; Bank 0
MOVLW 0x07 ; 7h ins Arbeitsregister laden
MOVWF CMCON0 ; Digital I/O
MOVLW 0x11 ; 11h ins Arbeitsregister laden
MOVWF GPIO ; GP4 = Port
bsf STATUS,RP0 ; Bank 1
CLRF ANSEL ; Digital I/O
bcf TRISIO,0 ; Port wird als Ausgang definiert, oder???
bcf TRISIO,4 ; ??? warum 4?
clrf TRISIO ; ??? Alle Ports werden auf Ausgang geschaltet ?? warum ??
movlw B'00000100' ; ??? Für was steht die binäre 4?
movwf TRISIO ; ???
|
|
Das ganze läuft doch so ab, dass ich im Laufe meines Programms den einen Port den ich habe (IO) je nach Bedarf mit "Tris" als Eingang und Ausgang definieren muss, oder? Wie muss ich das denn anstellen?
Zu deinem Programm von dem du erzählt hast. Erstmal beruhigend dass es möglich ist Hast du die Methode mit dem ST genommen oder eine der anderen? Der ST hat ja wie erwähnt eine zu hohe Durchlassspannung ( 0.8 * VDD )und fällt ja eigentlich raus. Mit dem WDT und einschlafen usw. hab ich mich noch nicht beschäftigt. Das wird auch noch was...
Achja das mit dem Träumen von Bits und Bytes war wirklich so
[ Diese Nachricht wurde geändert von: Haudegen am 9 Jun 2007 0:06 ]
|
BID = 435536
Ltof Inventar
Beiträge: 9334 Wohnort: Hommingberg
|
Dann feier mal schön bei der Hochzeit und vergiss die Bits und Bytes für den Tag.
Meine Kommentare:
Code : |
bcf STATUS,RP0 ; Bank 0
MOVLW 0x07 ; 7h ins Arbeitsregister laden
MOVWF CMCON0 ; Komparator abschalten
MOVLW 0x11 ; 11h ins Arbeitsregister laden
MOVWF GPIO ; GP4 high, GP0 high (das macht hier noch keinen Sinn)
bsf STATUS,RP0 ; Bank 1
CLRF ANSEL ; Digital I/O
;Initialisierungsbespiel 1:
bcf TRISIO,0 ; GP0 als Ausgang
bcf TRISIO,4 ; GP4 als Ausgang
;Initialisierungsbespiel 2:
clrf TRISIO ; alle auf Ausgang (außer GP3, der IMMER Eingang ist)
;Initialisierungsbespiel 3:
movlw B'00000100' ; GP2 als Eingang, alle anderen (außer GP3) als Ausgang
movwf TRISIO ;
|
|
In TRISIO wird die Datenrichtung der digitalen Pins festgelegt. Nach einem Reset des PIC sind die Bits 0 bis 5 von TRISIO gesetzt (6 und 7 sind wurscht, weil ohne Funktion). Die Bits 0 bis 5 stehen für GP0 bis GP5. Soll GP0 als Ausgang wirken, muss das Bit 0 in TRISIO gelöscht werden. Das oben war nur ein Beispiel, welches auf der 0x09 (bzw. der korrigierten 0x11) aus Deinem Posting aufbaute. Das war wohl verwirrend. Natürlich sollen nicht verschiedene Initialisierungen von TRISIO gleichzeitig existieren, was auch nicht geht. Es gilt nur die letzte.
Die drei Beispiele zeigen unterschiedliche Möglichkeiten, die Bits von TRISIO zu manipulieren.
Also, gehen wir zu Deinem Ansinnen zurück:
GP2 (PIN5) als Eingang, GP4 (PIN3) als Ausgang. Die unbenutzten PINs werden auch als Ausgang gesetzt, damit sie nicht hochohmig auf undefiniertem Pegel rumeiern.
Die Initialisierung dafür würde ich so machen:
Code : |
clrf INTCON ;keine Interrupts
bsf STATUS, RP0 ;Bank 1
movlw B'00000100'
movwf TRISIO ;GP2 (und GP3) als Eingang
movlw B'10000000' ;pullups an GPIO disabled, Timer0 und Prescaler egal
movwf OPTION_REG ;(Siehe Kapitel 2.2.2.2)
clrf ANSEL ;keine A/D-Funktion
bcf STATUS, RP0 ;Bank 0
movlw B'00000111' ;Komparator aus
movwf CMCON0 ;(siehe Kapitel 8.0 und FIGURE 8-3)
|
|
Die passende Schaltung dazu ist hier zu sehen:
Zitat :
| Hast du die Methode mit dem ST genommen oder eine der anderen? |
Ich habe den ST an GP2 probiert (geht!) und eine der anderen: eine 8-Bit-analog/digital-Wandlung und in Abhängigkeit des Ergebnisses die LED geschaltet. Damit sind die Schaltschwellen frei an die Ausgangsspannung der Gleichrichtung anpassbar.
_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)
[ Diese Nachricht wurde geändert von: Ltof am 9 Jun 2007 11:00 ]
|
BID = 435552
Haudegen Neu hier
Beiträge: 26
|
Hi Ltof, danke für die Geduld und für die ausführlichere Erklärung. So langsam kommt bei mir Licht ins dunkle... würde am liebsten alles nochmal testen muss aber schon leider gleich los. Werde das morgen wenn ich wieder fit bin testen. Schönes WE!
|
BID = 435804
Haudegen Neu hier
Beiträge: 26
|
So bin jetzt wieder halbwegs fit war ne lange Nacht und hab mich gleich mal wieder ran gesetzt und deine Initialisierung getestet und versucht sie zu verstehen. Erstmal wüsste ich gerne warum Interrupts abgeschaltet werden und was es mit der Option_Reg auf sich hat. Hab mir das im Datenblatt angeschaut wurde aber nicht schlau daraus.
Nach dieser Initialisierung habe ich ja an jedem PIN das als Ausgang definiert wurde ein High liegen. Wenn der ST wie du sagtest bereits aktiv ist reicht es jetzt wenn ich meinen gewünschten Ausgang GP4 und evtl. auch die anderen Ausgänge auf LOW stelle? Schaltet er dann schon durch oder muss da noch was konfiguriert werden? Hab mal angefügt wie ich das meine. Am Ende halt gerade die Ausgänge auf LOW
Code : |
clrf INTCON ;keine Interrupts
bsf STATUS, RP0 ;Bank 1
movlw B'00000100'
movwf TRISIO ;GP2 (und GP3) als Eingang
movlw B'10000000' ;pullups an GPIO disabled, Timer0 und Prescaler egal
movwf OPTION_REG ;(Siehe Kapitel 2.2.2.2)
clrf ANSEL ;keine A/D-Funktion
bcf STATUS, RP0 ;Bank 0
movlw B'00000111' ;Komparator aus
movwf CMCON0 ;(siehe Kapitel 8.0 und FIGURE 8-3)
clrf GPIO ; alle Ausgänge auf LOW
|
|
[/quote]
Bei deiner Testschaltung blicke ich auch noch nicht ganz durch. LED mit Widerstand in Reihe am Ausgang GP4 ist klar. R29 beim ST-Eingang soll wohl das Poti auf dem Testboard darstellen damit ich die Eingangsspannung variieren kann. Weiß allerdings nicht genau wie ich an das Poti ran komme? Dann verstehe ich nicht warum der andere Eingang GP3 mit R3 und C15 verbunden ist. Würdest du die Schaltung auf dem Testboard stecken oder alles auf einer Lochplatine zusammenlöten?
[ Diese Nachricht wurde geändert von: Haudegen am 10 Jun 2007 16:44 ]
|
BID = 435819
Ltof Inventar
Beiträge: 9334 Wohnort: Hommingberg
|
Zitat :
Haudegen hat am 10 Jun 2007 16:42 geschrieben :
|
Wenn der ST wie du sagtest bereits aktiv ist reicht es jetzt wenn ich meinen gewünschten Ausgang GP4 und evtl. auch die anderen Ausgänge auf LOW stelle? Schaltet er dann schon durch oder muss da noch was konfiguriert werden?
|
Das verstehe ich gerade nicht. Was haben die anderen Ausgänge (GP0, GP1, GP5) damit zu tun? Die sind jetzt irrelevant.
Der Reihe nach:
Interrupts werden zur Zeit nicht benutzt => abschalten! (das ist laut Datenblatt nicht wirklich notwendig, weil INTCON nach dem Reset sowieso 0 ist, aber sicher ist sicher).
Der PIC hat interne Pullup-Widerstände an den PINs, die ich pauschal abgeschaltet habe (Bit 7 von OPTION_REG auf high). Ob das überhaupt etwas bringt (Strom sparen) habe ich garnicht nachgeprüft. Wahrscheinlich nicht.
GP3 (PIN4) muss auf definierten Pegel gelegt werden. Der Kondensator erhöht die Störfestigkeit des PICs an dieser Stelle. PIN4 ist der Reset-Pin, wenn in der Config-Zeile _MCLRE_ ON steht. Mit einem Taster gegen Masse an PIN4 kannst Du den PIC resetten.
Das Poti auf dem Demoboard ist nicht an PIN5 (GP2/Schmitt-Trigger) sondern an PIN7 (GP0/TTL) angeschlossen. Schau mal in den Schaltplan "Low Pin Count Demo Board Schematic":
( http://www.microchip.com/Microchip......3805# )
Ich hatte das Poti nur stellvertretend für Deine zu messende Spannung dargestellt.
Du kannst das Poti auf dem Demoboard nutzbar machen, indem Du GP0 als Eingang konfigurierst und PIN7 mit PIN5 verbindest (z.B. indem eine Drahtbrücke von PIN7 nach PIN9 der Buchsenleiste gesteckt ist).
Ob die Ausgänge nach dem Reset high oder low sind, ist nicht definiert.
So, und nun schreibe ein Programm:
Wenn GP2=1, dann mache GP4 auf 1
Wenn GP2=0, dann mache GP4 auf 0
und drehe am Poti.
Mach das gleiche mit GP0 als Eingang. Dann siehst Du gleich den Unterschied zwischen ST- und TTL-Eingang.
Unten sind die gesteckten Brücken zu sehen. Mit der gelben Brücke ist die LED "DS4" mit GP4 verbunden. Mit der roten ist GP0 mit GP2 verbunden.
_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)
[ Diese Nachricht wurde geändert von: Ltof am 10 Jun 2007 19:14 ]
|
BID = 435836
Haudegen Neu hier
Beiträge: 26
|
Zitat :
|
Das verstehe ich gerade nicht. Was haben die anderen Ausgänge (GP0, GP1, GP5) damit zu tun? Die sind jetzt irrelevant.
|
Dachte es wäre besser wenn sie alle auf LOW gesetzt werden. Aber egal denn ich glaube ich kann meinen ersten kleinen Erfolg melden
Habe die Abfrage eingebaut und siehe da er schaltet durch. Habs zwar auf die Schnelle nur mit 3V Gleichspannung an GP2 ausprobiert aber es geht. Werd später nochmal mit der Brücke und dem Poti die Schwelle ausprobieren und das Ganze mit TTL natürlich auch.
Dein letzter Satz hat mit ein Licht aufgehen lassen
Code : |
Start:
BTFSC GPIO,2 ; wenn ST-Eingang Low eine Zeile überspringe
goto Marke1 ; sonst zu Marke1 springen
bcf GPIO,4 ; LED aus
goto Start ; Zurück an den Anfang
Marke1:
bsf GPIO,4 ; LED an
goto Start
|
|
Kann ich das so stehn lassen?
Und das mit den Brücken auf dem Testboard finde ich unheimlich praktisch!
[ Diese Nachricht wurde geändert von: Haudegen am 10 Jun 2007 21:26 ]
|
|
Zum Ersatzteileshop
Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum
Datenschutz
Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland
gerechnet auf die letzten 30 Tage haben wir 19 Beiträge im Durchschnitt pro Tag heute wurden bisher 11 Beiträge verfasst © x sparkkelsputz Besucher : 182422984 Heute : 2025 Gestern : 5459 Online : 434 29.11.2024 12:38 4 Besucher in den letzten 60 Sekunden alle 15.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
|
xcvb
ycvb
0.059711933136
|