- Labornetzteil AliExpress         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 16

Thema: Zählen mit PIC? aaaaaaarg!?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    23.02.2004
    Beiträge
    12

    Zählen mit PIC? aaaaaaarg!?

    Anzeige

    LiFePo4 Akku selber bauen - Video
    Hi Leute hab hier ein kleines Problem:




    Ich möchte (um es endlich zu kapieren) mit einem Taster an RA4 und einer LED auf RB0 an
    einem PIC 16F84 einen Zähler bis 10 (mit dem Timer 0) zum laufen bekommen.

    Ich dachte eigentlich, dass ich das mit dem Code hier hinbekomme.
    Aber ich find wohl den Fehler nicht.


    Code:



    list p=16f84
    #include <P16f84.INC>


    ;************************************************* ********
    ; bis 4 MHz: Power on Timer, kein Watchdog, XT-Oscillator*
    __CONFIG _PWRTE_ON & _WDT_OFF & _XT_OSC
    ;************************************************* ********
    Ini_con Equ B'00000000' ; TMR0 -> Intetupt disable
    Ini_opt Equ B'00000010'
    ;************************************************* *********

    Init bsf STATUS, RP0 ; Bank 1
    movlw Ini_opt ; pull-up on
    movwf OPTION_REG
    movlw B'11111000' ; RA0 .. RA2 outputs, RA3, RA4 input
    movwf TRISA ;
    movlw B'00000000' ; PortB alle outputs
    movwf TRISB
    bcf STATUS, RP0 ; Bank 0
    clrf PORTA
    clrf PORTB

    movlw Ini_con ; Interupt disable
    movwf INTCON

    ;************************************************* *********


    bsf STATUS, RP0 ; Bank 1
    bsf OPTION_REG, T0CS; RA4-Takt zum Timer0
    bsf OPTION_REG, PSA ; noch ohne Vorteiler
    bcf STATUS, RP0 ; Bank 0

    main
    bcf INTCON, T0IF
    movlw D'245' <hier versuch ich
    movwf TMR0 <den Zähler ab245
    movlw B'00000000' <zählen zu lassen
    movwf PORTB

    BTFSC INTCON, T0IF
    goto main

    led movlw B'1111111'
    movwf PORTB

    end

    Also wenn von euch einer ne Ahnung hat woran es liegen könnte dann
    bitte gebt mir Bescheid.

    Weitere Infos:

    der Pic liegt (richtig gepolt) an +5V
    ich habe mit dem Oszi meine saubere Schwingung vom Quarz an Osz1
    der Taster ist mit einem Pulldown an RA4 angeschlossen (10k)
    Reset liegt über 1k auf +5V

    Mfg
    Christian

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    20.06.2004
    Beiträge
    256
    Mmhhh,

    dein Taster wird mit Sicherheit prellen. Zählen sollte der Timer aber trotzdem. Nach dem Anschalten der LED "rennt" der PIC aber den Rest des Programmspeichers durch und fängt irgendwann wieder von vorn an und schaltet die LED wieder aus.

    BlackBox

  3. #3
    Gast
    Hi
    also muss ich den Taster mit (z.B.nem Flipflop) entprellen und nochmal testen?
    mfg
    Christian

    PS:
    Dann müsst ich doch eigentlich mitm Oszi zumindest einen Nadelimpuls auf PortB feststellen können wenn ich den Taster mal betätige???

  4. #4
    Hallo,

    also ich sehe folgendes:

    main
    bcf INTCON, T0IF <<<<< hier clearst Du das INT-Flag

    movlw D'245' <hier versuch ich
    movwf TMR0 <den Zähler ab245
    movlw B'00000000' <zählen zu lassen
    movwf PORTB

    BTFSC INTCON, T0IF <<<<< hier wird geskipt
    goto main

    led movlw B'1111111' <<<<< HI ausgeben
    movwf PORTB

    end <<<<<<<<< UND DANN ???????


    Dein Programm läuft also genau einmal und anschliessend befindet sich der PIC im Nirwana. Bei END ist das Programm zu ende. Es wird nicht wieder von vorne gestartet!

    Andreas

  5. #5
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    20.06.2004
    Beiträge
    256
    @Andreas,

    doch, wird es wenn der PC am Ende des Programmspeichers angekommen ist. Sollte man aber nicht machen (hab ich oben doch schon geschrieben).

  6. #6
    Gast
    @BlackBox

    Es ist aber nicht sichergestellt, das der PC am Ende ankommt. Das kommt schliesslich darauf an, was nach dem Programm im Speicher steht. Und das können auch Reste eines alten Programmes sein.

    Andreas

  7. #7
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    20.06.2004
    Beiträge
    256
    @Andreas,

    normalerweise wird der Flash komplett gelöscht, also mit NOPs ausgefüllt.
    Wenn das aber nicht der Fall ist (evtl. bei Eigenbauprogrammern) dann hast Du damit Recht.

  8. #8
    Neuer Benutzer Öfters hier
    Registriert seit
    23.02.2004
    Beiträge
    12
    @Andreas also eins versteh ich jetzt nicht ich habe nochmal nachgemessen
    Es gibt beit betätigung des Tasters (auch wenn er prellt) ja in meinem Programm einen Punkt wo der Ausgang irgendwann hi werden würde
    => Es gibt aber mit dem Oszi keinen einzigen Impuls beim starten des PIC auch nach einem Reset nicht
    => Auch wenn der PIC nur einmal das Programm abarbeitet müsste er ja ein hi an PortB irgendwann bringen

    thx
    Christian

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    23.02.2004
    Beiträge
    12
    Ich mal mal die Beschaltung auf
    Christian

  10. #10
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    20.06.2004
    Beiträge
    256
    Dein OPTION-Register stimmt nicht.

    Der Timer zählt mit internem Takt und Vorteiler 1:4.

    BlackBox

Seite 1 von 2 12 LetzteLetzte

Berechtigungen

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

Solar Speicher und Akkus Tests