Hallo allerseits, ich ich von meinem Ausbilder eine Unmenge an PIC18F2550 und PIC16F877 bekommen und würde die gerne in C programmieren. Jetzt hab ich die Frage, wo ich die Adressen für die Ports herbekomme. Ich hab schon gegoogelt und seitenweise Datenblätter durchforstet, aber nix brauchbares gefunden. Kann ich in meinem C-Programm einfach schreiben RD7 oder RA3, oder muss ich den Hex-Wert vom Port angeben, welche ich nicht finden konnte? danke schonmal für die Hilfe lg Synthron PS: als Programmierumgebung benutz ich aus Gewohnheit Notepad++ und Ride6
Also unter Ride6 finde ich nur irgendwelche Schuhe. Ich würde dir MPLAB X und den XC8 Compiler empfehlen. Ist beides kostenlos. Die Ports kann man folgendermassen adressieren:
1 | LATBbits.LATB5 |
ah cool, danke. Und die anderen wären zum Beispiel LATAbits.LATA4 ?
Synthron schrieb: > Und die anderen wären zum Beispiel LATAbits.LATA4? Mehr oder weniger alle Bits können so adressiert werden. Wenn der XC8 installiert ist, dann mal im Verzeichnis ../xc8/v3.xy/include/ den entsprechenden Header öffnen. Der wird (über tausend Ecken) über #include <xc.h> eingebunden und da sind dann alle Register und Bits deklariert. stefan schrieb: > LatA.4 sollte auch gehen. Hab ich noch nie gesehen. Welcher Compiler?
:
Bearbeitet durch User
Synthron schrieb: > Ich hab schon > gegoogelt und seitenweise Datenblätter durchforstet, aber nix > brauchbares gefunden. http://pic-projekte.de/wordpress/?p=133#Speziell_fur_PIC bitte sehr... eigentlich hilft die ganze Seite zum Einstieg. Allerdings gibt es auch hier im Forum links bei den Artikeln ausreichend Beispielcode. mfg
:
Bearbeitet durch User
Danke schonmal alle für die Hilfe, ich hab neulich bei nem Kumpel gesehen, dass er seine Ports als ganzen Port ansteuert mit sbit at P2 kann man so auch ansteuern und wenn ja, ist das Compilerabhängig?
Vielleicht hat er dem Port einen Namen gegeben. Oder war eine andere µC Familie.
Synthron schrieb: > und wenn ja, ist das Compilerabhängig? Bestimmt ;-) http://download.mikroe.com/documents/compilers/mikroc/pic/help/accessing_individual_bits.htm
Moin moin, ich hab jetzt mal angefangen ein Testprogramm für den PIC16F876 zu schreiben und die Ausgabe an einem Pin funktioniert einwandfrei. Allerdings hab ich jetzt schon Probleme mit dem Lesen eines Ports. Weder über LATABits.RA2 noch über RA2 direkt funktionierts. folgend mal der Quellcode auf Pastebin. Da relativer Anfänger im Programmieren bin, nehm ich auch gerne konstruktive Kritik entgegen ;) http://pastebin.com/qZWUjEyx
btw: Programmierumgebung MPLAB X IDE mit XC8-Compiler, Programmiergerät: selbstgebautes PICKit2
Schreiben LATAbits.LATA2 Lesen. PORTAbits.PORTA2
:
Bearbeitet durch User
Scahu mal ins Datenblatt und schau mal ob die Ports auf Digital gesetzt werden müßen. Weis jetzt nicht wo die beim anschalten jetzt liegen.
Volker S. schrieb: > Schreiben LATAbits.LATA2 Sorry, der PIC16 hat vermutlich gar kein LATch. Stefan schrieb: > Scahu mal ins Datenblatt Eigentlich immer die schnellste Methode ;-)
Ja müßen umgeschaltet werden. Gerade selber gefunden. Dafür ist das ADCON1 Register zuständig.
alles klar, und wie genau schalt ich die dann auf Digital?
fubktioniert das auf diese Weise? ; ADC einschalten BSF ADCON0, 1 ; ADON=0
Im ADCON1 Register das entsprechende Bit setzen. Z.B. ADCON1.xxxx = 1 Sollte gehen. Für xxx das entsprechende Register setzen.
ja, das hab ich nach posten auch gemerkt, dass es Assembler ist... hier hab ich was gefunden: ADCON1 = 0b00001111;//configuring all analog port to digital sollte so eig auch funktionieren, oder?
Ja wie du den Wet schreibst ist dir überlassen. Ob Binär, Hexadezimal oder Dezimal. Hauptsache du weist welche Register du gesetzt hast. Nach meiner Methode siehst du direkt welches Register gesetzt wurde. Aber kann man machen wie man will.
Synthron schrieb: > Unmenge an PIC18F2550 und PIC16F877 bekommen Hallo Synthron, würdest Du welche gegen Geld abgeben? Gruss Chregu
alles klar, vielen Dank! ich hab jetzt mal versucht, das Datenblatt zu verstehen und hab rausgefunden, dass über ADCON1 = 0x06 alle Analogpins digital geschalten werden. jetzt funktionierts auch wie geplant.
Hallo chregu, auch wenns privat für mich relativ viele sind (Unmenge war etwas übertrieben, aber es sind dennoch reichlich. Momentan noch unbenutzt 34 877er und 45 2550er), allerdings ging diese Abgabe mit der Bedingung mit, dass ich sie nicht verkaufen darf, da diese noch offiziell über meine Firma laufen. Außerdem hab ich noch einige größere Projekte mit den PICs vor, weshalb ich noch nicht weiß, wie viele davon am Ende übrig bleiben. Unter anderem geplant sind noch eine Gewächhaussteuerung, weil mein AVR bei den Umgebungen versagt, da sind PICs etwas stabiler was Feuchtigkeit anbelangt (hab ich so schon getestet), sowie Binäruhren, Quadkopter, diverse kleine Automatisierungen und eine Lichtorgel für mein 3D-Drucker etc pepe. nach meiner Kalkulation bleiben nach all dem noch knapp 8-10 je Sorte über, aber wer weiß was mir noch spontan alles einfällt ;) Also zusammengefasst: aus moralischen und privaten Gründen muss ich leider nein sagen.
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.