PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bascom kompatible PC > MC verbindung



Basteltisch
02.11.2009, 18:39
Hallo zusammen,
ich blicke durch dieses Thema noch nicht ganz durch.

Ich habe im grossen ganzen vor Mikrocontroler vom PC aus zu steuern, bzw anweisungen vergeben. Dies soll zu einem späteren Zeitpunkt per Funk funktionieren, doch zuerst muss ja mal die PC > Mikrocontroler verbindung funktionieren.

Ich besitze einen PC welcher weder mit einem Druckeranschluss noch mit einem COM Port gesegnet ist (ja so ein ganz moderner ^^).

Nu möchte ich den fehlenden Anschluss als USB Variante nachkaufen. Es gibt einige USB > db9 Adapter für ein paar Euro:

http://de.sourcingmap.com/usb-rs232-serial-pin-db9-adapter-converter-p-31183.html
(das ist irgend son merkwürdiger Tauschhandel, es geht um die Beschreibung und das Bild bei dem Link)

und auch das gleiche mit weniger Pins:
http://www.reichelt.de/?;ACTION=3;LA=444;GROUP=ED2;GROUPID=791;ARTICLE=80 540;START=0;SORT=artnr;OFFSET=16;SID=29EgvHjKwQAR0 AACIoquwf6e28ce8979e4baaffe174ec04ed33b1

So, was benötige ich nun um am PC per Console mit meinem Bascom programm auf dem MC kommunizieren zu können?

Ist db9 die einzige Lösung oder funktioniert es auch mit geringerer Pinzahl?

Es grüßt,
Basteltisch

Jaecko
02.11.2009, 19:46
Also das Ding vom Reichelt-Link bringt dir nichts. Ist nur ein mechanischer Adapter, mehr nicht.

Das andere Teil hilft schon weiter, damit hast du dann ne (fast) "klassische" RS232-Schnittstelle. Hierzu brauchst du noch nen MAX232, der wandelt dann die Spannungen der RS232-Schnittstelle auf die 0/5V-Pegel, die der Controller braucht. In der Annahme, dass es ein AVR ist, werden dafür die Pins RX und TX verwendet. Und die sind in Bascom relativ einfach mit Inkey() und Print verwendbar.

Wichtig beim Adapterkabel: Nicht gerade das billigste 1-EUR-Teil nehmen. Es gibt so gemeine Kabel, bei denen nur 1 Ader da ist (Datenübertragung vom Gerät zum PC, aber nicht andersrum).

Ich bau mir solche Adapter meistens mit nem FT232RL selbst; hier braucht man den MAX232 dann nicht, da der FT232RL gleich von USB auf 0/5V wandelt.

recycle
02.11.2009, 19:59
Wichtig beim Adapterkabel: Nicht gerade das billigste 1-EUR-Teil nehmen. Es gibt so gemeine Kabel, bei denen nur 1 Ader da ist (Datenübertragung vom Gerät zum PC, aber nicht andersrum).

Zu 1€ Teilen kann ich nichts sagen, aber das USB/Seriell Kabel von www.pollin.de für 4,95€ habe ich bisher mit einer Workstation, einem Notebook und einem Netbook probiert - jeweils mit Bascom - und bisher keine Problleme damit gefunden.

Um den Microcontroller auch seriell zu programmieren, muss man allerdings erst mal einmalig einen Bootloader drauf laden.
Dafür braucht man dann leider doch einen ISP-Adapter oder jemanden der einen hat und einem den Bootloader auf den Controller schreibt.

Basteltisch
02.11.2009, 20:21
Hallo,
vielen dank für die schnellen Antworten.

Pollin wird mir immer sympatischer :)

Also so einen Max232 habe ich zufällig sogar da, habe ihn aus einem Bausatz von robotikhardware.de. Nun ist seine Zeit wohl gekommen :)

Programmieren möchte ich erstmal nicht darüber, dafür habe ich noch meine USBprog lösung.

Mir geht es erstmal um eine generelle Lösung um mir per Funkboard eine Funk schnittstelle zu weiteren Funk-geräten zu schaffen.

Die entsprechende Hardware suche ich mir zurzeit bei Pollin zusammen. mit 6€ komme ich dort schonmal zu einem Sender und einem Empfänger. Da spar ich mir dann die 25€ für RNFunk. Ich möchte mehrere davon herstellen und verteilen (Funk Netzwerk) und da sind 25€ für eine Funkplatte einfach zu viel.

Könnt ihr da was empfehlen? Es werden maximal 5m überbrückt (funk), und das durch dünne wände.
Es grüßt,
Basteltisch

Jaecko
02.11.2009, 20:37
Genau das bau ich selber gerade auf. Ich verwend dazu die RFM12 von Pollin. Auf PC-Seite hängt dann dieses Teil: http://cihome.kilu.de/bilder/projekte/usb2rfm12.jpg

Die anderen Geräte (wie z.B. Lichtschalter/Heizventil/Aquarium) haben auch jeweils ein Funkmodul.

Die RFM12 sind auf steckbare kleine Platinen gelötet und nicht direkt auf die "Hauptplatine". Gründe:
- Derzeitige Verwendung von 433MHz-Modulen
- 433MHz-Band-Freigabe für ISM wird angeblich 2013 aufgehoben
- Optimismus: Meine Geräte werden auch in 4 Jahren weiterhin laufen
- Die SMD-Version der RFM12 lässt sich nicht beschädigungsfrei ablöten
(Zerstört RFM12 und/oder Platine)
=> Einfach neuen Steckadapter mit 868MHz-Modul rein und den alten in die Tonne, wenns soweit ist.

Die Reichweite dieser RFM12 liegt angeblich bei 200m (Sichtfeld).
Wie weit die wirklich gehen, hab ich noch nie versucht. Aber im Gebäude gehts überall, auch mit "Wurfantenne", also nur nem Stück Kabel.

