Lieber Besucher, herzlich willkommen bei: RCLine Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

o.dippel

RCLine User

Wohnort: Büdingen / Hessen

Beruf: Software-Developer

  • Nachricht senden

61

Montag, 25. Januar 2010, 20:13

Sorry,

ein Byte Typ (z.B. 1 = Text-Nachricht anzeigen, 2 = Geber-Wert setzen,3 = Geber-Wert lesen, ...)
ein Byte Adresse Adapter:
ein Byte Adresse Schalter:
ein Byte Wert Schalter/Poti (0 bis 255)
ein Byte Check-Summe

muss !

62

Montag, 25. Januar 2010, 20:36

Hallo,

was mir gerade einfällt: wie unterscheidet dann der Empfänger, mit welchem Byte die Übertragung startet?
Kommt der STM32 mit 9-Bit-Übertragung zurecht?

viele Grüße,
Hermann

o.dippel

RCLine User

Wohnort: Büdingen / Hessen

Beruf: Software-Developer

  • Nachricht senden

63

Montag, 25. Januar 2010, 20:39

zwei Byte Frame-Start: (255, 255)
ein Byte Typ (z.B. 1 = Text-Nachricht anzeigen, 2 = Geber-Wert setzen,3 = Geber-Wert lesen, ...)
ein Byte Adresse Adapter:
ein Byte Adresse Schalter:
ein Byte Wert Schalter/Poti (0 bis 255)
zwei Byte Check-Summe

:nuts:

PS: bitte kein 9bit !

64

Montag, 25. Januar 2010, 22:26

Zitat

PS: bitte kein 9bit !

wer bremst, hat Angst ;)

ne, seh ich ein...
was für ne Checksumme hättest Du gerne?
Am liebsten wär mir ne fertige Funktion :)
Win-AVR bringt <util/crc16.h> mit, vl. findet sich da was...
bis jetzt hatte ich mal
_crc_ibutton_update();
benutzt.
Dann sollten wir uns noch ein Schema für die Adressen überlegen...
bzw, wie sollen die Adressen der Adapter eingestellt werden?
2-Pol dip-schalter? Oder brauchen wir mehr als 4?

nächste Frage:
was für ein Stecker für das "Bus-Kabel"? Ich schlage ein 4-Poliges Flachbandkabel mit Micro-Match-Steckern von (sowas ) vor, dann kann man einfach in den passenden Abständen Stecker draufmachen, und schön kompakt ist es auch...

viele Grüße,
Hermann

65

Sonntag, 31. Januar 2010, 12:59

Hallo,

hab jetzt mal ein kleines Schalterboard gebaut, anbei mal die Eagle-Dateien.
Als MC ist dort ein Mega88 vorgesehen, es kann aber auch problemlos ein Mega8 verwendet werden, falls noch jemand Restbestände hat :)
aktuell sind maximal 10 Schalter vorgesehen, 4 davon können durch Potis ersetzt werden.
an die Software werde ich mich mal dransetzen..

viele Grüße,
Hermann
»hoppppla« hat folgende Datei angehängt:
  • schalterboard.zip (23,96 kB - 18 mal heruntergeladen - zuletzt: 10. April 2014, 11:47)

o.dippel

RCLine User

Wohnort: Büdingen / Hessen

Beruf: Software-Developer

  • Nachricht senden

66

Montag, 1. Februar 2010, 10:56

Hi Hermann,
schaut super aus !!
könntest du aber bitte noch 2 4Pol JST-Stecker drauf setzten, das währe mir als Bus-System-Verbinder lieber,
und dann von Platine zu Platiene immer durchschleifen.
Sost haben wir wieder ein neues Stecksystem mehr.

Als CSUM nutze ich auch immer crc16 !

:w

67

Montag, 1. Februar 2010, 12:47

Hallo Olli,

Zitat

könntest du aber bitte noch 2 4Pol JST-Stecker drauf setzten, das währe mir als Bus-System-Verbinder lieber

