- Akku Tests und Balkonkraftwerk Speicher         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 17

Thema: einen PIN abfragen (Ganz übles Anfängerproblem)

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    20.03.2007
    Beiträge
    9

    einen PIN abfragen (Ganz übles Anfängerproblem)

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hi zusammen,

    ich habe mir vor einiger Zeit beim großen C ein PIC Experimentierboard, welches den 16F627 beinhaltet, zugelegt.
    Seit Wochen bin ich jetzt schon am probieren und verzweifle bald.
    Ich bekomme es nicht gebacken einen einzelnen Pin (RA0) abzufragen welcher dann eine einzelne LED (RB0) anschalten soll.
    Ich habe bestimmt tausend Tutorials gelesen, unter anderem auch die Sprut Page, aber es gibt nirgends ein einfaches simples Beispiel.
    WeKaHe - Wer kann helfen?

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.03.2006
    Ort
    WOB
    Beiträge
    630
    wir alle, wenn du uns dein Problem mal genau beschreibst! zeig mal deine Software und evtl. n Plan und sag was er macht/was nicht
    Gruß Thomas \/

    Alles über AVR, PIC und CAN
    blog.cc-robotics.de

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    08.10.2004
    Ort
    ferd. Waldmüllerg. 7/2
    Alter
    39
    Beiträge
    456
    Wie T.J. sagt, ohne genauere Angaben können wir nur Raten und die Glaskugel befragen.

    Aber um mal einige Fehlerquellen zu nennen, wieso ein Port-Eingang nicht funktionieren kann:
    -) AD-Wadler: wenn der Chip so etwas hat, sicher, dass du ihn von Port A abgeschalten hast?
    -) Comparator: betrifft, wenn ich mich so aus dem Stegreif erinnere nur den Port B, aber den schau an, weil normalerweise ist der beim Reset eingeschalten

    Schau mal im Datenblatt auf der Übersicht, welcher Pin mit welchen Funktionen gemultiplext ist und dann beim betreffenden Kapitle, ob dieser auf abgeschalten UND von den Pins getrett ist (zB Comparator oder AD-Wandler sind ausgeschaltet, aber an die Pins "angeschlossen").
    MfG
    Mobius

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    23.08.2005
    Ort
    rlp
    Alter
    35
    Beiträge
    68
    Hallo,

    also, wenn meine Vermutung richtig ist, hast du das Velleman Board K8048? Wenn ja, dann ist da ja schon Software dabei, hast du die Beispielprogramme mal angeschaut?
    Kann sein das, das jetzt nicht das ist was du wissen willst, aber wenn du einen einzelnen Taster abfragen willst, musst du das mit dem Befehl:

    btfsc oder btfss,

    hier testest du ein bit in einem bestimmten Register und die nächste Programmzeile wird übersprungen, wenn das bit gesetzt/gelöscht ist:

    btfsc: bit test f skip if clear

    btfss: bit test f skip if set

    bsp.: btfsc porta,00
    goto Taster1_gedrückt
    .....

    im Beipielprogramm des Boards, findest du diese Abfrage inder delay_routine, die aus 2 Schleifen besteht, um eine Pause zu erzeugen.
    Allerdings ist hier die Portnummer durch sw1,sw2,... festgelegt.
    Weiterhin ist dann noch wichtig, dass du die betroffenen I/O Ports, im trisregister vorherdefinierst, als ein-oder ausgang. Am besten du übernimmst den gesamten Kopf des beispielprogramms und beginnst nach dem reset-Teil dein eigenes. Dann hast du schon die ganze config usw....

    Hoffe ich habe dir geholfen, ich hab auch mal mit diesem Board angefangen.....

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.03.2006
    Ort
    WOB
    Beiträge
    630
    vllt. hat er auch vergessen den MCLR auf VDD zu ziehen.
    Gruß Thomas \/

    Alles über AVR, PIC und CAN
    blog.cc-robotics.de

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    20.03.2007
    Beiträge
    9
    Jep, ich hab das Velleman Board K8048.
    Drauf der mitgelieferte 16F627
    Hier mal mein Code den ich versucht habe aus der mitgelieferten Demo2.asm abzuleiten.
    Code:
        ;list p=16f627               ;der Prozessortyp wird festgelegt
        include "P16F627.INC"        ;die include-Datei mit vielen Festlegungen wird geladen
                                    ;z.B. sind hier Standardnamen für wichtige
                                    ;Register und Bits festgelegt
    	__CONFIG        _BODEN_ON & _CP_OFF & _DATA_CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _XT_OSC
    
    
    
    
    
    ;hier steht das eigentliche Hauptprogramm
    
    Init
    
    	bsf     STATUS, RP0     
    	movlw   B'00000000'     
    	movwf   TRISB
    	movlw   B'11111111';
    	movwf   TRISA
    	movlw   B'00000000';
    	movwf	OPTION_REG
    	bcf     STATUS, RP0     
    	clrf	PORTA
    	clrf	PORTB
    
    
      
    Main
    	btfsc	PORTA,0
    	bsf	PORTB,0
    	goto Main2
    	
    Main2
    	goto Main
    
    	
        end                         ;das Ende des Programms

  7. #7
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.12.2005
    Ort
    Euskirchen-Großbüllesheim
    Alter
    74
    Beiträge
    2.063
    Bei der Initialisierung setzt Du bei PortB alle Ausgänge auf 0.
    In Main setzt Du bei PortA.0 = 1 den PortB.0 auf 1; wo setzt Du diesen Ausgang wieder auf 0, wenn PortA.0 = 0 wird ?
    MfG Karl-Heinz
    HobbyElektronik hier klicken ....

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.03.2006
    Ort
    WOB
    Beiträge
    630
    ich glaub das proggi ist noch verbesserungswürdig *g*

    sitzt aber grad inner anderen Vorlesung
    Gruß Thomas \/

    Alles über AVR, PIC und CAN
    blog.cc-robotics.de

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    20.03.2007
    Beiträge
    9
    is schon klar das der port net wieder ausgeht wenn ich die Taste wieder loslass. Der Punkt is, der Port geht erst gar nicht an, aber das sollte er doch wohl, oder nicht?

  10. #10
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.12.2005
    Ort
    Euskirchen-Großbüllesheim
    Alter
    74
    Beiträge
    2.063
    Da hast Du natürlich Recht, die LED sollte erst mal angehen.
    Wenn der PIC Analog-Wandler hat, dann sind die I/Os von Port A nach dem Einschalten und nach jedem Reset Analog-Eingänge !
    Du mußt im Register ADCON1 die gewünschten Pins von Port A als Digital-I/Os initialisieren. Das ist eine böse Stolperfalle.
    Und an den Tastern die PullUp-Widerstände nicht vergessen.
    MfG Karl-Heinz
    HobbyElektronik hier klicken ....

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test