Basteltisch
02.11.2009, 20:50
Hallo,
ach das klingt ja super :)
Ich hatte vor direkt auf 868Mhz zu setzen, vorallem da ich hier extreme Probleme habe auch nur einen Meter mit einem 433Mhz Funkgerät zu überbrücken (fertiges gekauftes, funksteckdose).

Ich möchte auch Licht etc damit steuern und generell eine Schnittstelle für all meine Geräte haben.
Aber am meisten reizt mich die Entwicklung eines Kommunikationsprotokolles da ich eine Art überbrückung im Netzwerk schaffen will (PC ist zu weit vom Kühlschrank entfernt, aber beide sind in Reichweite des Toasters, also wird die Funknahricht vom Toaster zum Kühlschrank weitergeleitet).

Natürlich mit Identifizierungsmöglichkeiten der Geräte.

Leider habe ich im Moment keine Geräte bei denen ich wüsste das ich sie fernsteuern könnte. Ein Wecker mit Zimmerlichtdimmung ist als Projekt danach geplant.

Wo hast du denn das USB2RFM her? Selbst gebaut? Wie steuert man es an, und vorallem kann man es wie einen COMport ansteuern? Das währe für mich sehr interessant da ich meine "Funkzentrale" selbst Programmieren möchte.


Deine Homepage guck ich mir gleich mal an, mal sehen was ich so Interessantes für das Projekt aufschnappen kann :)

Es grüßt,
Basteltisch

Jaecko
02.11.2009, 21:04
USB2RFM12 ist meine Entwicklung.
Mit COM-Port gehts auch; wie gesagt dann einfach nur nen MAX232 statt nem FT232RL verwenden (bedingt natürlich Änderung des Platinenlayouts).
Da brauchts aber dann auch noch ne zusätzliche Spannungsversorgung.
Aber da ich eigentlich keine echten COM-Ports mehr hab, hab ichs gleich mit USB gemacht.

Im Anhang ist ein Screenshot der PC-Anwendung;
"Test" wird von 0x0200 (USB2RFM12) an 0x0040 (Room-Control) gesendet. 0xFE01 ist der Service für Datum & Uhrzeit, ebenfalls vom USB2RFM12 gesendet, Empfänger ist jeder, der es braucht (0x0000).
Also alle Empfänger mit 1 Mausklick mit der aktuellen Uhrzeit versorgen.
Ebenso zeichnet die Anwendung den gesamten empfangenen Datenverkehr auf; also ideal um zu sehen, was eigentlich gerade so los ist.

Basteltisch
03.11.2009, 14:06
Hallo,
oh das sieht ja super Interessant aus. So möchte ich das auch machen :)
Und mir ist schon ein Stein vom herzen gefallen als ich gesehen hab das das ein VB6 Programm ist. Ich dachte zur Kommunikation mit USB Geräten muss ANSI C mit Inline Assambler und schlimmeres benutzt werden.

Hast du einen Treiber der den USB Port auf einen virtuellen COM Port setzt?

Was genau brauche ich für eine funktionierende Verbindung? Also einen FT232RL hab ich schon aufgeschrieben. Dann noch eine USB Anschlussbuchse.

Ist der Taktgeber dort auf dem Bild wegen des Funkgerätes dort oder benötigt die USB > PC Konstruktion ebenfalls einen speziellen Takt?

Es grüßt,
Basteltisch

Jaecko
03.11.2009, 14:57
Ich dachte zur Kommunikation mit USB Geräten muss ANSI C mit Inline Assambler und schlimmeres benutzt werden.


Warum zu Fuss gehen, wenns ne U-Bahn gibt... *g*
Lediglich im µC-Bereich bin ich von Bascom fast weg und verwend zu 95-98% C. Ich denk mal, das Icon oben links hats verraten.

Der verwendete Treiber ist der VCP-Treiber von FTDI. Der haut dir den FTDI als virtuellen COM-Port ins System.

An sich brauchst du nur USB-Kabel, Buchse, FT232, Buchse, AVR und halt das nötige Hühnerfutter aussenrum, welches für den Grundbetrieb der einzelnen ICs nötig ist.

Der Quarz muss nicht sein. Wenn du z.B. nur 9600 Baud hernimmst, was eigentlich reicht, reicht hier auch die interne Taktquelle des AVR
Bei mehr Speed (z.B. 115200) brauchts dann nen Baudratenquarz; in dem Fall isses einer mit 14745600 Hz. (14745600 / 115200 = 128, wunderbarer binärer Teiler). Das RFM12 hat seine eigene Taktquelle.

Basteltisch
03.11.2009, 17:36
Hallo,
also ich muss dann doch erstmal auf den Weg über den Seriellen USB Port umsteigen. Grund: Ich kriege die Bauteile für das Projekt nur bei pollin, doch pollin hat diese FTDI Chips nicht. Und bei Reichelt möchte ich nicht extra bestellen, sind ja schliesslich nur 3€, dann müsste ich noch den Mindestaufpreis bezahlen. Daher werde ich wohl ein seperates USB Kabel als Stromversorgung nutzen, schliesslich wird das Gerät nur am PC benutzt :)

Was für ein "hühnerfutter" kommt denn noch dazu? Ein Kondensator zum entstören der Geräte, aber was gibt es denn da noch? Ich kenne mich da noch nicht so sehr aus.

