PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : AVR mit CControl verbinden



blizzard
17.08.2005, 16:30
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

cavegn
17.08.2005, 17:10
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

blizzard
18.08.2005, 07:14
Danke für die Antwort Chris!

Und welche Schnittstelle würdest du mir Empfehlen?

mfg blizzard

cavegn
18.08.2005, 08:18
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

blizzard
18.08.2005, 10:03
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

RCO
20.08.2005, 20:56
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/album_pic.php?pic_id=13

blizzard
20.08.2005, 21:42
@ 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

RCO
20.08.2005, 22:02
Also unter Bascom ist das Senden und Empfangen recht einfach, wenn ich jetzt nichts vergessen habe, müsste es so aussehen:


$crystal = 4000000
$baud = 9600

Do
Print "Start"
Wait 1
Loop
end


Das ist dann der Pegel der seriellen Schnittstelle, oder?

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.

blizzard
20.08.2005, 22:18
@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

RCO
21.08.2005, 12:16
Wozu ist z.B. das Loop?

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.


Ich dachte man kann nur 1 byte übertragen.

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"...
In Bascom hat man den Vorteil/Nachteil, dass man hier nicht groß rumprogrammieren muss, anders als in C. Bascom regelt das halt alles selber.

blizzard
21.08.2005, 12:46
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

RCO
21.08.2005, 13:12
Sorry, ich bin da leider ziemlich raus, am besten liest du mal in der Anleitung nach. Zu INPUT steht da:


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.

( http://www.produktinfo.conrad.com/datenblaetter/175000-199999/190333-an-01-de-Robby_RP5.pdf )

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.

blizzard
21.08.2005, 13:36
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