Nein das ist viel zu groß.
1 µ (mikro) = 0,001 n (nano)
1 n = 0,001 p (piko)
Also wie du siehst ist der 1µF viel zu groß!
mfg
Benny
Hallo,
emoment bin ich dabei folgende Schaltung zu basteln:
http://www.sprut.de/electronic/pic/p...t/lauflich.htm
(Anstelle eines Keramikresonators nehme ich einen Quarz.)
Kann man bei der Taktversorgung mit einem Quarz auch größere Kondensatoren verwenden als 15pF? Ich habe nur 1mikro Farad- Kondensatoren da.
Gruß,
Sebastian
Nein das ist viel zu groß.
1 µ (mikro) = 0,001 n (nano)
1 n = 0,001 p (piko)
Also wie du siehst ist der 1µF viel zu groß!
mfg
Benny
cooming soon...
also getestet hab ich des mit bis zu 33pF aber da wird es schon problematisch
Legastheniker on Bord !
lediglich zur Richtigstellung:
1 µF (mikro) = 1000 nF (nano)
1 nF (nano) = 1000 pF (piko)
Je größer die Kondensatoren an deinem Oszillator werden,
desto länger braucht dieser zum Einzuschwingen.
Die Obergrenze von 47pF würde ich nicht überschreiten.
Auf einem Steckbrett lief der PIC sogar ohne die Kondensatoren,
hier kommen die Kapazitäten der Steckkontakte positiv zum tragen.
mfg Siro
Ähm ja klar.
Weiß auch nicht was ich da gestern Abend gedacht habe!
mfg
Benny
cooming soon...
Erstmal danke für eure Mühe!
Es funktioniert alles bestens in dem oben genannten Beispiel.
=D>
Doch bei meiner Weiterentwicklung gibt es so einige Probleme.
Ich verwende den PIC16F84A und habe an PortB LEDs mit Widerständen angeschlossen. An PortA.3 (Pin 2) ist ein Taster mit einem 2.7kOhm-Widerstand angeschlossen, der bei Knopfdruck zu PortA.2 (Pin 1) schließt.
Die LEDs sollen leuchten, wenn der Taster gedrückt ist.
Mein Quelltext:
Seltsamerweise gehen die LEDs schon an, wenn ich mein Experimentboard mit der Hand berühre.Code:list p=16f84 ; Includedatei für den 16F84 einbinden #include <P16F84A.INC> ; Configuration festlegen ; bis 4 MHz: Power on Timer, kein Watchdog, XT-Oscillator __CONFIG _PWRTE_ON & _WDT_OFF & _XT_OSC ;************************************************************** ; Variablen festlegen ;********************************************************** ; los gehts mit der Initialisierung Init bsf STATUS, RP0 ; auf Bank 1 umschalten movlw B'00000000' ; PortB alle output movwf TRISB bcf STATUS, RP0 ; auf Bank 0 zurückschalten clrf PORTB ; alle LEDs ausschalten movwf PORTB BCF TRISA,3; PortA,3 wird auf output geschaltet BSF TRISA,2 ; PortA,2 wird auf input geschaltet BSF PORTA,3 ; PortA,3 wird auf high gesetzt ; das Folgende ist die Hauptschleife, die endlos durchlaufen wird Main call Tastaturbehandlung ; Tastatur abfragen goto Main2 ; keine Taste gedrückt Main2 goto Main Tastaturbehandlung btfsc PORTA, 2 ; ist RA2 nicht high? movlw B'00000000' ;dann werden alle LEDs ausgeschaltet btfss PORTA, 2 ; ist RA2 high? movlw B'11111111' ;dann werden alle LEDs eingeschaltet movwf PORTB return end
Ist da vielleicht ein Wackelkontakt drin? (Das Board ist nagelneu!)
Gruß,
Sebastian
Hi,
ich beziehe mich auf folgenden Code:
1. TRISA kann nicht beschrieben werden, da du schon vorher auf die Bank 0 zurückwechselst!Code:Init bsf STATUS, RP0 ; auf Bank 1 umschalten movlw B'00000000' ; PortB alle output movwf TRISB bcf STATUS, RP0 ; auf Bank 0 zurückschalten clrf PORTB ; alle LEDs ausschalten movwf PORTB BCF TRISA,3; PortA,3 wird auf output geschaltet BSF TRISA,2 ; PortA,2 wird auf input geschaltet BSF PORTA,3 ; PortA,3 wird auf high gesetzt
2. Ist das Riskant wenn Du keinen Schutzwiderstand zwischen den beiden Pins verbaust, da durch einen Fehler z.B. beide RA2 + RA3 als Ausgang gesetzt und einer davon High, der andere Low und der Kurzschluss ist perfekt.
mfg
Benny
Hallo,
danke für die Antwort. Ist den folgender Code richtig?
Gruß,Code:list p=16f84 ; Includedatei für den 16F84 einbinden #include <P16F84A.INC> ; Configuration festlegen ; bis 4 MHz: Power on Timer, kein Watchdog, XT-Oscillator __CONFIG _PWRTE_ON & _WDT_OFF & _XT_OSC ;************************************************************** ; Variablen festlegen ;********************************************************** ; los gehts mit der Initialisierung Init BCF TRISA,3; PortA,3 wird auf output geschaltet BSF TRISA,2 ; PortA,2 wird auf input geschaltet BSF PORTA,3 ; PortA,3 wird auf high gesetzt bsf STATUS, RP0 ; auf Bank 1 umschalten movlw B'00000000' ; PortB alle output movwf TRISB bcf STATUS, RP0 ; auf Bank 0 zurückschalten clrf PORTB ; alle LEDs ausschalten movwf PORTB ; das Folgende ist die Hauptschleife, die endlos durchlaufen wird Main call Tastaturbehandlung ; Tastatur abfragen goto Main2 ; keine Taste gedrückt Main2 goto Main Tastaturbehandlung bcf STATUS, RP0 ; btfsc PORTA, 2 ; ist RA2 nicht high? movlw B'00000000' ;dann werden alle LEDs ausgeschaltet btfss PORTA, 2 ; ist RA2 high? movlw B'11111111' ;dann werden alle LEDs eingeschaltet bsf STATUS, RP0 ; auf Bank 1 umschalten movwf PORTB return end ;**********************************************************
Sebastian
Edit: Ich habe einen 2,7 kOhm-Widerstand dazwischen. Es liegt wohl doch kein Wackelkontakt vor.
Nein, da haste Du ja dass gleiche Problem. Du willst das TRISA Register beschreiben aber bist noch in Bank 0, das TRISA Register ist aber auf Bank1.
Was das soll kapier ich nicht:Code:Init: bsf STATUS,RP0 movlw B'00000100' ; 2 auf Eingang movwf TRISA movlw B'00000000' ; alle auf Ausgang movwf TRISB bcf STATUS,RP0 clrf PORTB; ; alle LEDs aus bsf PORTA,3 ; High an RA3
Warum nicht einfach:Code:; das Folgende ist die Hauptschleife, die endlos durchlaufen wird Main call Tastaturbehandlung ; Tastatur abfragen goto Main2 ; keine Taste gedrückt Main2 goto Main
mfgCode:; das Folgende ist die Hauptschleife, die endlos durchlaufen wird Main call Tastaturbehandlung ; Tastatur abfragen goto Main ; keine Taste gedrückt
Benny
Hallo,
es hat den gleichen Effekt wie mein erstes Skript.
Gruß,
Sebastian
Lesezeichen