hm, wo kann man das sinnvoll und günstig kaufen?
Bisher hab ich für diese Stecker noch keine Quelle (mal abgesehen von Farnell, Digikey, usw.) gefunden, vorallem braucht man für das Erstellen von Kabel wieder eine Krimpzange :(
die Micromatch-Stecker haben da Vorteile:
günstig: 0,23EU pro Stecker/ Buchse
für jeden einfach zu erwerben.. (->Reichelt)
Sehr einfache Kabelherstellung: Stecker einfach aufs Flachandkabel aufdrücken, keine Krimpzange nötig, nur ein kleiner Schraubstock...
Ausreichen klein (ok, Ansichtssache :) ), vorallem sehr flach..
Auch als SMD-Variante erhältlich, wenns mal eng wird..
Nachdem auf dem FM6014-Board bis jetzt nur die "normalen" Servostecker verwendet werden, bin ich auf diese Stecker gekommen...

zum Thema CRC:
hab mal in die AVR-libc reingeschaut, und folgende Funktion gefunden:

Optimized CRC-16 calculation.
Polynomial: x^16 + x^15 + x^2 + 1 (0xa001)
Initial value: 0xffff
This CRC is normally used in disk-drive controllers.
The following is the equivalent functionality written in C.

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
uint16_t  
crc16_update(uint16_t crc, uint8_t a)  
{  
    int i;  crc ^= a;  
    for (i = 0; i < 8; ++i)  
    {  
        if (crc & 1)  
            crc = (crc >> 1) ^ 0xA001;  
        else  
            crc = (crc >> 1);  
    }  
    return crc;
}


passt das soweit?

viele Grüße,
Hermann

o.dippel

RCLine User

Wohnort: Büdingen / Hessen

Beruf: Software-Developer

  • Nachricht senden

68

Montag, 1. Februar 2010, 12:57

Hi,
jepp die CRC16 -Funktion passt so !

Wo man die JST's bekommt weiß ich jetzt auch nicht auf die schnelle, mal Ralf fragen !

War auch nur so ne Idee, wenn es zusätzlich drauf passt währe schön ansonsten bleib bei deinen Verbindern !

:w

PS: wird wohl nicht passen, aber eine Alternativ-Bestückung der Schalter mit Encodern währe auch nett (halt ohne taster) :nuts:

69

Montag, 1. Februar 2010, 13:15

Hi Olli,

Zitat

eine Alternativ-Bestückung der Schalter mit Encodern währe auch nett (halt ohne taster)

hm...
von der Geometrie her kein so großes Problem, die Encoder ohne Taster passen genau in das Layout der Potis (ALPS sei dank :) ).
nur mit der Anbindung an den MC wirds dann echt schwierig...
könnte man sich nur überlegen, ob man das an Stelle der Potis vorsieht...
Die wiederum den Vorteil haben, sehr viel günstiger zu sein....
Wobei man sich bei der Variante mit Encodern die Beschaltung für den AD-Wandler sparen könnte...
Weis grad net, was mir da lieber ist...

viele Grüße,
Hermann

EDIT: war ein wenig zu voreilig, die Encoder sind etwas breiter...
mal sehen, obs trozdem gehen würde...

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »hoppppla« (1. Februar 2010, 13:26)


70

Montag, 1. Februar 2010, 14:30

Hallo Hermann,

die JST Stecker gibt es bei Segor, oder bei mir :)
Von 3 bis 8 polig habe ich nahezu alle vorrätig.

Aber Du hast schon recht, für die Kabel braucht man eine Crimpzange.
Für "kleine" Mengen kann ich die Kabel gerne anfertigen, für größere Mengen wird sich auch noch ein Weg finden (müssen).

Trotz dieses "Nachteiles" empfinde ich das Stecksystem als äußerst praktisch. Das habe ich jetzt bei allen Empfängern verwendet, darüber hinaus auch beim MC4000mod Board und beim USB-TTL Wandler. Alle Boards sind da jetzt aufeinander abgestimmt. Beim FM6014 Board hatte ich die ebenfalls bereits zusätzlich eingefügt. Die Version hatte ich Dir ja Ende letzten Jahres zugeschickt.
Einige Hersteller verwenden ja bereits dieses System, und ich denke das wird sich weiterhin verbreiten.