Nun muss ich leider 3 Tage warten um mit dem Projekt anfangen zu können :( Aber solange werde ich das Netzwerkprotokoll planen und mir schonmal Schaltpläne für Endgeräte wie Licht an / aus ansehen.

Es grüßt,
Basteltisch

Jaecko
03.11.2009, 22:28
Also ich hab für den FTDI und Funkmodul jeweils nen 100nF-Keramik-Kondensator. Hatte zwar auch ohne nie Probleme, aber heraufbeschwören soll mans ja nicht. Allgemein könnte man dann auf der Platine selbst noch nen ElKo 1...10µF beim USB-Anschluss unterbringen; die USB-Spannung soll ja angeblich nicht grad die schönste sein.

Für den AVR:
- IC-Fassung
- 2x 100nF-Kerko für VCC-GND und AVCC-GND. Wenn der ADC nicht benutzt wird, AREF einfach offen lassen. Ansonsten da auch noch einen hin.
- optional Quarz, dazu dann 2x 22pF-Kerko
- ISP: Wannenstecker oder für einfacheres Platinenlayout einfach Stiftleisten*
- evtl. LEDs + Vorwiderstand (bei mir: Low-Current-LEDs + 1k-SMD-Wid.)
- Widerstand als Pullup für den Reset-Pin (Bereich irgendwas mit 1k...10k)

Da kein FTDI verwendet wird:
MAX232 + Fassung + 4x ElKos 1µF + 1x KerKo 100nF + SUB-D-Buchse 9-pol

Müsste dann soweit eigentlich alles sein.

*) V.a. beim ATMega8 irgendwie blöd, da Reset "gegenüber" SPI ist; und da bei ner 1-lagigen Platine was hinzukriegen ist ohne Drahtbrücken kaum machbar; darum spar ich mir die Zeit und klatsch einfach die Stiftleisten hin.

Basteltisch
04.11.2009, 17:55
Hallo,
danke für die Liste. Dann sollte ich alles haben, bzw es sollte am Freitag ankommen.
Ich nehm Lochrasterplatinen für den Aufbau da ich kein Ätzgerät habe und auch nicht wüsste wo hier ein Laden währe welcher eines hat (und ich so meine viele Litze loswerde :) ).

Dann nochmal zum verständnis:
Also über FTDI / Seriell kommen informationen an den AVR. Dieser kann diese per oben genannten Input Befehl lesen.
Anschliessend muss dieser die Befehle weiterschicken (in meinem Fall werden es Bytefolgen sein die 1 zu 1 weitergesendet werden).

Doch wie findet die Ansteuerung des AVR an den Funksender / Empfänger statt? Ich benutze Bascom und habe bisher eigendlich nur Transistoren und Piezos verwendet.

Es grüßt,
Basteltisch

edit:;

ahja welche Geräte hast du eigendlich schon alles in dein Funknetz mit eingebunden, bzw welche werden darüber bereits gesteuert?

Jaecko
05.11.2009, 10:32
Die Ansteuerung des RFM12 ist halt das grösste "Hindernis" in dem Fall. Also so einfach wie bei RS232 isses (leider) nicht. Aber für Bascom findet sich da auch einiges.
Und wenns doch Probleme gibt, kann man ja den C-Code von mir einigermassen nach Bascom übersetzen.

Zum Funkprotokoll empfiehlt es sich, die Daten nicht einfach "nackt" zu schicken. Sondern z.B. als erstes Byte die Länge der Daten und dann die ganzen Daten am Stück zu senden. Macht dann die Verarbeitung im Empfänger einfacher, da der Sende-AVR dann weiss, wann er das Datenpaket per Funk rausschicken soll bzw. der Empfangs-AVR weiss, wann alles da ist.
Klar kann man die Bytes auch einzeln senden, dann entfällt das.

Im Netz aktiv sind derzeit:
- PC (USB2RFM12)
- Beleuchtung (nur schalten, keine Dimmfunktion)
- Heizventil
- FFW-Piepser
- RSTouch als "Fernbedienung" bzw. Alarmdisplay
- Aquarium (Steuerung für Filter/Beleuchtung/Heizung)

Was das nächste ist... tjo, zeigt sich immer recht spontan.
Evtl kommt noch eins in nen PKW, der mir dann jedes Mal bei Ankunft eine Art Fahrtenbuch schreibt; also wie viel bin ich gefahren, wie viel ist noch im Tank, Überwachung Klimaanlagendruck (Kühlmittelverlust finden) etc.
Die Daten krieg ich ja so schon, müsst ich nur noch per Funk übertragen.

Perfekt wärs da natürlich noch, wenn ich Zugang zum Fehlerspeicher hätte und da schauen kann, ob was drinsteht. Nur als "Normalsterblicher" kommt man an dieses Protokoll nicht ran.

Basteltisch
05.11.2009, 20:18
Hallo,
oh dann werde ich die Packetlänge am Anfang mit einbeziehen. Ich wusste garnicht das man ganze Arrays senden und Empfangen kann, ich dachte bisher das ginge nur Byteweise.

Bisher wollte ich mich an der LAN Technologie orrientieren, also mit einen Trailer welcher angibt das ein neues Packet ankommt. Und endlich kann ich dazu Packet sagen und muss es nicht "Frame" nennen (cisco ist schuld) :) .

Mir ist heute etwas anderes eingefallen was möglich währe:
Bei Pollin gibt es einen ganzen Haufen ICs für 1€. Ich denke einige davon lassen sich gut Programmieren. Nun währe es doch möglich diese als verlängerten Arm des Programmiergerätes zu verwenden. Beispiel:

Das Programmiergerät wird an einen Wannenstecker angeschlossen. Dieser geht allerdings nicht auf die Programmierports eines ICs sondern an Eingang und Ausgangports.

Dieser schickt die Pegeländerungen an den Ports an einen IC per Funk, welcher wiederrum Ports am zu programmierenden AVR hat. Die beiden ICs diehnen also quasi als Funkbrücke zwischen Programmiergerät und dem zu programmierenden AVR. könnte das funktionieren? Dann müsste ich später nicht durchs gesammte Haus laufen um in irgendwelchen Ecken mit dem Laptop ein Protokollstackupdate zu installieren, sondern könnte dies bequem vom PC aus machen.

