hi leute ich hab da mal ne frage kann mir einer von euch sagen wie ich bei pics das mache das der bei einer reihenfolge von bits einen bestimmt raussucht um dann bei einem bestimmten etwas zu starten denn ich hab voll kein plan bin schon depri durch das bitte helft mir ich bin für alles dankbar
Du müsstest schon genauere Angaben machen .... Was ist das für ein Signal... Frequenz ? Was soll passieren, etc. MfG formtapez
Bei PIC´s könnte ich dir www.Sprut.de empfehlen. Aber der Weg zu deinem Problem könnte Maskierung heissen. Lege eine Maske über deine Reihenfolge von Bits und verknüpfe sie mit Logisch UND. Bsp.: Es interessiert dich ob Bit 3 gesetzt ist Deine Bits : 0110 0101 Maske : 0000 0100 UND-Verknüpfung :----------- Ergebnis : 0000 0100 Wäre Bit 3 NULL gewesen, dann auch das Verknüpfungsergebnis. Ich hoffe das hilft weiter.
Hallo! Hab zwar keine Ahnung vom PIC-Befehlssatz (sondern nur 8051), aber wenn du nicht nur 1 bit überprüfen willst, sondern die komplette bit-Folge (sagen wir mal 8bit), würd ich sie nacheinander in ein Byte einlesen und anschließen mit der bit-Folge xor-verknüpfen, bei der etwas passieren soll. Ist das Ergebnis der Verknüpfung =0, so stimmen die Folgen überein. Willst du aus einem kontinuierlichen bit-Strom eine Folge raussuchen, kannst du die (z.B.) 8 bits einfach durch das Byte shiften... Wäre mein Ansatz... Keine Übereinstimmung: ist: 0100 1101 soll:0001 1110 -------------- xor: 0101 0011 Übereinstimmung: ist: 0100 1101 soll:0100 1101 -------------- xor: 0000 0000 mfg Reinhard
danke das hilft schon weiter wenn noch was ist dann schreib ich hier noch was rein danke erstmal für das
hi hab hier einen code ist der soweit richtig dieser Code soll erstens die ports initialisieren und am schluss einen timer unter RA4 starten der bei allen lows hochzählt list p=16F84A ; list directive to define processor #include <p16F84A.inc> ; processor specific variable definitions __CONFIG _CP_OFF & _WDT_ON & _PWRTE_ON & _RC_OSC ; '__CONFIG' directive is used to embed configuration data within .asm file. ; The lables following the directive are located in the respective .inc file. ; See respective data sheet for additional information on configuration word. ;***** VARIABLE DEFINITIONS w_temp EQU 0x0C ; variable used for context saving status_temp EQU 0x0D ; variable used for context saving w_copy Equ 0x20 ; Backup für Akkuregister s_copy Equ 0x21 ; Backup für Statusregister ;********************************************************************** ORG 0x000 ; processor reset vector goto main ; go to beginning of program ORG 0x004 ; interrupt vector location movwf w_temp ; save off current W register contents movf STATUS,w ; move status register into W register movwf status_temp ; save off contents of STATUS register ; isr code can go here or be located as a call subroutine elsewhere movf status_temp,w ; retrieve copy of STATUS register movwf STATUS ; restore pre-isr STATUS register contents swapf w_temp,f swapf w_temp,w ; restore pre-isr W register contents retfie ; return from interrupt main ;***************************************************** ;* hier werden die einzelnen Ein-/Ausgänge und * ;* die Bänke 0/1 initialisiert * ;***************************************************** ;************************* ;* Bank Write Verify * ;************************* BCF STATUS, RP0 ; Bank 0 ; ; hier kann irgendein ; ; Code rein MOVF EEDATA, W ; muss in Bank 0 sein BSF STATUS, RP0 ; Bank 1 Read BSF EECON1, RD ; Ja, lies den Inhalt von Write BCF STATUS, RP0 ; Bank 0 SUBWF EEDATA, W ; BTFSS STATUS, Z ; ist ein unterschied 0? ;GOTO Write_ERR ; No, schreib Error ;************* ;* PortA * ;************* BCF STATUS, RP0 ; CLRF PORTA ; Initialisierung von PortA ; durch löschen des Data latches BSF STATUS, RP0 ; Markiere Bank 1 MOVLW 0x0F ; nutzen für den DatenVerzeichniss MOVWF TRISA ; SET RA<3:0> als Input ; SET RA4 als Output ;************* ;* PortB * ;************* BCF STATUS, RP0 ; CLRF PORTB ; Initialisierung von PortA ; durch löschen des Data latches BSF STATUS, RP0 ; Markiere Bank 1 MOVLW 0xCF ; nutzen für den DatenVerzeichniss MOVWF TRISB ; SET RA<3:0> als Input ; SET RB<5:4> als Output ; SET RB<7:6> als Output ;***************************************************** ;* hiermit wird der Timer0 mit dem RA4 verbunden * ;* es wird der eigene Takt verwendet und nich * ;* der PIC-Takt * ;***************************************************** BSF T0CS, 1 ; hier wird in der Speicherzelle T0SC die 1 gesetzt MOVF T0CS, 1 ; nun wird es unter der Speicherzelle gesichert ;***************************************************** ;* hier drunter wird die Low-Flanke ausgewählt * ;* für RA4, damit er weiss wo er hochzählen soll * ;***************************************************** BSF T0SE, 0 ; hier wird für RA4 die Low Flake gewählt MOVF T0SE, 1 ; hier wird es unter der Speicherzelle gesichert ;***************************************************** ;* hier drunter wird nun der Inhalt des gezählten * ;* gesichert in dem Register TMR0 * ;***************************************************** MOVWF T0SE ; hier wird nun das Register auf die Speicherzelle geschrieben MOVF TMR0, 0 ; das ist das Timer-Register ;***************************************************** ;* hier soll nun eine Überprüfung stattfinden * ;***************************************************** END also das was von eurer seite noch cool wäre wenn ihr mir irgendwie erklärt wir man nun macht das einen bestimmten raus sucht und da dann anfängt mit etwas anderem danke im vorraus
Warum legst du denn dein Signal nicht auf den Interrupt-Pin, wenn ich mich recht entsinne war das RB0. Da kannst du dann dein "was-auch-immer" in der ISR ausführen bzw. starten. Gruß Oliver
und wozu benötige ich den interrupt? ich kann doch den timer oder so auch ohne interrupt machen oder geht das einfacher mit interrupt?
hmm das was ich mich am meisten frage ist: Wie mach ich das, das er bei den bits zählt, wieviele ms er braucht zum nächsten bit? also das ist mein größtest problem, da ich keine ahnung von assembler hab. ich hab bisher mit c gearbeitet und habe keine pics programmiert sondern kleine witzige spiele. und nun assembler WIE GEHT DAS RICHTIG? mit 0 und 1 alles machen das ist für mich ne neue welt!! BITTE HELFT MIR meine Aufgabe zu lösen.
Vielleicht könntest Du uns mal sagen, was Du eigentlich genau willst, also ein bisschen drumrum, dann fällt uns auch was dazu ein. Woher kommt das Signal, welche Frequenz, welches Bit soll gezaehlt / geprüft werden, was soll dann gemacht werden.
also es gibt 4 bereiche und alle 8bit lang Sync wo die zeit bei den bits 2ms sind DByte wo es bits mit 1ms und 0,5ms gibt Flags wo es bits mit 1ms und 0,5ms gibt CHK wo es bits mit 1ms und 0,5ms gibt so und wenn man das geräte aktiviert soll man solange warten bis er sync erkannt hat und dann erst anfangen das was ich machen soll ist ein Pedalkraftmesser der noch zusätzlich druck misst und das soll über funk übertragen werden und das soll auch empfangen werden
weisst du vielleicht wie man zwischen den einzelnen Bänken eines PIC hin und her wechseln kann? wäre dir sehr dankbar :-)
sorry himbi ich hab selbst keine ahnung und probleme diese einzelnen dinge zu erstellen und www.sprut.de hat mich nich gerade weit gebracht einige dinge davon haben mich eher verwirrt naja sorry das ich dir nich helfen kann
d.stolarek das problem ist so zu lösen du musst vor die register &0x7f das hier setzten da in der inc datei 8bit gesetzt sind und bei dem pic nur 7bit gehen^_^
toll wegen dir wollen mich die leute aus dem pic microcontroller rauswerfen warum hast du da bloß scheisse gebaut und mach bei der signatur mein zeug wieder weg ich will keinen ärger mit denen da haben ich bin hilflos ohne hilfe als anfänger gehts nich leicht vorran
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.