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
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
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.
@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.
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.
Bei RS422 werden die Treiber per UART der Controller angesteuert.
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.
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-.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.