Es grüßt,
Basteltisch

Basteltisch
13.11.2009, 15:19
Hallo,
so also ich musste nun doch bei Reichelt bestellen da die SubD9 Stecker nicht auf meine Lochrasterplatinen passen, also hab ich mir Ätzubehör geholt und den USB Chip direkt mitbestellt. Nu brauch ich zwar das Ätzzeug nichtmehr da ich den USB Chip habe aber eines ist von der Bestellung des anderen abhängig, und nu hab ich beides.

Werde dann für den USB Chip die Platine erstellen. Mit welchem Zeichenprogramm hast du das Platinenlayout entworfen?

Es grüßt,
Basteltisch

Jaecko
13.11.2009, 15:34
Alles mit Eagle (www.cadsoft.de) . Bei der Platinengrösse reicht hier auch die Demoversion.

Bei meinem Layout hab ichs halt insofern blöd gemacht, dass das Ding relativ schmal ist und ständig umkippt, wenn man das Kabel bewegt.

Richard
13.11.2009, 15:38
Aber am meisten reizt mich die Entwicklung eines Kommunikationsprotokolles da ich eine Art überbrückung im Netzwerk schaffen will (PC ist zu weit vom Kühlschrank entfernt, aber beide sind in Reichweite des Toasters, also wird die Funknahricht vom Toaster zum Kühlschrank weitergeleitet).




Deine Homepage guck ich mir gleich mal an, mal sehen was ich so Interessantes für das Projekt aufschnappen kann :)

Es grüßt,
Basteltisch

Moin moin.

ZigBee-Funkmodul SERIES 2 XB24-BCIT

Erweitern Sie Ihre Applikation ohne großen Entwicklungsaufwand um eine 2,4 GHz Funkübertragung (ISM-Band). Mit zwei XBEE-Funkmodulen sind Sie in der Lage, über eine serielle Schnittstelle eine Datenfunkverbindung nach ZigBee-Standard aufzubauen. Das nur 25 x 28(33) x 2 mm große Modul kann unproblematisch in Ihr Schaltungslayout eingebunden werden. Durch das einfache Design-In sparen Sie ein Vielfaches an Entwicklungszeit/-kosten und verbessern Ihre Time-to-market erheblich.
Es sind 2 verschiedene Varianten erhältlich: ZIGBEE XBEE als 1mW Modul sowie XBEE PRO als 100 mW Modul. Das XBEE PRO darf in Europa nur mit max. 10dbm betrieben werden, was mittels PowerLevel-Befehl über die Software einzustellen ist. Topoligien: Point-To-Point, Point-To-Multipoint

Damit hast Du gleich alles mit Point-To-Multipoint. Protokoll
ist schon vorhanden. Das Teil gibt es z.B. Bei Reichelt, dort
kann auch das Datenblatt geladen werden.

Einziger Nachteil, man muß sich eine Adapterplatine Basteln weil
das Rastermaß´nicht zu gebrauchen ist. :-(

Gruß´Richard

Basteltisch
14.11.2009, 21:37
Hallo,
wo bleibt denn der Spass wenn man alles direkt fertig kauft? :)

Also mit Eagle funktioniert das wohl nichtmehr mit der Trial Version, hab mir die Version heruntergeladen und nun sagt er mir jedesmal wenn ich etwas auf die Platine setzen will das dies nicht in der Trial Version funktioniert.

Gibt es da alternativen? Ich habe mir FreePCB angesehen, aber das hat scheinbar keine Funktion zum automatischen Generieren von Verbindungen.

Es grüßt,
Basteltisch

Jaecko
14.11.2009, 22:41
Sind die Teile schon innerhalb der Dimension-Layer, also dem weissen Viereck? Ausserhalb platzieren geht da nicht.
Alternativen gibts sicher genug, nur kenn ich selber nur Eagle.
Hätte mich auch mal in Target 3001 versucht, aber liegt mir überhaupt nicht.

Und rein vom Vergleich her seh ich bei den ZigBees irgendwie keinen Vorteil. Softwareaufwand hat man am Anfang immer. Wenn die Software mal steht, entfällt das. Lt. Datenblätter haben die RFM12 auch ne höhere Reichweite.

So ein fertiges Protokoll kann zwar einiges einfacher machen, aber wenn man sich auch mal den Stückpreis anschaut... bei 10 Stück ist das halt doch schon ein Haufen Holz.

Richard
15.11.2009, 07:25
Stimmt natürlich etwas teuer sind die zigbee aber wenn es später
eine Art Netzwerk sein soll wo die einzelnen Module die Pakete
zum einentlichem Empfänger "durchreichen", wird das recht
kompliziert. Mir währe der Software Aufwand zu hoch und auch
warscheinlich zu Komplitiert....

Gruß Richard

Basteltisch
15.11.2009, 09:15
Hallo,
ich habe nicht umsonst in meinem bisherigen Leben mehr Netzwerkanwendungen programmiert als reine Client Software.

Im Gegensatz zu Netzwerkswitchen gibt es bei den RFM Modulen nur die Möglichkeit des speicherns und weiterleitens (Store & Forward). Nun muss für die Geschwindigkeit lediglich der Analysevorgang beschleunigt werden, weswegen ich gleich nach dem Längenfeld ein Identifikationsfeld für den Empfänger vorgesehen habe, welcher bei meinen Dimensionen grade mal 1 Byte gross ist. Somit weiss eine Station ob sie das Array nun weiterschicken soll (wieder auf die Funkleitung legen) oder ob sie es behalten soll.

