Hallo Leute
Kann man eigentlich zwei Controller von unterschiedlichen Firmen miteinander verbinden (ATMega und CControl). Wenn es funktioniert, würde ich gern wissen über welche Schnittstelle und wie es programmiertech. aussieht.
mfg blizzard
Druckbare Version
Hallo Leute
Kann man eigentlich zwei Controller von unterschiedlichen Firmen miteinander verbinden (ATMega und CControl). Wenn es funktioniert, würde ich gern wissen über welche Schnittstelle und wie es programmiertech. aussieht.
mfg blizzard
hi
solange beide controller die gleiche schnittstelle (zB serielle schnittstelle, i2c) anbieten, ist dies kein problem.
die implementierung der verbindung ist natürlich programmiersprachen-abhängig.
cu
chris
Danke für die Antwort Chris!
Und welche Schnittstelle würdest du mir Empfehlen?
mfg blizzard
naja, wenns nur zwei controller sind, würde ich die serielle nehmen ...
wenn aber später weitere controller dazukommen sollen, ist i2c besser (die serielle schnittstelle ist eine punkt-punkt verbindung, i2c erlaubt mehrere geräte)
cu
chris
Dann werd ich wohl die serielle Schnittstelle nehmen.
Könntest du mir bitte eine Internetseite mit Infos über Ansteuerung, Aufbau usw. nennen? Noch ne Frage: Über diese Schnittstelle kann man doch in beide Richtungen senden (also kein Slave/Master wie beim I2C)?
mfg blizzard
Die Serielle Schnittestelle bietet sich wohl am meisten an, weil sie sehr leicht abzugreifen ist. Es ist keine Master-Slave nötig. Die C-Control hat allerdings schon einen Pegelwandler eingebaut. Diese Pegel kannst du nciht an den AVR benutzen, du müsstest entweder die serielles Schnittstelle direkt am Prozessor abgreifen oder einen Pegelwandler vor den AVR hängen.
Die C-control sendet mit 9600 Baud.
Die Pegelwandlung für den AVR könnte so aussehen: https://www.roboternetz.de/phpBB2/al....php?pic_id=13
@ RCO
Danke. Das ist dann der Pegel der seriellen Schnittstelle, oder? Könntest du mir bitte Infos zur Softwaremäßigen Seite geben, also Ansteuerung? Wies mit der CControl (CCBASIC) funktioniert weiß ich schon, aber nicht wie mit dem AVR (BASCOM).
mfg blizzard
Also unter Bascom ist das Senden und Empfangen recht einfach, wenn ich jetzt nichts vergessen habe, müsste es so aussehen:
Code:$crystal = 4000000
$baud = 9600
Do
Print "Start"
Wait 1
Loop
end
Also wenn der Pegel zwischen 0 und 5V (TTL; also diret am Mikrocontroller) heißt es einfachs serielle Schnitstelle. Nach der Pegelwandlung dann RS232. Im grunde wandelst du jetzt, wenn du es wie oben machst den Pegel von TTL in RS232 und dann wieder in TTL, ist eignetlich unnötig, aber sonst musst du halt das Singal direkt CC-Prozessor abgreifen. UNd Außerdem kannst du den AVR dann acuh an den PC anschließen.Zitat:
Das ist dann der Pegel der seriellen Schnittstelle, oder?
@RCO
Das Programm versteh ich jetzt nicht ganz. Wozu ist z.B. das Loop? Und wird bei der print Anweisung das Wort "Start" übertragen? Ich dachte man kann nur 1 byte übertragen.
mfg blizzard
Alles was in do...loop steht wird immer wieder weiderholt. Das PRogramme Sendet ununterbrochen "Start". Man könnte auch "Hallo World" oder "Test" oder so nehmen.Zitat:
Wozu ist z.B. das Loop?
Richtig, man kann immer nur ein byte senden, dann das nächste etc. Bascom tut auch genau das, es sendet die dem ASCII-Zeichen "S" entsprechende Zahl, dann "t"...Zitat:
Ich dachte man kann nur 1 byte übertragen.
In Bascom hat man den Vorteil/Nachteil, dass man hier nicht groß rumprogrammieren muss, anders als in C. Bascom regelt das halt alles selber.
Aha, so ist das. Mit INPUT bekommt man dan den Text in CCBASIC rein? Oder muss man da dan die Zahl wieder in ein ASCII-Zeichen umwandeln? Weiß, das sind ziemlich dumme Fragen, aber ich kenn mich mit dem Thema noch nicht so aus.
mfg blizzard
Sorry, ich bin da leider ziemlich raus, am besten liest du mal in der Anleitung nach. Zu INPUT steht da:
( http://www.produktinfo.conrad.com/da...-Robby_RP5.pdf )Zitat:
INPUT variable
kann ein Integerwert von der seriellen Schnittstelle gelesen und für die anschließende Weiterbearbeitung in einer
Variablen gespeichert werden. Der Wert wird in einem Terminalprogramm an einem PC eingegeben und nach
dem Drücken der ENTER-Taste per Schnittstellenkabel an den C-Control/BASIC Steuercomputer übertragen.
Der INPUT-Befehl wartet solange, bis eine komplette Datenübertragung vom Terminal empfangen wurde. Wird
der INPUT-Befehl aufgerufen, ohne daß eine Datenübertragung vom Terminal erfolgt, wird das Programm
endlos an dieser Stelle stehen bleiben! Hier hilft dann nur noch der Reset-Taster und der anschließende Neustart
des C-Control/BASIC Gerätes.
Du erhälst also den ASCII-Zahlenwert. In dem Fall wäre es sinnvoller nicht "Start" zu senden, sondern nur ein Zeichen, dessen ASCII-Wert du kennst (nachliest). Bei einer übereinstimmung kannst du dann ja irgendwas amchen, oder du sendest einfach vom AVR aus nur Zahlenwerte und keine ASCII-Zeichen.
Danke für deine Hilfe Moritz. Ich werd wohl nur Zahlen übertragen, die der andere Controller als Behfel erkennt. Ein wenig rumprobieren, dann wird schon gehen.
mfg blizzard