Autor |
PIC und C Amfängerfrage Suche nach: pic (2056) |
|
|
|
|
BID = 484812
Herrminator Gelegenheitsposter
Beiträge: 87
|
|
Hallo zusammen,
da ich im C Programmieren recht fit bin würde ich gern meine PICs auch in C Programmieren. Meine Frage nun:
Die C Befehle kenne ich ja aber woher kommen die Befehle die ich benötige um die Pic Funktionen zu nutzen ?
Gruß Tobias |
|
BID = 484814
Jornbyte Moderator
Beiträge: 7178
|
|
*.h?
_________________
mfg Jornbyte
Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten. |
|
BID = 484828
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Moin,
Jornbyte hat das ausgedrückt, was man als C-Programmierer eigentlich auch wissen sollte - genau wie es eine Standard-C-Bibliothekt gibt, gibt es auch gewisse Bibliotheken, die man im Projekt inkludieren kann; und das tut man über die Einbindung der Header, also der *.h-Dateien
Weiterhin lassen sich auch bestimmte Funktionen selbst implementieren, z.b. wirst du nicht für alle Funktionen, die dir ein µC bietet, eine Headerdatei bzw. eine fertige Implementierung finden.
Sowas schreibt man dann selbst, und zwar i.d.r. in einen Header und in eine Quellkodedatei.
Viel Erfolg
_________________
|
BID = 484901
Herrminator Gelegenheitsposter
Beiträge: 87
|
Danke für die schnellen Antworten.
Habe mich glaube ich etwas umständlich ausgedrückt.
Ich dachte an sowas zum Beispiel:
TRISB = 0b.0000.0000;
Woher weiß ich als unwissender, welches Bit für welchen Port ist ?
Gruß
|
BID = 484923
Jornbyte Moderator
Beiträge: 7178
|
Ach sowas meinst du. Dafür hat der Hersteller ein Dtenblatt erfunden
_________________
mfg Jornbyte
Es handelt sich bei dem Tipp nicht um eine Rechtsverbindliche Auskunft und
wer Tippfehler findet, kann sie behalten.
|
BID = 484930
Racingsascha Schreibmaschine
Beiträge: 2247 Wohnort: Gundelsheim
|
Ein PIC ist eine Little-Endian-System, also ist das erste Bit RB7, das letzte RB0.
_________________
Fnord ist die Quelle aller Nullbits in deinem Computer.
Fnord ist die Angst, die Erleichterung, und ist die Angst.
Fnord schläft nie.
|
BID = 485104
Herrminator Gelegenheitsposter
Beiträge: 87
|
Okay danke, werde ich das Datenblatt studieren.
Oder wäre für C Programmierung Atmel die bessere Wahl ?
|
BID = 485208
Nukeman Schriftsteller
Beiträge: 754 Wohnort: bei Kleve
|
Hallo,
die Bitsortierung ist bei Binärdarstellung normalerweise eindeutig
ganz links steht das mit der Wertigkeit 2^7 und links das mit 2^0.
Habe auch noch keinen Prozessor gesehen, wo PortX.7 das Bit mit der
Wertigkeit 1 abbekommt, wenn das Port 8 Bit breit ist.
Big und Little Endian gilt eher dafür, wie die Bytes sortiert sind,
wenn sie eine grössere Zahl darstellen.
Bei little Endian und 2-Byte Zahlen steht das niederwertige Byte auf
Adresse N und das höherwertige auf Adresse N+1.
Bei big Endian steht das höherwertige auf Adr. N und das
niederwertigere auf Adr. N+1.
z.B. Darstellung für 513dez (=2*256 + 1) im Speicherdump ist
02 01 für big endian
01 02 für little endian
Speziell, wenn ein Prozessor von sich aus nur 8 Bit rechnen kann
ist das wichtig, weil es ein Compiler so oder so machen könnte und
unterschiedliche Compiler für den gleichen Prozessor das auch
tatsächlich schonmal unterschiedlich machen.
Besonders lustig wird es, wenn man einen long-Wert in x86-Architektur
auf den Stack wirft. Da ist kaum noch eine Ordnung zu erkennen
Gruß vom kleinen Indianer
Stefan
|
BID = 485244
faustian.spirit Schreibmaschine
Beiträge: 1388 Wohnort: Dortmund
|
Bisher habe ich noch keine C Implementierung für die "kleinen" PICs gefunden die nicht entweder Payware oder unvollständig ist.....
|
BID = 485361
Herrminator Gelegenheitsposter
Beiträge: 87
|
|
BID = 485422
hajos118 Schreibmaschine
Beiträge: 2453 Wohnort: Untermaiselstein
|
Zitat :
Herrminator hat am 27 Dez 2007 19:43 geschrieben :
|
Oder wäre für C Programmierung Atmel die bessere Wahl ?
|
Da gibt's alles kostenlos ...
Stichwort "WinAVR"
|
BID = 485455
Racingsascha Schreibmaschine
Beiträge: 2247 Wohnort: Gundelsheim
|
Du musst das Bit /RABPU im Register OPTION_REG löschen, dann kannst du ein Byte in die Register WPUA (für PortA) und WPUB (für PortB), schreiben, in dem du beschreibst welcher Portpin einen Pull-Up-Widerstand bekommen soll (1) und welcher nicht (0). Wenn du einen Pin als Output verwendest, wird der Pull-Up Widerstand automatisch ausgeschaltet.
_________________
Fnord ist die Quelle aller Nullbits in deinem Computer.
Fnord ist die Angst, die Erleichterung, und ist die Angst.
Fnord schläft nie.
[ Diese Nachricht wurde geändert von: Racingsascha am 28 Dez 2007 18:58 ]
|
BID = 485730
Herrminator Gelegenheitsposter
Beiträge: 87
|
Komm noch net so ganz klar.
Habe an meinem Pin 3 im Port A einen Schalter angeschlossen.
Ist er nicht gedrückt habe ich eine 1. Drücke ich den Schalter habe ich eine Null. Wie invertiere ich jetzt das Signal am Pin 3 ?
Hab so vieles probiert und bekomms nicht hin.
Danke schon mal im voraus.
Gruß Tobias
|
BID = 485741
DonComi Inventar
Beiträge: 8605 Wohnort: Amerika
|
Bitweise Inversion / Komplement einer Zahl geht mit der Tilde in C:
unsigned char i;
i=EINGABE; //Wie auch immer an dieser Stelle den Wert des Eingangsregisters in die Variable i lesen; an diesem Eingangsregister hängt irgendwo der Schalter
if (!(i & 1<<Taster)){
//wird ausgeführt, wenn das Bit, das den Taster repräsentiert, 0 ist
};
Oder, wie gesagt, mit der Tilde:
i=~EINGABE;
if(i & 1<<Taster){
//wird ausgeführt, wenn das Bit, das den Taster repräsentiert, 1 ist. Beim Einlesen des Registers wird dieses, und damit auch das Bit des Schalters, invertiert.
};
Der Operator & ist das bitweise UND, du musst also für den Platzhalter "TASTER" eine Nummer zwischen 0 und 7 einsetzen, je nachdem, an welchen Eingangspin der Taster hängt. Hängt er z.b. an Port1 Eingang 4, dann repräsentiert das vierte Bit (man zählt von 0 an!) die Stellung des Tasters.
Puh, ich hoffe, das war verständlich...
_________________
|
BID = 485789
Herrminator Gelegenheitsposter
Beiträge: 87
|
Danke !!!!
Ja das war verständlich. Probiere es nachher gleich aus. Dann ist es am verständlichsten. Das steht aber nicht im Datenblatt des PICs oder bin ich blind ?
Vielen Dank nochmal
Gruß Tobias
|