Zusätzlich gibt es ein Packet-identifikationsfeld, welches sich einheitlich in allen Geräten beim Empfang eines Packetes erhöht. Anschliessend werden alle Packete mit einer niedrigeren Ident-nummer als die eigene abgelehnt. Das soll Routing Schleifen verhindern.

Eine Routenfindung halte ich in meinem Netzwerk nicht für Sinnvoll, da der Aufwand die Fehleranfäligkeit erhöhen würde und somit für meine 4-5 Geräte mehr abträglich als nützlich währ.


@jaecko: da hab ich garkein bestimmtes Gebiet gefunden, ich dachte mir aber auch schon das es sowas geben muss, bzw. das ich sowas setzen muss. Aber gefunden hab ich nix. dann werd ich mal rumscrollen :)

Hmm da ist nix :/ Muss ich das extra einblenden? Im Eagle Handbuch bin ich schon auf seite 33 / 72, aber bisher war da auch nichts.

Es grüßt,
Basteltisch

Jaecko
15.11.2009, 09:52
Wenn du nen Schaltplan angefangen hast und dann ein Board dazu erstellst, wars zumindest bei bisherigen Versionen immer so, dass in der rechten Hälfte der weisse Rahmen (halbe Eurokarte) angezeigt wurde, links daneben auf einem "Haufen" alle Teile. Die musste man dann in den Rahmen reinziehen.
Müsste Layer 20 (Dimension) sein.
Oder haben sich diese Einschränkungen wieder geändert...?

Basteltisch
16.11.2009, 17:07
Hmm könntest du mir bitte eventuell eine Rohplatine der grösse 75x100 mit nix drauf uploaden? Vielleicht funktioniert es dann. Aber mal zum Verständniss: Generieren die CAD Programme auch automatich die Linienführung wenn man ihnen sagt von wo nach wo sie sollen oder muss man das selbst machen?

Dieses FreeCAD welches ich bisher hatte hat mir immer nur angezeigt wo sich Linien die Grade durchs Feld laufen sich kreuzen, als würde ich das nicht selbst sehen :/

Wenn die das nicht können muss ich mich wohl nochmal mit der Wegfindung von Pixellinien auseinandersetzen um wenigstens diese Aufgabe machen zu lassen :)

Es grüßt,
Basteltisch

Jaecko
16.11.2009, 17:53
Naja das mit der Platine wird nicht viel nutzen, da ich diese Beschränkungen ja nicht hab. D.h. die tauchen bei dir auf, sobald du das Ding öffnest und was ändern willst.

Es gibt für das Routing der Leiterbahnen den sog. "Autorouter"... ein mMn nutzloses Spielzeug bzw. ein Ding, wenns schnell gehen muss. Wenn man's selber macht, dauerts zwar natürlich länger, aber es wird vom Ergebnis her unschlagbar im Vergleich zum Autorouter. Hatte schon mehrfach den Fall, wo der Autorouter Drahtbrücken gebraucht hat, wo ich ohne ausgekommen bin.
(Test folgt in kürze...)

Welche Pins untereinander wie verbunden werden sollen muss vorher im Schaltplan festgelegt werden.

EDIT: im Anhang mal ne Platine; die eine manuell geroutet, die andere das Werk eines Autorouters...

Basteltisch
25.11.2009, 18:42
Hallo,
ich habe mir das Projekt nun auf einer Lochrasterplatine zusammengelötet und nun mehrere Tage nach dem Fehler gesucht, aber es kommen einfach keine Daten am PC an. Die Schaltung ist folgende:

http://www.imgbox.de/users/Basteltisch/thumbnails/Aufzeichnen_t.gif (http://www.imgbox.de/?pr=Basteltisch-Aufzeichnen.jpg)

Der MC ist in wirklichkeit ein Attiny 2313, aber den hab ich nicht bei Target gefunden und habe den da genommen, die Pins stimmen aber überein.

Der Quellcode ist folgender:


$regfile = "2313def.dat"

$crystal = 8000000

$baud = 9600

Declare Sub Blink()
Config Portb.0 = Output
Statusled Alias Portb.0

Statusled = 1

Do
Blink

Print "test"
Loop

Sub Blink()
Statusled = 0
Waitms 20
Statusled = 1
End Sub


Blinken tut die LED auch fleissig, also der MC funktioniert. Nur am PC mit Terra Term kommt nichts an. Am DB9 Stecker ist ein USB zu Seriell Gerät mit installierten Treibern (Windows 7) und der im Konsolenprogramm ausgewählte Port (COM1) ist der einzige welcher sich öffnen lässt.

Deswegen muss der Fehler wohl in der Schaltung liegen. Baudrate ist auch die gleiche. Ich hoffe mir kann jemand mit dem Problem weiterhelfen.
Findet ihr irgendwo einen Fehler?

Es grüßt,
Basteltisch

edit: um schonmal dem Hinweis entgegen zu kommen dass vor dem Reset kein Widerstand ist: Ich Resette den MC nicht manuell, der einzige der das macht ist das Programmiergerät, deswegen geht das auch so.

Richard
26.11.2009, 06:28
Hallo,
ich habe mir das Projekt nun auf einer Lochrasterplatine zusammengelötet und nun mehrere Tage nach dem Fehler gesucht, aber es kommen einfach keine Daten am PC an. Die Schaltung ist folgende:


brücke einmal pin 2und3 am sub d Stecher vom kabel zum PC
dann sollte was Du am Terminal eigibst zurück kommen. Dann
weist Du zumindest das die PC Seite klappt.

Gruß Richard

Jaecko
26.11.2009, 07:09
Also dass ein USB-Gerät gleich mal COM1 kriegt, erscheint unwahrscheinlich. Schau mal bei Windows 7 in den Gerätemanager (soferns den da noch gibt), ob der COM1 auch noch da ist, wenn das USB-Kabel abgezogen ist. Ich vermut mal ganz stark, dass der COM1 ein (evtl nicht rausgeführter) onboard-COM ist.