In der Eagle "rcos-lib" sind die Stecker enthalten. Wenn ich Zeit habe, werde ich die SMD Variante noch zufügen. Die wird für den RX12 in der "endgültigen" Ausführung sowieso erforderlich.

Grüße

Ralf

71

Montag, 1. Februar 2010, 17:18

Hallo Ralf,

hast Du die Lib irgendwo online? find sie grad nicht :(
hab grad mal geschaut, die Teile gibts auch bei Farnell, da sind die Preise sogar erstaunlich moderat... was mir immer noch nicht gefällt, ist die nötige Crimpzange...
Für die "normalen" Steckverbindungen seh ich durchaus den Vorteil der JST-Stecker, aber für Buskabel würde ich wirklich die Mircomatch-serie vorschlagen.
Auch wenns ein "zusätzliches" Stecksystem ist... Zusätzlichen Aufwand machts so gut wie nicht, da ganz normales Flachbandkabel verwendet werden kann, und die Stecker einfach auf die Reicheltliste mit wandern können...
Im Nachhinein hätte ich das System auch gern für die Verbindung zum Display benutzt, da es doch ein Stück handlicher ist als diese 2,54mm Wannenstecker.
Aber wie die nächste Version des FM6014-Boards aussieht müssen wir eh noch ausdiskutieren ;) dafür fehlt mir leider im Moment die Zeit :(

viele Grüße,
Hermann

72

Montag, 1. Februar 2010, 22:06

Hallo Hermann,

ich hatte auch mal mit dem Gedanken gespielt, die MicroMatch Stecker einzusetzen.
Dazu hatte ich mir auch mal Muster bei Reichelt mit bestellt, sehen "niedlich" aus. Vom eigentlichen Layout hatten die aber gar nicht so viel Platz gespart, sodass ich die wieder gegen normale ersetzt habe. Wenn Flachbandkabel verwendet werden soll, würde ich da aber auch wieder ins schwanken kommen.
Ansonsten kommt mir nur noch JST Stecker ins Haus :)

DIe aktuelle lib habe ich noch mal angehängt.

Grüße

Ralf

P.S.: Bei Segor kostet die Crimp Zange "nur" etwas mehr als die Hälfte, ist aber immer noch ein Wort.

/edit: Anhang vergessen, ist ja schon wie beim mailen :(
»elral« hat folgende Datei angehängt:
  • rcos.lbr.zip (29,93 kB - 5 mal heruntergeladen - zuletzt: 10. April 2014, 11:47)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »elral« (1. Februar 2010, 22:07)


73

Montag, 1. Februar 2010, 22:22

Hallo Hermann,

bei der Steckerbelegung habe ich immer folgendes benutzt:
1 = GND
2 = RX
3 = TX
4 = Vcc

Kann man beim CAN Bus eigentlich RX/TX CAN_H/CAN_L fest zuordnen?

Wäre ganz gut, wenn Du Dich bei der Versorgungsspannung da anschliessen könntest, ggf. auch für CAN_H/CAN_L.

Die Leiterbahnlänge für die Entstörkondensatoren der Schalter ist wirklich minimal :) Kürzer gehts nimmer ;)

Danke und Grüße

Ralf

74

Dienstag, 2. Februar 2010, 08:12

Hallo Ralf,

vielen Dank für die Lib :)

Zitat

Vom eigentlichen Layout hatten die aber gar nicht so viel Platz gespart

na ja, die Bohrungen brauchen ähnlich viel Platz, das Gehäuse ist dafür sehr viel kleiner, d.h. man kann die Bauteile viel näher an den Stecker setzen.

Wenn die Crimpzangen nicht so teuer wären, wä ich bei den JST-Stecker gleich dabei.. aber hauptsächlich bei max vl. 5-poligen Verbindungen.

Zitat

Kann man beim CAN Bus eigentlich RX/TX CAN_H/CAN_L fest zuordnen?

nein, CAN ist Half-Duplex, da es sich ja um ein differentielles Signal handelt. Sonst würde man nochmal zwei Leitungen mehr benötigen.
Die Belegung der Versorgungsspannung werd ich übernehmen.

viele Grüße,
Hermann

75

Dienstag, 2. Februar 2010, 12:44

