Hey, es ist bestimmt einfacher realisierbar aber hab mich wegen verscheidster Gründe so entscheiden. Bin bisschen ausführlich geworden.. also das Problem ist folgendes ... es liegt mal wieder an der programmierung. Das Gesammtprojekt beinhaltet ein Raspberry Pi und eine Platine die ich selber entworfen hab (im Anhang). Der Sinn ist es das ich über eine APP --> Raspberry Pi --> "meine Platine" --> Alle Lampen im Haus steuern. Vom Raspberry Pi bekomm ich eine 5 bit anweisung (vom port vom Rasberry z.B GP IO 0-4)und der Pic soll mir das Signal aufschlüsselt und 16,deshalb benutze ich zwei PIC 16f84a, verscheidene Relais zu schalten. Zusätzlich sind noch Taster vorhanden, um die Ausgänge nicht nur vom Raspberry Pi zu Steuern. Außerdem bekommt der Raspberry Pi noch ein 3 Bit Code zurück, um zu erkennen welcher Taster benutzt wurde. Ziel ist die Hauslichter mit einer APP zu steuern und das die APP weiß welche schon leuten (durch Taster aktiviert). Die APP und das Programm für den Raspberry Pi hab ich schon. Also eine Wahrheitstabelle, die bei code (z.B 00101) mir sagt Lampe 1 soll leuchten etc.) ist vorhanden. Meine Frage Ich benutze MPLAP X IDE v2.05 als Oberfläche zum Programmieren. Wollte PortA (RA0,RA1,RA2,RA3,RA4) als Eingang PortB (RB0...RB7) benutzen Wie deklrier ich PA4 als eingang ?? und wie müss der "Head" aussehen das ich die Ports so bekomme und wie sehen dann die if anweisungen aus das ich die Pins abfragen kann wenn.... Es ist kein stehendes Signal nur quasi ein "implus" normal ist 00000 wenn jetzt 1x app benutzen (button Lampe 1)--> Raspberry Pi --> code ( 00001) --> eignen platine --> Lampe 1 leutet. geht das Signal wieder auf 00000. Jetzt soll die Lampe solange leuchten bis das bitmuster nochmal kommt. habs schon mit probiert aber iwie gibs massig syntax fehler while (PIN_B0_LOW) { if (!input PIN_A0 & !PIN_A1 & !PIN_A2 & !PIN_A3 & !PIN_A4) { output_HIGH(PIN_B0); } } while (PIN_B0_HIGH) { if (!input PIN_A0 & !PIN_A1 & !PIN_A2 & !PIN_A3 & !PIN_A4) { output_LOW(PIN_B0; } } etc.. kann mir einer mal ein kleines programm schrieben das ich das Muster sehe wie ich das zu machen hab ? ist dann ja auf die anderen Bitmuster zu übertragen. Vielen Dank schonmal .. sry das es so viel text wurde ;) mfg Töne
Töne schrieb: > Platine die ich > selber entworfen hab (im Anhang). Hast du auch einen Schaltplan, den du anhängen kannst? Töne schrieb: > Wie deklrier ich PA4 als eingang ?? Über das TRISA Register Töne schrieb: > while (PIN_B0_LOW) Hast du aus Versehen das AVR Tutorial durchgearbeitet? Bein PIC heiß das PINx Register PORTx. Die while sollte dann so aussehen;
1 | while(~PORTBbits.RB0) |
Töne schrieb: > output_HIGH(PIN_B0); Das sollte so Aussehen:
1 | PORTBbits.RB0=1; |
Edit: Wie wär’s mit dem kompletten Quellcode? Wie ist "output_HIGH()", "input", "PIN_A0",... definiert? Falls du dein gesamtes Wissen in den Code gesteckt hast würde ich dringend ein PIC C Tutorial empfehlen: http://pic-projekte.de/wordpress/?p=133#comments
:
Bearbeitet durch User
Nur so als Tip, ohne auf deine eigentlichen Fragen einzugehen: Wir schreiben das Jahr 2014. Da sollte man keinen 16F84(A) mehr einsetzen, der ist zwar noch lieferbar aber viel zu teuer weil 1/2 Fußballfeld grosses Silizium. Im selben Gehäuse (18P) bekommt man einiges neuers Bauteile wie PIC18F1320 oder PIC16F1827. Gruss
Erich schrieb: > Wir schreiben das Jahr 2014. > Da sollte man keinen 16F84(A) mehr einsetzen, Wenn man noch einen Sack voll aus den '90ern hat...
hinz schrieb: > Wenn man noch einen Sack voll aus den '90ern hat... Nach dem Eröffnungspost würde ich sagen, dass der TO erst 2014 mit dem PIC Programmieren angefangen hat.
:
Bearbeitet durch User
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.