Vom Schaltplan her schauts eigentlich ok aus, obwohl mich die 220µF beim MAX232 etwas wundern. Will der wirklich so grosse Böller?
Ich verwend da nur immer 1µF.



edit: um schonmal dem Hinweis entgegen zu kommen dass vor dem Reset kein Widerstand ist: Ich Resette den MC nicht manuell, der einzige der das macht ist das Programmiergerät, deswegen geht das auch so.

Wird nur solange funktionieren, wie das Programmiergerät auch dranhängt. Sobald das weg ist, liegt der Pin "offen" und macht was er will. (Der angeblich vorhandene interne Pullup ist nur Spielzeug, hat bei mir noch nie wirklich geholfen)

Basteltisch
26.11.2009, 18:30
Hallo,
also liegt wohl doch am USB COMport, war
1. Com3 (danke für den Hinweis)
und
2. Kommt da nix beim überbrücken zurück. Wohl schonwieder nen Windows 7 Problem :S (danke für den Hinweis)

ich probier das gerät mal an einem XP rechner aus.

Naja angegeben sind auch kleinere Kondensatoren für den Max232, aber kleinere als 220 hab ich nicht.
Kann ich eigendlich auch Kerkos anstatt von Elkos nehmen? Davon hab ich noch mehr :)

Also das mit dem Reset knopf könnte einige probleme erklären die ich sonst habe, danke :) Werde das in meinen aktuellen Projekten einbeziehen.

Es grüßt,
Basteltisch

Jaecko
26.11.2009, 19:45
Win7 mal wieder... dachte, die hätten seit Vista gelernt *g* ... wie gut, dass mein AVR-Programmer-PC immer noch mit Win98 rumgurkt.
(Bei dem bleibts auch bei Win98... ich lass mir vom Betriebssystem nicht vorschreiben, wie ich auf meine Hardware zugreifen darf)

Manche MAX232 kommen auch mit Kerkos 10...100nF klar. Welche genau das sind, weiss ich nicht genau. Vor <7 Tagen hab ich aber irgendwo nen Forenbeitrag gehabt, wo genau das gefragt wurde. (Nur Murphys Law: Keine Ahnung wo das war...).
Im einfachsten Fall: Ausprobieren. (Natürlich erst dann, wenn die bisherige Hardware auch geht um zu testen, obs danach auch noch geht)

Für den Reset tuts ein Pullup mit 1k...10k. Wenn man ganz sicher gehen will: Noch nen 100n-Kerko dazu gegen Masse; aber den hab ich bisher noch nie gebraucht.


Nachtrag: Wie sind denn C1, C2, C6, C7 gepolt?
Wenns Elkos sind, ist deren Polarität hier wichtig.

Nachtrag 2: Kerko/Max232-Beitrag gefunden... https://roboternetz.de/phpBB2/viewtopic.php?p=471352

Basteltisch
01.12.2009, 16:13
Hallo,
habe jetzt die Pins sogar verlötet, aber auch am WindowsXP Laptop kommt kein Signal zurück.

Was gibt es dort noch für Fehlerquellen?

Dann werd ich nun wohl den USB Chip nehmen, hab ja zum glück einen.
Kann ich den eigendlich irgendwie auf einer Lochrasterplatine verwenden um damit zu testen oder ist da direkt eine Platine erforderlich? Die Pins scheinden mir etwas arg nahe beieinander zu liegen ...

Es grüßt,
Basteltisch

Jaecko
01.12.2009, 16:39
hm... der MAX 232 sollte eigentlich funktionieren, wenn er korrekt angeschlossen ist.
Wenn Rx/Tx direkt an der PC-Buchse verbunden werden und es geht nix, dann stimmt irgendwo bei der Schnittstelle was nicht.

Wie verhält sich denn T_Out vom MAX232 (Spannung), wenn du T_In manuell zwischen 0 und 5V umschaltest? Kommt da abwechselnd ne negative / positive Spannung raus?

Den FT232RL ohne direkte Platine zu verwenden wäre für mich eher nicht machbar. Man könnte zwar evtl. die benötigten Pins etwas hochbiegen und da nen dünnen Draht hinfummeln, aber mechanisch stabil ist das nicht wirklich. Wenn ich sicher wäre, dass das dann funktioniert würd ichs mit Acrifix eingiessen. Änderungen sind aber danach nicht mehr möglich.

Richard
01.12.2009, 17:45
Wenn Du pin 2 mit pin 3 verbunden hast und bei Hypertern kommt
die Eingabe nicht zurück, sind möglicheweise die Eiostellungen
falsch. Unter flußkontrolle muß Keine angeklickt sein. Bei XON/XOFF
wartet die Schittstelle auf ein XON vom "Gegenüber", bei CTS/DTS
auf ein Hatwaresignal das gesendet werden darf. Ansonsten 8 Bit
1 Stoppbit, kein Parytibit. Wenn es dann mit Brücke immer noch nicht
klappt, den Treiber löschen und neu installieren.

Gruß Richard

Basteltisch
02.12.2009, 18:50
Hallo,
@Jaecko: Ja das trifft zu , habs grade getestet.

@Richard: Danke. Habe mir mal Hyperterm geladen und die Einstellung entsprechend vorgenommen, leider ohne Erfolg. Habe aber auch sonst nichts für den Comport was ich nehmen könnte um zu sehen ob der Port überhaupt funktioniert.


Ich werde dann wohl warten müssen bis ich es hinkriege Platinen zu ätzen, um dort drauf den FT232RL zu platzieren und dann damit weiterzuprobieren. Dafür brauche ich erstmal eine Ätzküvette...
Projekte über Projekte, dabei mache ich das nichtmal Hauptberuflich ^^

