- 3D-Druck Einstieg und Tipps         
Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 18

Thema: PIC16F690 Hilfe

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    25.09.2009
    Beiträge
    16

    PIC16F690 Hilfe

    Anzeige

    Praxistest und DIY Projekte
    Hallo,
    ich habe ein PICKit2 mit dem dazugehörigen Demoboard gekauft. Auf dem Board ist ein PIC16F690. Ich beherrsche die Programmiersprache leider nicht und benutze deshalb Flowcode4 um Programme zu erstellen.
    Ich habe versucht eine LED für 3sek brennen zulassen und dann wieder 3sek ausgeschaltete zu lassen, aber leider brennt die LED kontinuierlich und geht nicht nach 3sek aus. Scheinbar wird der Delay gar nicht berücksichtigt. Kann mir jemand helfen dabei?
    MfG

  2. #2
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    72
    Beiträge
    11.077
    Hallo!

    Möglicherweise der Wiki-Artikel: http://www.rn-wissen.de/index.php/PI...erste_Programm .
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    25.09.2009
    Beiträge
    16
    Hab mir den Artikel mal durchgelesen. Leider hilft mir das nicht.
    Scheinbar springt das Programm nicht zum nächsten Punkt und bleibt immer am ersten Punkt hängen.

  4. #4
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    72
    Beiträge
    11.077
    Dann müsstest du Zeitverläufe deiner Programme vom Anfang an richtig erlernen versuchen: http://www.rn-wissen.de/index.php/PI...ramm_.28PAD.29 .
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    25.09.2009
    Beiträge
    16
    Ich das denn auch nötig wenn ich mit Flowcode arbeite?
    Das gibt mir ja den fertigen Code schon aus.

  6. #6
    Erfahrener Benutzer Lebende Robotik Legende Avatar von PICture
    Registriert seit
    10.10.2005
    Ort
    Freyung bei Passau in Bayern
    Alter
    72
    Beiträge
    11.077
    K.A., weil ich Flowcode gar nicht kenne.
    MfG (Mit feinem Grübeln) Wir unterstützen dich bei deinen Projekten, aber wir entwickeln sie nicht für dich. (radbruch) "Irgendwas" geht "irgendwie" immer...(Rabenauge) Machs - und berichte.(oberallgeier) Man weißt wie, aber nie warum. Gut zu wissen, was man nicht weiß. Zuerst messen, danach fragen. Was heute geht, wurde gestern gebastelt. http://www.youtube.com/watch?v=qOAnVO3y2u8 Danke!

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    25.09.2009
    Beiträge
    16
    Gibt es niemanden der sich mit flowcode befasst hat? Kann es ein Fehler im PIC sein?

  8. #8
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    02.09.2009
    Ort
    Berlin (Mariendorf)
    Beiträge
    1.023
    Zitat Zitat von Thomas1701 Beitrag anzeigen
    Kann es ein Fehler im PIC sein?
    KANN schon sein, ist aber bei mir noch NIE die Ursache gewesen. Es waren stets Programmfehler, auch wenn ich es nicht glauben wollte und schon manches Mal den Chip ausgetauscht und programmiert hatte - (natürlich) ohne Besserung.

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    25.09.2009
    Beiträge
    16
    Ich habe den PIC jetzt gewechselt aber wie schon gesagt wurde ist dies nicht der Fehler. Es muss ein Fehler im Programm sein, das von Flowcode erzeugt wird. Das Testprogramm von Microchip funktioniert einwandfrei.
    Der Port C1 schaltet ein und nach 1sek wieder aus und nach wieder einer Sekunde ist das Programm fertig.
    Kann hieraus vielleicht jemand den Fehler im delay erkennen?
    Code:
        include "P16F690.inc"
    ; Heap block 0, size:95 (0x000000A0 - 0x000000FE)
    __HEAP_BLOCK0_BANK               EQU    0x00000001
    __HEAP_BLOCK0_START_OFFSET       EQU    0x00000020
    __HEAP_BLOCK0_END_OFFSET         EQU    0x0000007E
    ; Heap block 1, size:80 (0x00000120 - 0x0000016F)
    __HEAP_BLOCK1_BANK               EQU    0x00000002
    __HEAP_BLOCK1_START_OFFSET       EQU    0x00000020
    __HEAP_BLOCK1_END_OFFSET         EQU    0x0000006F
    ; Heap block 2, size:44 (0x00000044 - 0x0000006F)
    __HEAP_BLOCK2_BANK               EQU    0x00000000
    __HEAP_BLOCK2_START_OFFSET       EQU    0x00000044
    __HEAP_BLOCK2_END_OFFSET         EQU    0x0000006F
    ; Heap block 3, size:0 (0x00000000 - 0x00000000)
    __HEAP_BLOCK3_BANK               EQU    0x00000000
    __HEAP_BLOCK3_START_OFFSET       EQU    0x00000000
    __HEAP_BLOCK3_END_OFFSET         EQU    0x00000000
    gbl_status                       EQU    0x00000003 ; bytes:1
    gbl_16_LSR                       EQU    0x00000020 ; bytes:4
    gbl_float_detect_tininess        EQU    0x00000039 ; bytes:1
    gbl_float_rounding_mode          EQU    0x0000003A ; bytes:1
    gbl_float_exception_flags        EQU    0x0000003B ; bytes:1
    gbl_17_gbl_aSig                  EQU    0x00000024 ; bytes:4
    gbl_17_gbl_bSig                  EQU    0x00000028 ; bytes:4
    gbl_17_gbl_zSig                  EQU    0x0000002C ; bytes:4
    gbl_17_gbl_aExp                  EQU    0x0000003C ; bytes:1
    gbl_17_gbl_bExp                  EQU    0x0000003D ; bytes:1
    gbl_17_gbl_zExp                  EQU    0x00000037 ; bytes:2
    gbl_17_gbl_aSign                 EQU    0x0000003E ; bytes:1
    gbl_17_gbl_bSign                 EQU    0x0000003F ; bytes:1
    gbl_17_gbl_zSign                 EQU    0x00000040 ; bytes:1
    gbl_17_gbl_zSigZero              EQU    0x00000041 ; bytes:1
    gbl_17_gbl_ret                   EQU    0x00000030 ; bytes:4
    gbl_indf                         EQU    0x00000000 ; bytes:1
    gbl_tmr0                         EQU    0x00000001 ; bytes:1
    gbl_pcl                          EQU    0x00000002 ; bytes:1
    gbl_fsr                          EQU    0x00000004 ; bytes:1
    gbl_porta                        EQU    0x00000005 ; bytes:1
    gbl_portb                        EQU    0x00000006 ; bytes:1
    gbl_portc                        EQU    0x00000007 ; bytes:1
    gbl_pclath                       EQU    0x0000000A ; bytes:1
    gbl_intcon                       EQU    0x0000000B ; bytes:1
    gbl_pir1                         EQU    0x0000000C ; bytes:1
    gbl_pir2                         EQU    0x0000000D ; bytes:1
    gbl_tmr1l                        EQU    0x0000000E ; bytes:1
    gbl_tmr1h                        EQU    0x0000000F ; bytes:1
    gbl_t1con                        EQU    0x00000010 ; bytes:1
    gbl_tmr2                         EQU    0x00000011 ; bytes:1
    gbl_t2con                        EQU    0x00000012 ; bytes:1
    gbl_sspbuf                       EQU    0x00000013 ; bytes:1
    gbl_sspcon                       EQU    0x00000014 ; bytes:1
    gbl_ccpr1l                       EQU    0x00000015 ; bytes:1
    gbl_ccpr1h                       EQU    0x00000016 ; bytes:1
    gbl_ccp1con                      EQU    0x00000017 ; bytes:1
    gbl_rcsta                        EQU    0x00000018 ; bytes:1
    gbl_txreg                        EQU    0x00000019 ; bytes:1
    gbl_rcreg                        EQU    0x0000001A ; bytes:1
    gbl_pwm1con                      EQU    0x0000001C ; bytes:1
    gbl_eccpas                       EQU    0x0000001D ; bytes:1
    gbl_adresh                       EQU    0x0000001E ; bytes:1
    gbl_adcon0                       EQU    0x0000001F ; bytes:1
    gbl_option_reg                   EQU    0x00000081 ; bytes:1
    gbl_trisa                        EQU    0x00000085 ; bytes:1
    gbl_trisb                        EQU    0x00000086 ; bytes:1
    gbl_trisc                        EQU    0x00000087 ; bytes:1
    gbl_pie1                         EQU    0x0000008C ; bytes:1
    gbl_pie2                         EQU    0x0000008D ; bytes:1
    gbl_pcon                         EQU    0x0000008E ; bytes:1
    gbl_osccon                       EQU    0x0000008F ; bytes:1
    gbl_osctune                      EQU    0x00000090 ; bytes:1
    gbl_pr2                          EQU    0x00000092 ; bytes:1
    gbl_sspadd                       EQU    0x00000093 ; bytes:1
    gbl_msk                          EQU    0x00000093 ; bytes:1
    gbl_sspmsk                       EQU    0x00000093 ; bytes:1
    gbl_sspstat                      EQU    0x00000094 ; bytes:1
    gbl_wpu                          EQU    0x00000095 ; bytes:1
    gbl_wpua                         EQU    0x00000095 ; bytes:1
    gbl_ioc                          EQU    0x00000096 ; bytes:1
    gbl_ioca                         EQU    0x00000096 ; bytes:1
    gbl_wdtcon                       EQU    0x00000097 ; bytes:1
    gbl_txsta                        EQU    0x00000098 ; bytes:1
    gbl_spbrg                        EQU    0x00000099 ; bytes:1
    gbl_spbrgh                       EQU    0x0000009A ; bytes:1
    gbl_baudctl                      EQU    0x0000009B ; bytes:1
    gbl_adresl                       EQU    0x0000009E ; bytes:1
    gbl_adcon1                       EQU    0x0000009F ; bytes:1
    gbl_eedata                       EQU    0x0000010C ; bytes:1
    gbl_eeadr                        EQU    0x0000010D ; bytes:1
    gbl_eedath                       EQU    0x0000010E ; bytes:1
    gbl_eeadrh                       EQU    0x0000010F ; bytes:1
    gbl_wpub                         EQU    0x00000115 ; bytes:1
    gbl_iocb                         EQU    0x00000116 ; bytes:1
    gbl_vrcon                        EQU    0x00000118 ; bytes:1
    gbl_cm1con0                      EQU    0x00000119 ; bytes:1
    gbl_cm2con0                      EQU    0x0000011A ; bytes:1
    gbl_cm2con1                      EQU    0x0000011B ; bytes:1
    gbl_ansel                        EQU    0x0000011E ; bytes:1
    gbl_anselh                       EQU    0x0000011F ; bytes:1
    gbl_eecon1                       EQU    0x0000018C ; bytes:1
    gbl_eecon2                       EQU    0x0000018D ; bytes:1
    gbl_pstrcon                      EQU    0x0000019D ; bytes:1
    gbl_srcon                        EQU    0x0000019E ; bytes:1
    CompTempVar2201                  EQU    0x00000042 ; bytes:1
    delay_ms_00000_arg_del           EQU    0x00000043 ; bytes:1
    delay_s_00000_arg_del            EQU    0x00000042 ; bytes:1
    Int1Context                      EQU    0x0000007F ; bytes:1
    Int1BContext                     EQU    0x00000034 ; bytes:3
        ORG 0x00000000
        GOTO    _startup
        ORG 0x00000004
        MOVWF Int1Context
        SWAPF STATUS, W
        BCF STATUS, RP0
        BCF STATUS, RP1
        MOVWF Int1BContext
        SWAPF PCLATH, W
        MOVWF Int1BContext+D'1'
        SWAPF FSR, W
        MOVWF Int1BContext+D'2'
        BCF PCLATH,3
        BCF PCLATH,4
        GOTO    interrupt
        ORG 0x00000010
    delay_ms_00000
    ; { delay_ms ; function begin
        MOVF delay_ms_00000_arg_del, F
        BTFSS STATUS,Z
        GOTO    label1
        RETURN
    label1
        MOVLW 0xF5
    label2
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        ADDLW 0xFF
        BTFSS STATUS,Z
        GOTO    label2
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        NOP
        DECFSZ delay_ms_00000_arg_del, F
        GOTO    label1
        RETURN
    ; } delay_ms function end
    
        ORG 0x00000038
    delay_s_00000
    ; { delay_s ; function begin
    label3
        MOVLW 0xFA
        MOVWF delay_ms_00000_arg_del
        CALL delay_ms_00000
        MOVLW 0xFA
        MOVWF delay_ms_00000_arg_del
        CALL delay_ms_00000
        MOVLW 0xFA
        MOVWF delay_ms_00000_arg_del
        CALL delay_ms_00000
        MOVLW 0xFA
        MOVWF delay_ms_00000_arg_del
        CALL delay_ms_00000
        DECFSZ delay_s_00000_arg_del, F
        GOTO    label3
        RETURN
    ; } delay_s function end
    
        ORG 0x00000047
    main
    ; { main ; function begin
        BCF STATUS, RP0
        BSF STATUS, RP1
        CLRF gbl_ansel
        CLRF gbl_anselh
        MOVLW 0xC0
        BSF STATUS, RP0
        BCF STATUS, RP1
        MOVWF gbl_option_reg
    label4
        MOVLW 0xFD
        BSF STATUS, RP0
        ANDWF gbl_trisc, W
        MOVWF gbl_trisc
        MOVLW 0xFD
        BCF STATUS, RP0
        ANDWF gbl_portc, W
        MOVWF CompTempVar2201
        MOVLW 0x02
        IORWF CompTempVar2201, W
        MOVWF gbl_portc
        MOVLW 0x01
        MOVWF delay_s_00000_arg_del
        CALL delay_s_00000
        MOVLW 0xFD
        BSF STATUS, RP0
        ANDWF gbl_trisc, W
        MOVWF gbl_trisc
        MOVLW 0xFD
        BCF STATUS, RP0
        ANDWF gbl_portc, W
        MOVWF gbl_portc
        MOVLW 0x01
        MOVWF delay_s_00000_arg_del
        CALL delay_s_00000
        GOTO    label4
    ; } main function end
    
        ORG 0x00000069
    _startup
        MOVLW 0xD5
        BCF STATUS, RP0
        BCF STATUS, RP1
        MOVWF gbl_16_LSR
        MOVLW 0xC4
        MOVWF gbl_16_LSR+D'1'
        MOVLW 0xBB
        MOVWF gbl_16_LSR+D'2'
        MOVLW 0xDC
        MOVWF gbl_16_LSR+D'3'
        CLRF gbl_17_gbl_aSig
        CLRF gbl_17_gbl_aSig+D'1'
        CLRF gbl_17_gbl_aSig+D'2'
        CLRF gbl_17_gbl_aSig+D'3'
        CLRF gbl_17_gbl_bSig
        CLRF gbl_17_gbl_bSig+D'1'
        CLRF gbl_17_gbl_bSig+D'2'
        CLRF gbl_17_gbl_bSig+D'3'
        CLRF gbl_17_gbl_zSig
        CLRF gbl_17_gbl_zSig+D'1'
        CLRF gbl_17_gbl_zSig+D'2'
        CLRF gbl_17_gbl_zSig+D'3'
        CLRF gbl_17_gbl_aExp
        CLRF gbl_17_gbl_bExp
        CLRF gbl_17_gbl_zExp
        CLRF gbl_17_gbl_zExp+D'1'
        CLRF gbl_17_gbl_aSign
        CLRF gbl_17_gbl_bSign
        CLRF gbl_17_gbl_zSign
        CLRF gbl_17_gbl_zSigZero
        CLRF gbl_17_gbl_ret
        CLRF gbl_17_gbl_ret+D'1'
        CLRF gbl_17_gbl_ret+D'2'
        CLRF gbl_17_gbl_ret+D'3'
        CLRF gbl_float_rounding_mode
        CLRF gbl_float_exception_flags
        CLRF gbl_float_detect_tininess
        BCF PCLATH,3
        BCF PCLATH,4
        GOTO    main
        ORG 0x00000091
    interrupt
    ; { interrupt ; function begin
        BCF STATUS, RP0
        BCF STATUS, RP1
        SWAPF Int1BContext+D'2', W
        MOVWF FSR
        SWAPF Int1BContext+D'1', W
        MOVWF PCLATH
        SWAPF Int1BContext, W
        MOVWF STATUS
        SWAPF Int1Context, F
        SWAPF Int1Context, W
        RETFIE
    ; } interrupt function end
    
        END

  10. #10
    Erfahrener Benutzer Begeisterter Techniker Avatar von Torrentula
    Registriert seit
    10.10.2009
    Ort
    Procyon A
    Beiträge
    355
    Mit welchem Takt wird der PIC betrieben?
    Bin jetzt nicht ganz so erfahren in Assembler (das ist der code den du im Endeffekt gepostet hast) aber die ganzen NOPs sind dazu da um einfach Taktzyklen zu verschwenden. Mit Hilfe der Taktfrequenz kann man errechnen wie viele NOPs man benötigt, um auf 3 sekunden zu kommen.

    Ich weiß nicht wie viel du dich in Microcontroller einarbeiten möchtest, aber wenn du größere Projekte verwirlklichen willst lohnt es sich, eine 'richtige' Programmiersprache wie Assembler oder C zu erlernen.

    Hier gibt es viele Infos rund um die PICs (speziell auch Assembler): sprut
    MfG Torrentula

Seite 1 von 2 12 LetzteLetzte

Ähnliche Themen

  1. hilfe Anfänger braucht hilfe beim start
    Von thomas3 im Forum Robby RP6
    Antworten: 26
    Letzter Beitrag: 20.09.2010, 21:07
  2. I2C mit PIC16F690
    Von hutschafu im Forum PIC Controller
    Antworten: 1
    Letzter Beitrag: 10.02.2008, 22:19
  3. 24Servos per PWM mit einem Pic16F690 ansteurn
    Von El_Salvador im Forum PIC Controller
    Antworten: 9
    Letzter Beitrag: 04.01.2008, 03:01
  4. Hilfe Hilfe Schnelle es qualmt
    Von Larzarus im Forum Motoren
    Antworten: 32
    Letzter Beitrag: 07.06.2006, 14:04

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress