Forum: Mikrocontroller und Digitale Elektronik Einstieg Konfiguration , BUS und DIsplay


von Volker A. (spsler)


Lesenswert?

Hallo Leute,

Bin neu in der Welt des uC und habe ein paar generelle Fragen die ich 
leider nicht finden konnte.

Mein Projekt sollte einen Hauptprozesser umfassen und 10 weitere 
PIC16F1703 (noch nicht gekauft), welche über BUS kommunizieren.Jeder 
dieser PIC benötigt 1*Analog und 6*I/O's
Entwicklungsumgebung ist MPLab
Display: 
https://www.reichelt.de/LCD-Module-Touch-Grafik/RD-TFT-3-ZOLL-1/3/index.html?ACTION=3&LA=2&ARTICLE=190707&GROUPID=3011&artnr=RD+TFT+3-ZOLL+1&SEARCH=%252A
Später soll in einem Display eine Bedienoberfläche angezeigt werden , 
alternativ eine Webpage die im gesonderten WLAN zugängig ist.
(HardwareVorschläge Für Alternative)


Zur Konfiguration:
Mein Gedanke war alles in Assembler zu schreiben, allerdings steht 
nirgends im Datenblatt, wie die Konfigurations Zeilen sein sollen.
Zwar ist mir bekannt wie ich die Register im Code anspreche, allerdings 
sehe ich oft etwas wie __Config _WDT_OFF & ....
Wo bitte kommt das her???

Was das bedeutet ist mir jetzt auch klar allerdings besitzt mein 
PIC16F1703 einen internen Oszillator, und ich will den auf 8MHz 
einstellen.
in C finde ich oft _XTAL doch was macht dieser Befehl, ich erwarte ja 
gewisse Einstellungen im Register OSCCON.
Soll ich versuchen den starten zu lassen und dann erst in der 
Inizialisierung ändern und warten ob OSCSTAT Bereitschaft meldet 
(Abfrage erfolgt definitiv)?

Meines Wissens kommt das noch vor der Initialisierung richtig?
Kann ich die Configuration in C machen, da MPLAP das erstellen anbietet, 
und das Programm in Assembler und einbinden?


I2C-Bus:
Hat schon jemand einen BUS realisiert in dem PIC mit 3,3V und 5V 
vorhanden sind?
Ich habe ca 1,8nF Leitungskapazität bedeutet ca 3us (bei 1,8kOhm*1,8nF) 
bis "1" erkannt wird.
Gibt es da auch alternativen zu I2C oder kann ich den mit ca 20kHz 
betreiben?


Displays:
Muss ich den Chip auf der Displayplatine auch noch programmieren um zu 
wissen was er mit den Signalen von SDA anfangen soll oder kommt alles 
von meinen Grund PIC? Welchen sollte ich nehmen, welche Kriterien muss 
er erfüllen, wenn ich einen hier
http://www.microchip.com/maps/microcontroller.aspx
Suche?

Ihr dürft mir gerne Alternativen unterbreiten, falls BUS keinesfalls in 
Frage kommt und Zentral alles gesteuert werden muss, was wohl blöd wegen 
den analogen Signalen ist. Verdrahtung 10*2*0,8mm im Stern.

Wer kann mir Helfen?

Gruß
Volker

: Bearbeitet durch User
von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Volker A. schrieb:
> I2C-Bus:
> Hat schon jemand einen BUS realisiert in dem PIC mit 3,3V und 5V
> vorhanden sind?

Es gibt entsprechende Pegelwandler, mit denen man I2C-Geräte mit 
verschiedenen Betriebsspannungen kombinieren kann.

https://www.nxp.com/products/analog/interfaces/ic-bus/ic-bus-repeaters-hubs-extenders/level-translating-i2c-bus-repeater:PCA9517

Volker A. schrieb:
> Ich habe ca 1,8nF Leitungskapazität

Wie kommst Du auf diesen Wert? Wie ist der physikalische Aufbau Deines 
Busses, welche Leitungslängen kommen da zustande?


Ein Bus, der besser für lange Strecken geeignet ist als I2C, ist die 
Kombination einer UART mit RS485-Treibern. Damit kann man je nach 
Datenrate Leitungslängen bis in den Kilometerbereich betreiben.

Wieso schreibst Du "BUS" als ob es ein Akronym wäre?

: Bearbeitet durch User
von Trollfinder (Gast)


Lesenswert?

Das Vvorhandene Wissen ist etwas auf der mageren Seite fuer ein System 
mit 10 Subprozessoren...

Ich frage jetzt nicht ob das Sinn macht. denn wahrscheinlich macht's 
keinen Sinn. Eine Verbindung per I2C bedeutet auf derselben 
Leiterplatte.

Erzaehl mal was das Ganze soll.

von Volker A. (spsler)


Lesenswert?

@RUFUS
Ein Punkt wäre dann geklärt, danke.

Die Leitungskapazität wurde mit einem Multimeter gemessen, die Längen 
bewegen sich um die 20-30m.
UART bedeutet dann allerdings immer nur 2 Kommunikationspartner richtig?

@Trollfinder
Um das Ansteuern der 10 Subprozessoren mache ich mir keine Gedanken was 
das programmieren angeht, hatte mich eingehend mit Funktionsweise I2C 
auseinandergesetzt. Habe die Kapazität echt unterschätzt was mir einen 
Strich durch meine Rechnung macht.

Nun ich wollte mir das Leben einfach machen und 10 gleiche PIC-Typen mit 
dem selben Programm speisen und dann alle Daten Zusammenfassen, bzw 
steuern.
Es handelt sich um 10 Rolladenmotoren, welche jetzt schon über einzelne 
unabhängige Uhren laufen und wollte diese jetzt zusammenfassen und 
zentral Steuern, allerdings sind die vor Ort Schaltstellen immer 
vorrangig.

Was könnt Ihr mir zu den  Konfigurationsfragen sagen? Da ist mein Wissen 
noch nicht so Aussagekräftig.

von Trollfinder (Gast)


Lesenswert?

Ich wuerde ein RS422 Master-Slave System empfehlen. Andere hier werden 
ein CAN empfehlen. Beiden ist gemeinsam, dass der Bus viele Teilnehmer 
bedienen kann. Und schon die ueblichen EMV loest.
Du musst davon ausgehen, das Potentialdifferenzen auftreten. Ein RS422 
kann +-7V oder so verkraften. Der GND muss allerdings mitgezogen werden. 
Wegen den differentiellen Signalen ist schon eine Stoersicherheit 
eingebaut. Master-Slave bedeutet, es gibt einen Master, und viele 
Slaves. Der Master hat sein Leiterpaar zu den Slaves, und die Slaves 
teilen zusammen ein Leiterpaar zum Master. Treiber waere zB AD489, oder 
aenhlich. Aufkeinen Fall die DS75176, die ziehen zuviel Strom

CAN ist aenhlich, bietet schon die Adressierungsgeschichten, limitiert 
die Meldungslaenge auf etwa 6 byte.

von Trollfinder (Gast)


Lesenswert?

Bei RS422 werden die Treiber per UART der Controller angesteuert.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Volker A. schrieb:
> UART bedeutet dann allerdings immer nur 2 Kommunikationspartner richtig?

Nein, in Verbindung mit RS485-Treibern bedeutet es das nicht; der 
Begriff "Bus" wäre dann auch nicht passend.

Entscheidend ist, daß das eine Halbduplex-Übertragung ist (d.h. es kann 
nur gesendet oder empfangen werden, aber nicht beides gleichzeitig), 
und daß ein geeignetes Protokoll verwendet wird, um Kollisionen auf 
dem Bus zu vermeiden. Am einfachsten geht das mit einem 
Master-Slave-Protokoll, ein Master fragt die Slaves ab, die nur dann 
antworten. Von sich aus sendet kein Slave, immer nur nach Anfrage durch 
den Master.

Das ist einfach und zigtausendfach umgesetzt.

von Volker A. (spsler)


Lesenswert?

Wenn ich das richtig deute benötigt jeder PIC eine UART-Schnittstelle 
und seinen eigenen AD489.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Sicher, jeder beteiligte Prozessor braucht eine UART. Aber das wäre bei 
Deiner I2C-Lösung auch nicht wirklich anders, da bräuchte jeder 
beteiligte Prozessor eine I2C-Schnittstelle.

Es gibt praktischere RS485-Treiber als ausgerechnet den AD489, der 
MAX485 ist ein passenderes Exemplar.

I2C ist nicht für lange Leitungsstrecken entwickelt worden, sondern für 
die Verbindung mehrerer auf einer Platine befindlichen Bausteine. Mit 
RS485 kannst Du, wie ich bereits schrieb, Strecken bis in den 
Kilometerbereich überbrücken.

Leitungen sparst Du weder mit dem einen noch dem anderen ein, an 
mindestens dreien kommst Du so oder so nicht vorbei:

Masse/SCL/SDA bzw. Masse/A+/A-.

von Volker A. (spsler)


Lesenswert?

Ja das schon klar, zielte auf den Treiber hin die Frage.
Master-Slave systeme kenne ich, dennoch danke für die Erklärung.

Könnt Ihr mir eine gute Quelle zum Thema Konfiguration empfehlen?
Wie gesagt, als Initialisierung und später im Programm Registerwerte zu 
verändern bekomme ich hin. Oder stehet das in der *.INC?
Muss mich noch in der Entwicklungsumgebung einarbeiten.

Gruß
Volker

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
Noch kein Account? Hier anmelden.