Autor |
|
|
|
BID = 935249
GerDominator Stammposter
Beiträge: 233
|
|
Habe ein simples Problem dass mir mittlerweile sämtliche Haare ausfallen lässt..
Ich programmiere einen PIC16F690 in Assembler. Habe mir auch einen Debugheader zugelegt.
Folgender Codeausschnitt:
Code : |
#define SS PORTC, 7
#define SP PORTB, 7
BANK_0
clrf PORTA ;Set all ports to 0
clrf PORTB
clrf PORTC
;PORTA
BANK_1
bsf TRISA, 2 ;Set RA2 (P_SP) as analog input
;PORTB
BANK_1
movlw b'11110000'
movwf TRISB
;PORTC
BANK_1
movlw b'11111111' ;Set RCX to Input
movwf TRISC
;digital - analog
BANK_2 ;ANSEL(H) Digital or Analog
movlw b'10100100' ;Analog Pins: RA2/AN2 (P_SP)
movwf ANSEL ; RC1/AN5 (P_SS)
movlw b'00001000' ; RC3/AN7 (SE)
movwf ANSELH ; RB5/AN11 (VIOUT)
;Pull-Ups
;BANK_1
;bcf OPTION_REG,7
;Löschen von RABPU habe rausgekommentiert da ich an dieser
;Stelle verwirrt war
BANK_2
clrf WPUB
modecheck ;Modi-Auswahl
BANK_0
btfss SS ;Start-Stop-Mode
goto modecheck_SP
goto Startstopmode
modecheck_SP
btfss SP ;Speed Mode
goto modecheck_AM
goto Speedmode
modecheck_AM ;Automatic Mode
btfss AM
goto modecheck_MM
goto Automaticmode
modecheck_MM ;Manual Mode
btfss MM
goto modecheck
goto Manualmode
|
|
Nun zum Problem, mein Programm hüpft nun immer in den Speedmode obwohl gar kein Highpegel an RB7 anliegt! Ich kann mir das absolut nicht erklären! Ihr vielleicht?
Zum RABPU. Um alle Pullups zu deaktivieren soll man das Bit ja löschen. Da es negiert ist, wollte ich nun fragen ob ich um alle Pullups auszuschalten nun
bcf OPTION_REG,7
oder
bsf OPTION_REG,7
schreiben muss.
Danke im Voraus! Sorry wenn ich evtl. zu viel Code gepostet habe.
_________________
"Wenn wir alles täten, wozu wir imstande sind, würden wir uns wahrscheinlich in Erstaunen versetzen." - Thomas Alva Edison |
|
BID = 935250
Offroad GTI Urgestein
Beiträge: 12742 Wohnort: Cottbus
|
|
Zitat :
| mein Programm hüpft nun immer in den Speedmode obwohl gar kein Highpegel an RB7 anliegt! Ich kann mir das absolut nicht erklären! Ihr vielleicht? | Bei unbeschaltetem Eingang kann alles mögliche passieren.
Wenn du unbegingt nach HIGH schalten willst, füge einen Pulldown-Widerstand ein. Bei der "regulären" Schaltung nach LOW solltest du die internen Pullup-Widerstände verwenden, die hat der Hersteller da ja nicht umsonst reinzelebriert
_________________
Theoretisch gibt es zwischen Theorie und Praxis keinen Unterschied. Praktisch gibt es ihn aber. |
|
BID = 935252
der mit den kurzen Armen Urgestein
Beiträge: 17434
|
Aber auch da solltest du dafür sorgen das der Taster per Software entprellt wird!
Wie schon gesagt hat sich der Hersteller schon was dabei gedacht da Pullup R einzubauen! Offene Eingänge mögen digitale Schaltungen gar nicht!
_________________
Tippfehler sind vom Umtausch ausgeschlossen.
Arbeiten an Verteilern gehören in fachkundige Hände!
Sei Dir immer bewusst, dass von Deiner Arbeit das Leben und die Gesundheit anderer abhängen!
|
BID = 935314
GerDominator Stammposter
Beiträge: 233
|
Danke für die schnellen Antworten. Ich hatte vor bei allen Pinabfragen Pullups zu verwenden, nachdem die Hardware allerdings geätzt und gelötet war ist mir aufgefallen dass die Pins am PORTC keine Pullups haben, bzw. manche von diesen. Leider ein bisschen blöd gelaufen.
Ich werde die Schaltung umlöten, nur die internen Pullups verwenden und dann neu berichten.
_________________
"Wenn wir alles täten, wozu wir imstande sind, würden wir uns wahrscheinlich in Erstaunen versetzen." - Thomas Alva Edison
[ Diese Nachricht wurde geändert von: GerDominator am 21 Aug 2014 10:16 ]
|
BID = 935323
GerDominator Stammposter
Beiträge: 233
|
Im Debug Mode funktioniert mein Programm. In der Realität allerdings nicht. Ich möchte den Kopf in den Sand stecken
_________________
"Wenn wir alles täten, wozu wir imstande sind, würden wir uns wahrscheinlich in Erstaunen versetzen." - Thomas Alva Edison
|
BID = 935326
der mit den kurzen Armen Urgestein
Beiträge: 17434
|
Du kannst aber auch zusätzlich einen Pullup extern zum Eingang schalten ca 47 kOHM. Wichtig ist nur das der Eingang ein sauberes H sieht und das der Eingang durch die Taste auf L gezogen wird.
_________________
Tippfehler sind vom Umtausch ausgeschlossen.
Arbeiten an Verteilern gehören in fachkundige Hände!
Sei Dir immer bewusst, dass von Deiner Arbeit das Leben und die Gesundheit anderer abhängen!
|
BID = 935332
GerDominator Stammposter
Beiträge: 233
|
Es funktioniert doch! Ich habe mich durch einen anderen Fehler irritieren lassen. Es wurde in den Startstopmode gegangen allerdings die dort eingestellte PWM nicht ausgeführt. Ich habe mit dem Oszi die PWM beobachtet und daraus geschlossen, dass der PIC nicht in den Mode gegangen ist. Habe eine Test-LED angeschlossen, und siehe da, der PIC macht doch was er soll
Von nun an werde ich immer eine Test-LED in meine Schaltung integrieren und diese in den einzelnen Programmteilen dann aktivieren oder deaktivieren.
Nochmals danke!!
_________________
"Wenn wir alles täten, wozu wir imstande sind, würden wir uns wahrscheinlich in Erstaunen versetzen." - Thomas Alva Edison
|