PIC und C Amfängerfrage

Im Unterforum Microcontroller - Beschreibung: Hardware - Software - Ideen - Projekte

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 26 11 2024  23:39:06      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Microcontroller        Microcontroller : Hardware - Software - Ideen - Projekte

Gehe zu Seite ( 1 | 2 | 3 Nächste Seite )      


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
ICQ Status  

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

Habe versucht im Datenblatt des 16F690 die Befehle für die Pull-Widerstände zu finden

http://ww1.microchip.com/downloads/en/devicedoc/41262A.pdf

Seite 50 sieht ganz gut aus. Nur den Befehl habe ich nicht verstanden...

Gruß Tobias

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
ICQ Status  

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


      Nächste Seite
Gehe zu Seite ( 1 | 2 | 3 Nächste Seite )
Zurück zur Seite 0 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 20 Beiträge im Durchschnitt pro Tag       heute wurden bisher 15 Beiträge verfasst
© x sparkkelsputz        Besucher : 182407960   Heute : 7739    Gestern : 7426    Online : 292        26.11.2024    23:39
1 Besucher in den letzten 60 Sekunden        alle 60.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0385341644287