@Jaecko: Die Kondensatoren sind alle richtig gepolt. Aber ich wusste garnicht dass Kondensatoren zu gross sein können. Ich dachte man nimmt immer die kleinen um Kosten zu sparen.

Dann werd ich mal auch noch kleine Kondensatoren bestellen.

Es grüßt,
Basteltisch

Jaecko
02.12.2009, 18:58
Naja Kosten sparen ist das eine.
Das andere ist aber, dass ein _zu_ grosser Kondensator einfach länger braucht, bis er auf ne bestimmte Spannung geladen ist. Je nach Anwendung kann diese Zeit schon zu lange sein.

Basteltisch
03.12.2009, 17:22
Hallo,
Es gab doch einen Erfolg: ich habe die Pins am Subd9 Stecker falsch angelötet, da ich die Pinnummern auf dem Stecker selbst nicht gesehen habe und mich an einem Bild im Inernet orientiert habe wo die 1 ganz woanders ist. Nun habe ich bei einem neuen Stecker Pin 2 und 3 überbrückt, udn auch auf Windows7 kriege ich nun die Zeichen in TerraTerm zurück. Als ich allerdings die Pins entsprechend an meiner Konstruktion umgelötet habe kahm das Signal vom UC wieder nicht durch. Die Kondensatoren sind wie folgt verlegt:

100u,f zwischen Pin 4 und 5, Minus zeigt nach pin5.
2,2uf zwischen Pin 1 und 3, Minus zeigt nach pin3.
100uf zwischen max232n.2 und VCC, minus zeigt nach vcc.
4,7uf zwischen max232n.6 und GND, minus zeigt zum Pin6.

Ist da etwas verkehrt?

Alternativ könnte ich Spontan Kerkos anbieten, die laut dem Link dort ja funktionieren (ber der SMD variante). Aber leider kann ich nicht genau nachfragen da ich dort nicht auf "antworten" klicken kann (dann bringt er mich zur startseite).


Es grüßt,
Basteltisch

Jaecko
03.12.2009, 19:54
Ein häufiger Fehler: Rx/Tx zwischen AVR und MAX232 bzw. MAX232 und Stecker vertauscht. (Passiert mir auch fast immer; genau so wie die vergessenen PullUps beim I2C).

Ansonsten wirklich nochmal abgesteckt von Hand die Pins schalten und am anderen Ende messen, ob der MAX232 beide Leitungen korrekt zwischen 0V/+5V <=> -12...-3V / +3...+12V wandelt.
Wenn die Kerkos 4x 100nF wären, kannst die ja auch mal testen, falls es mit der jetzigen Kombination nicht geht.

Basteltisch
04.12.2009, 18:21
Hallo,
in einem Thread habe ich gelesen das der Hersteller der MAX232 Chips in seinem Datenblatt sogar Kerkos empfielt.

Dann löte ich die mal anstelle der Elkos drann.

Meine Rx/Tx Leitungen sehen folgendermassen aus:

Attiny2313.Port2 (RXD) >> Max232n.Port12(R1Out)
Attiny2313.Port3 (TXD) >> Max232n.Port11(T1IN)
Max232n.Pin13(R1IN) >> Subd.Pin2
Max232n.Pin14(T1OUT) >> Subd.Pin3

Ist daran etwas verkehrt?

Es grüßt,
Basteltisch

Basteltisch
04.12.2009, 19:21
Ein Meilenstein ist errungen, die ersten Reaktionen des AVR an meinem PC :)

http://www.imgbox.de/users/Basteltisch/thumbnails/rs232_t.gif (http://www.imgbox.de/?pr=Basteltisch-rs232.jpg)

irgendeine Baudrate ist wohl noch falsch, das kenne ich von Cisco routern, das müsste leicht zu beheben sein, deswegen kommen da wohl diese Kästchen. Die Klartextschrift oben drüber stammt von mir als ich den Loopback getestet habe.

Das Problem war dass ich die Pins am SubD Stecker wiedermal vertauscht habe.

Vielen dank an alle die mir geholfen habe. Aber ich befürchte dass es noch nicht vorbei ist :(

Es grüßt,
Basteltisch

Jaecko
04.12.2009, 19:36
Falls die Baudraten richtig angegeben sind, prüf mal, ob die Angabe der CPU-Frequenz mit dem übereinstimmt, was in den Fuses eingestellt ist bzw. was der evtl. dranhängende Quarz hat.
Wenn die Angaben widersprüchlich sind, wird die Baudrate falsch berechnet.

Basteltisch
04.12.2009, 20:00
So zur Feier des Tages hab ich mich mal dem Problem des ständig wechselnden USB COM Ports angenommen:

Ist nicht die sauberste Art, aber funktioniert :)


Imports System
Imports System.IO
Imports System.IO.Ports
Imports System.Text

Module Module1
Dim mySerial(0) As SerialPort
Sub Main()
Dim Serial(50) As SerialPort

For i As Integer = 1 To 50
Serial(i) = New SerialPort("COM" & i, 9600)

Try
Serial(i).Open()
ReDim Preserve mySerial(mySerial.Length)
mySerial(mySerial.Length - 2) = Serial(i)
Console.WriteLine("COM" & i & " geöffnet")
AddHandler Serial(i).DataReceived, AddressOf ReadFromSerial
Catch e As Exception
End Try
Next
ReDim Preserve mySerial(mySerial.Length - 2)
While (True)
SendToAllSerial(Console.ReadKey(True).KeyChar)
End While

End Sub
Sub SendToAllSerial(ByVal txt As String)
For i As Integer = 0 To mySerial.Length - 1
mySerial(i).Write(txt)
Next
End Sub