Hallo Hermann,

wie gesagt, die Crimpzange hätte ich. Kabel in kleinen Mengen konfektionieren ist auch kein Problem. Ich denke der Bedarf hält sich momentan in Grenzen.
Für größere Mengen lass ich mir etwas einfallen, dauert nur da ich momentan mit anderen Sachen beschäftigt bin.

Was mir noch einfällt, beim Flachbandkabel musst Du vorher wissen wie lang es sein soll. Dazwischen Stecker aufpressen ist natürlich kein Poblem. Nur wenn es länger werden soll muss das Kabel neu gemacht werden.
Ist aber auch kein richtiges K.O. Kriterium

Grüße

Ralf

o.dippel

RCLine User

Wohnort: Büdingen / Hessen

Beruf: Software-Developer

  • Nachricht senden

76

Dienstag, 2. Februar 2010, 12:52

Hi,
mein Problem mit dem Flachband ist auch,
das ich nicht von anfang an ein evig langes kabel in der funke will !
Durchschleifen ist mir lieber !!!

:w

77

Mittwoch, 3. Februar 2010, 07:56

Hallo zusammen,

ich traue mich ja fast nicht zu fragen, aber warum wird der CAN-Bus genutzt und nicht I2C? Bei der zu erwartenden Länge sollte es doch keine Probleme geben, und für den I2C gibt es fertige Port-Erweiterungn. Da müßte man noch nicht einmal einen ATmega einsetzen/programmieren.

Grüße

Ralf

78

Mittwoch, 3. Februar 2010, 09:54

er hat JEHOVA gesagt.... ;)

was hier genutzt wird, ist ja nicht ein richtiger CAN-Bus, sondern nur dessen Physikal-Layer mit einem einfachen UART-Protokoll.
Die Störungsfestigkeit von I2C ist doch eher bescheiden (und z.B. ein 40Mhz HF-Teil macht schon hübsche Störungen :) ), und die besagten Port-Erweiterungen sind sehr viel unflexibler als ein MC.
An den MC können im Prinzip beliebige Eingabegeräte gehängt werden.

viele Grüße,
Hermann

o.dippel

RCLine User

Wohnort: Büdingen / Hessen

Beruf: Software-Developer

  • Nachricht senden

79

Sonntag, 28. Februar 2010, 16:19

Hi Leute,
hab die Serial/Canbus Sache einfach mal 'ScBus' getauft und Implementiert.

Die 'Nodes' Senden bei Änderung eines Schalter/Poti/Encoder Wertes ein Befehl an die rCOS,
diese antwortet mit einem ACK, wenn nicht wird nochmal gesendet (max 3x).

Ein Test-Programm für einen AtMega8 hab ich auch dazu gepackt, muss aber noch angepasst werden (auf Hermann's Layout), da im Moment nur ein Schalter abgefragt wird.

Mit der genauen Kanal Zuordnung müssen wir uns noch was Überlegen, im Moment ist der 1. Schalter/Poti (ID0) auf rCos-Channel 32 (ID1=33,ID2=34,....) gesetzt.

:w

ScBus: http://www.rcos.eu/test/rcos/driver/serial/scbus/index.html
mod6014-Update: http://www.rcos.eu/test/rcos/targets/mod…kend/index.html

PS: Der ScBus-Jumper auf der mod6014 muss offen bleiben !

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »o.dippel« (28. Februar 2010, 16:21)


80

Montag, 1. März 2010, 12:39

Hi Olli,

das sieht bei Dir doch etwas professioneller aus... :)
macht Deine Lib (scbus.c/.h) auch schon den passenden Init für den UART?
bzw. wie funktioniert das mit dem Empfangen?
Es wäre schön, wenn Du da noch ein bisschen Doku dazu erstellen könntest :)
bzw. einfach die Schnittstellen erklären...

Dann würd ich mich nämlich mal bei Gelegenheit hinsetzen, und ein passendes Programm für den Mega8 schreiben, das einfach, sobald sich an den Schaltern/Potis was tut, die Daten über Deine Lib rausjagt.

Die Schalternummerierung sollten wir auch noch festlegen, am besten im Wiki.

viele Grüße,
Hermann