Public Sub ReadFromSerial(ByVal sender As Object, ByVal e As EventArgs)
Dim sIn As SerialPort = sender
Dim sData As String = sIn.ReadExisting
' Console.WriteLine("[" & sIn.PortName & "]" & sData)
Console.Write(sData)
End Sub

End Module

Basteltisch
04.12.2009, 20:34
Hallo,
also die Fuses stehen meiner Meinung nach korrekt:
http://www.imgbox.de/users/public/thumbnails/x7219v125_t.gif (http://www.imgbox.de/?img=x7219v125.jpg)
Oder liege ich da falsch?

Ich probiers mal mit Kerkos.

Es grüßt,
Basteltisch

edit: So Kerkos sind drann, keine Veränderung, schickt immernoch ASCII 0 durch die Leitung ^^ Aber immerhin ist es nicht schlechter geworden.

Gibt es da noch mehr Fehlerquellen die ich missachtet haben könnte?

Jaecko
04.12.2009, 22:57
Also Fuses passen so.
Nachdem am Terminal auch was ankommt, scheint auch der Weg vom AVR über den MAX zum PC zu funktionieren.
Kannst du mal das Bascom-Programm noch hier anhängen? Evtl. hat da noch irgendwo ne Zeile nen Schalk im Nacken.

Basteltisch
05.12.2009, 08:35
Hallo,
der Code ist:


$regfile = "2313def.dat"

$crystal = 8000000

$baud = 9600

Declare Sub Blink()
Config Portb.0 = Output
Statusled Alias Portb.0

Statusled = 1

Do
Blink

Print "test"
Loop

Sub Blink()
Statusled = 0
Waitms 20
Statusled = 1
End Sub

Danke für deine Hilfe.

Jaecko
05.12.2009, 13:50
HA! Verdammt, jetz seh ichs erst:
Fusebit C: Divide clock by 8 is ja aktiv...
Schalt das Ding mal aus, dann läuft der auch mit 8 MHz statt 1 MHz und die Baudrate passt wieder... oder andersrum: Wenn du am PC auf 1200 Baud runtergehst, müsste es auch funktionieren.

Basteltisch
05.12.2009, 14:25
Juhu vielen vielen Dank, es funktioniert, es spricht :)

http://www.imgbox.de/users/Basteltisch/serialwatch.jpg


Ist dieses divide by 8 eine default Einstellung oder habe ich das wohl mal in der verzweifelten Hoffnung auf Besserung eingestellt?

Dann kann der Thread ja ins Unterforum "fertige Projekte" verschoben werden ^^


Nochmal vielen Dank an alle die geholfen haben, vorallem an dich Jaecko.

Jetzt kann ich mich endlich in aller Ruhe dem Ätzen widmen.

Es grüßt,
ein glücklicher Basteltisch

Jaecko
05.12.2009, 14:32
Ob das Standard aktiv ist, weiss ich garnicht. Aber dieses Ding ist genau so ne Stolperfalle wie das von Werk an aktivierte JTAG beim ATMega32 & Co... wie oft ich mich da schon auf die Schnauze gelegt hab...

Richard
05.12.2009, 15:18
Freut mich das es endlich geklappt hat! Ich bin auch gerade mit
der Seriellen am Basteln. Habe mir so ein Vilcom usb zu rs232
besorgt. Das hängt jetzt an der 2 seriellen (pott c), an der ersten Port D)
der PC. Dann ein kleines testprogramm welches uber den Mega16
einen usb Stick mit dem PC verbindet so das ich die usb Befehle
über ein Bascom Programm testen kann. Klappt super, damit ist
Datenspeicherung auf usb kein Problem mehr und zum Auswerten
wird der stik halt einfach in den PC gesteckt. :-)

Der USB Adapter (Master) kann auch i²c Bis 12 Mhz, damit habe
ich unter Bascom noch nichts gemacht, werde das aber sicher auch testen.

Gruß Richard

Basteltisch
05.12.2009, 16:38
ui das klingt ja sehr interessant. Vorallem für grössere Messreihen bei denen so eine normale Speicherkarte nicht ausreicht. Wieviel Ah zieht denn ein USB Stick?

Richard
06.12.2009, 09:01
ui das klingt ja sehr interessant. Vorallem für grössere Messreihen bei denen so eine normale Speicherkarte nicht ausreicht. Wieviel Ah zieht denn ein USB Stick?

Kann ich leider nicht messen, die Anzeige vom Netzgerät geht bis 3 A
und zeigt quasie nichts an, muß also sehr gering sein. An mein Messgerät
komme ich heute nicht mehr ran....

Gruß Richard

Basteltisch
15.12.2009, 15:53
So als kleine ergänzug noch dazu: um mehr Geräte anschliessen zu können werde ich den Input für den Max232 nun per Diode von den TX-RX Leitungen des aktuellen installierten Attinys (welcher später zur anbindung an das Funknetz diehnt), eines LAN Anschlusses welcher auf die TX-RX Leitungen geht, und eines simplen 4Pol-Steckverbinders, damit eine skalierbarkeit für spätere Projekte gegeben ist und ich den ganzen Aufbau mit dem Max232 nicht noch einmal für Schaltungen machen muss die nicht ständig auf eine RS232 Verbindung angewiesen sind.

Strom Liefert in diesem Fall auch das LAN Kabel (POE ^^) bzw der Steckverbinder. Für den reinen Funk-Empfangsbetrieb hat die Schaltung einen festmontierten Hohlstecker, für welchen ein USB Kabel bereit liegt.

Sobald ich mich an den FTL Chip heranwage (erst Ätzen, doch das wird dauern) gibts ein 2tes Verbindungsboard.

Es grüßt,
Basteltisch