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.

21

Mittwoch, 4. Juli 2007, 17:11

ich bin über noch ne seite gestoßen:

oszipics

22

Sonntag, 13. Juli 2008, 18:06

Hallo Leute,

ich hol den Threat hier wieder mal hoch.
Wenn noch interesse an einem Nautic Sendemodul für G... besteht, ein Co Entwickler und ich haben uns vorgenommen so etwas jetzt endlich zu realisieren.

Ich werde jetzt hoffentlich in den nächsten Tagen das seit einem Jahr !!! von G... nicht lieferbare Nautic Sendemodul in die Finger kriegen und dann mal ein paar Messungen vorzunehmen.

Wenn alles soweit klappt wird es in ein paar Wochen schon die ersten Ergebnisse geben.

Als Basis der Schaltung wird ein ATMEL AVR Controller zum zug kommen ( was auch sonst ). Es wird vermutlich ein ATMEGA 8 sein, ein ATtiny 26 ist aber auch im Gespräch..

Wenn es gewünscht wird, werde ich unsere Ergebnisse Zug um Zug hier im Forum veröffentlichen um eventuell auch anderen Entwicklern eine Chance für eine Eigenentwicklung zu geben.

So wie ich dann Torsten kenne wird er bereits Wochen vor uns was fertiges in der Schublade haben ;-)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »wkrug« (13. Juli 2008, 18:07)


23

Sonntag, 13. Juli 2008, 20:23

Hallo Wilhelm,

da würde ich mich riesig freuen, wenn dieses Projekt hier im Forum durchgeführt bzw. vorgestellt wird! Leider bin ich Atmel-mäßig grade in anderen Gefilden unterwegs (Fahrtregler, Modelleisenbahn...), daher fehlt mir einfach die Zeit, auch noch daran mitzuwirken. Aber viele Köche verderben ja bekanntlich den Brei, von daher seid ihr zu zweit sicher gut besetzt.

Da ich ein solches Modul im Graupner-Sender habe, bin ich aber gerne bereit, euch mit Messungen und sonstigen Infos zu unterstützen. Oszilloskop habe ich aber leider nicht...

Grüße

Torsten
[SIZE=4]www.zuendapp.net - die grösste Zündapp-Community im Internet! :ok:[/SIZE]

24

Sonntag, 13. Juli 2008, 21:14

Zitat

...daher fehlt mir einfach die Zeit, auch noch daran mitzuwirken. Aber viele Köche verderben ja bekanntlich den Brei, von daher seid ihr zu zweit sicher gut besetzt.

Dazu wollte ich Dich auch gar nicht überreden.
Was Dich freuen wird, mei Co Entwickler will das Projekt in BASCOM durchziehen.
Ich hab den Schaltplan und Layout Part.

Schade das Du kein Oszi hast, sonst könntest Du uns wirklich einen großen Schritt weiter bringen.

Dann muss ich halt mal warten bis mein Modellfliegerkollege sein Nautic Modul hat.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »wkrug« (13. Juli 2008, 21:15)


25

Sonntag, 17. August 2008, 09:47

Es gibt was neues.
Ich meine ich habe die Funktionsweise des G.... Nautic Sendemoduls entschlüsselt.

Auf dem Eingang Sync auf Pin 1 müssten die Impulsketten die an das HF-Modul gehen anliegen.
Also die Kanalinformationen der Geber.
Diese Impulse werden im Nautic Modul durch 8 geteilt, man erhält somit einen Rahmentakt, da ja 8 Geberinformationen übertragen werden.
Mit diesem Rahmentakt wird ein weiterer BCD Zähler hochgezählt der dann nacheinander die Informationen der 8 Schalter auf den Signaleingang eines Geberanschlusses legt.
Ist ein Schalter offen wird 1/2 * + Versorgungsspannung angelegt.
Ist ein Schalter in oben Position wird diesem Spannungsteiler ein Widerstand gegen +V zugeschaltet.
Ist ein Schalter in unten Position wird ein anderer Widerstand gegen GND an den Spannungsteiler angelegt.
Die letzten beiden Rahmentakte 9 + 10 legen dann den Gebereingang direkt an die + Stromversorgung = Sync Impuls Erzeugung.
Der orange Draht des Gebersteckers führt die +V ( Die höhe der Spannung weiß ich noch nicht genau )
Der rote Draht führt die Geberinformation.
Der Braune Draht ist mit GND verbunden.
Der gelbe Draht hat anscheinend keine Funktion.
Der Orange Draht des Multi Anschlusses müsste die Kanalinformation übertragen.

Ich werd das mal Oszillografieren, dann folgen weitere Informationen.

Ich Denke mal auf Basis dieser Informationen können unsere Controller Programmierer aktiv werden.
Die Frage mit der Höhe der Spannung an den Gebern müsste noch geklärt werden.

Meine Idee wäre den Spannungsteiler am Gebereingang durch ein digitales Poti zu ersetzen. Dann könnten auch Servoinformationen gesendet werden, wenn man den Empfängerbaustein modifiziert.

@Torsten
Du hast PN !

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »wkrug« (17. August 2008, 09:48)


Dante

RCLine User

Wohnort: Rheinknie

  • Nachricht senden

26

Sonntag, 17. August 2008, 10:15

Wilhelm,
bitte daran denken, dass die 2.4GHz Funken mit den "alten Modulen" meisten nicht funktionieren. Die Module, welche die PPM abgreifen tun, haben aber hohe Latenzzeiten (PPM-Frame).
Die reinen 2.4GHz Sender arbeiten z.T. mit wesentlich höheren internen Frequenzen, was mit den langsamen Nautic-Modulen nicht harmoniert.

Möglicherweise muss man da etwas weiter denken...

Leo
Trollfilter: Ein

27

Sonntag, 17. August 2008, 23:17

@Leonardo

Zitat

bitte daran denken, dass die 2.4GHz Funken mit den "alten Modulen" meisten nicht funktionieren

Das ist mir schon klar. Haben denn diese 2,4GHz Funken überhaupt die Möglichkeit ein Nautic Modul einzubauen ?
Wenn nur das HF- Modul getauscht wird sollte es funktionieren ?!
Das mit diesen Nautic Modulen funktioniert ja noch nicht mal, wenn der Sender im PCM Modus betrieben wird, da die Original Module aus einem PCM Signal keinen Frame Takt ableiten können.
Mit einem Microcontroller dürfte das machbar sein, wenn der Rahmenaufbau des PCM Signals bekannt ist und sich z.B. ein "Startbyte" identifizieren lässt.
Im Fail Save Fall kann es ohnehin überhaupt nicht mehr funktionieren.
Graupner sendet aber, soweit ich weiß, die oberen Kanäle des Senders nicht in jedem PCM Frame mit, was die Geschichte sicher nicht vereinfacht.
Der ganze Knackpunkt an dieser Multiswitch Geschichte ist es ein Singnal zu finden, aus dem man einen Rahmentakt ableiten kann.
Also ein Signal, das einem angibt, wann alle Geber einmal komplett übertragen wurden.
Kannst Du mir so einen Punkt in einer 2,4GHz Anlage nennen, wird man auch ein Nautic Modul da drin betreiben können. Mit welchem Frametakt die Anlage dabei arbeitet ist erstmal zweitrangig, so lange die Frametaktrate unter ca. 1KHz liegt.
Wenn es von den Spannungswerten her passt, möchte ich auf jeden Fall einen Microcontroller dafür einsetzen, bei dem man bei Bedarf die Software anpassen kann, ohne die Hardware zu ändern.

Als ein weiteres Problem könnten sich die Empfänger entpuppen.
Wird im Empfänger eine Impulsbewertung durchgeführt, könnte es sein das ein Servoimpuls maximaler Länge, gefolgt von einem Impuls minimaler Länge ( Sowas ist bei den heutigen Nautic Modulen normal ) als Fehler interpretiert wird und der Impuls deshalb verworfen wird.
Das Ergebnis dürfte sein, das ein angeschlossenes Nautic Empfängermodul nicht funktioniert.
Aber diese Probleme existieren auch jetzt mit den Original Modulen schon.

Dante

RCLine User

Wohnort: Rheinknie

  • Nachricht senden

28

Montag, 18. August 2008, 11:10

Hallo Wilhelm,
Du hast in einfachen Worten die ganze Problematik erschlagen... :ok:

Mit den AR/BR6000 (DSM) an meinen Spektrumsendern tut alles trotz Failsafe.
Egal ob mit der DX6 oder einem Modul. Allerdings Latenzzeiten wie mit PPM und "nur einfaches" DSM.

Bei den DSM2-Modulen von Spektrum an meiner MC15 ist's problemlos, allerdings übernehmen die nur HF-seite Arbeit :O entsprechend ist die Latenzzeit halt auch PPM mässig.
Mein AR7000 (DSM2) tut mit diesen senderseitigen Modulen auch. Mit der DX7 hatte ich's nie probiert, weil halt kein Pultsender und keine Ausbaumöglichkeiten.

Bei den Futaba Empfängern spielt die Failsafe Musik im Zwischentakt (siehe freds).
Bei den reinen 2.4GHz Funken sind die gesendeten Frames insgesamt nur ein paar Millisekunden lang. Die interne Aufbereitung je nach Hersteller und Modell unterschiedlich.

Ich kann Die einen LP5DSM (Spektrum DSM2 Sender mit ATMega 8 Signalgenerator) Sender und einen passenden Empfänger zum Rumspielen und Testen zur Verfügung stellen.
Futaba habe ich nichts rumliegen. Die dürften aber, aufgrund des Failsafeprinzips eher schwieriger sein.

Leo
Trollfilter: Ein

29

Montag, 18. August 2008, 17:58

Bei Futaba im PPM Modus sollte es eigentlich auch funktionieren.
Wenn man den Sender ( auch Graupner ) in PCM betreibt geht es sicher nicht mehr.

Mein Vorschlag wäre erstmal ein 100% Ersatz für die käuflichen Sendemodule zu haben, weil die 4108 Erstmal ziemlich Teuer- und zum Zweitens fast nicht zu kriegen sind.


Die Entwicklung wird ( Spannungsproblem ?! ) auf einem Controller fussen.
Die Latenzzeiten sind nun mal so wie sie sind, also max ca. 200ms von Aktion bis Reaktion.
Das Schlagwort heisst hier leider Kompatibilität.

Ziel wäre es die Module auch im PCM Modus der Fernsteueranlage zum laufen zu kriegen.
Vorerst soll es aber blos ! mal ein einfacher Ersatz werden.
Der Rest ist ja dann nur noch Software. Eine ISP soll auf jeden Fall auf das Modul mit drauf.

Eine weitere Idee wäre auch 8 analoge Servosignale zu übertragen.
Mit einem modifizierten Empfängerbaustein, sollte auch das möglich sein.

Das alles sind vorerst nur Spinnereien, zuerst muss mal das Grundgerüst stehen.

30

Montag, 18. August 2008, 20:17

Hallo Wilhelm.

der Decoderbaustein in der Atmel-Ecke bietet durchaus diese Möglichkeiten, weil er ja das Signal mit einem Mega 8 decodiert.
Da lassen sich natürlich auch Servosignale ableiten, sei es von den Schaltern oder von einem neuentwickelten Modul mit Schalter/Poti-Kombinationen.

Die Anpassung an andere Signalfolgen sollte auch rein auf der Software-Ebene lösbar sein, wenn der Frame bekannt ist.
Bei Graupner erkennt man das Ende bzw. den Anfang der Übertragung an den zwei langen Sync-Pulsen hintereinander.

Grüße

Torsten
[SIZE=4]www.zuendapp.net - die grösste Zündapp-Community im Internet! :ok:[/SIZE]

31

Mittwoch, 20. August 2008, 00:16

!!!!! Dieser Post hat sich erledigt, weil es anscheinend auch so funktioniert !!!!!!

Zitat

Bei Graupner erkennt man das Ende bzw. den Anfang der Übertragung an den zwei langen Sync-Pulsen hintereinander.

Du weisst, das ich das schon wusste ;-)
Ich bin zur Zeit auf der Suche nach einer genauen Beschreibung des ( alten ) Graupner PCM Frames.
Bis jetzt hab ich das hier gefunden:
http://www.aerodesign.de/peter/2000/PCM/PCM_PPM.html
http://www.aerodesign.de/peter/2000/PCM/pcm_systeme.gif
Aber darauf kann man weder erkennen wie die Synchronimpulse aufgebaut sind, noch wie viele Bits da pro Frame übertragen werden.
Um da für den gewünschten Kanal ein passendes Framesignal zu generieren muss man vermutlich das komplette Frame decodieren, da hierbei nicht alle Kanäle ständig übertragen werden und es auch bevorzugte Kanäle gibt.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »wkrug« (20. August 2008, 20:16)


32

Mittwoch, 20. August 2008, 19:16

Mein Modellfliegerkollege war gerade mit seiner MC16 und eingebautem Nautic Modul hier.
Ich habe bis jetzt folgende Ergebnisse.
Das Nautic Sende Modul hat 2 Stecker.
Einen 5poligen der auf einen Gebereingang der Anlage gesteckt wird.
Anschlußbelegung:
1. Orange > +5V
2. frei
3. Rot > Geber Eingang
4. Gelb > nicht beschaltet
5. Braun > GND

Am Sync Eingang liegen auf Pin 1 die Sync Impulse an.
Diese sind zum Sync Ausgang auf dem Nautic Modul durchgeschleift.

Die Sync Impulse sind folgendermassen aufgebaut.
........111111111110101011111101011111101011111110111111111111111......
Es werden also 8 Impulse, die von Ruhelage 1 nach 0 gehen generiert.
Nach dieser Impulskette wird die Information des nächsten Multiswitch signals angelegt.
Dieses Sync Frame wird alle ca 20ms übertragen.
zwischen dem letzten 101 wechsel und der Übergabe der Kanäle an das HF Modul vergehen 7,5ms.
So ein Sync Impuls als solches hat eine Länge von 60µs.
zwischen den Impulspaketen ist eine Pause von 350µs.

Die Nautic Informationen können folgende Pegel annehmen.
Sync. = +4,7V
Schalter oben = +4V
Schalter Mitte = 2,4V
Schalter unten = 0,8V

Anscheinend hat hier Graupner einen umschaltbaren Spannungsteiler verwendet.

Die Werte sind so genau, wie es mein Oszi hergegeben hat. Messtoleranzen sind natürlich drin.

Noch was - das Timing ändert sich nicht bei PCM Betrieb.
Also sollte auch eine Übertragung der Impulse mit PCM möglich sein.
Wer so ein Modul hat, möge das bitte testen.

Eine andere Anlage als eine MC 16 hatte ich leider nicht zum testen.
Wer eine G........ Anlage hat in die man ein Nautic Modul einbauen kann, soll doch bitte mal die Spannung an den Gebereingängen ( Stift 1 und 5 ) nachprüfen, ob die auch dort 5V beträgt.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »wkrug« (20. August 2008, 20:13)


33

Montag, 25. August 2008, 20:16

Hallo Leute,

ich hätte vor, unser Multifunktions Sendemodul hardwaremässig so aufzubauen, wie im Bildanhang.
Hat noch jemand Verbesserungsvorschläge ?
»wkrug« hat folgendes Bild angehängt:
  • Nautic_send.gif

34

Mittwoch, 15. Oktober 2008, 11:57

Hallo Wilhelm,

wie weit bist du mit dem sendemodul??
da mir die graupner erweiterungsmodule auch zu teuer sind, suche ich gerade nach genau so einer avr-encoder-schaltung. der hoffentlich passende decoder ist ja schon auf eurer webseite zu finden.

zur schaltung:
ist der i2c-poti schnell genug, und überhaubt nötig?
hier: http://home.arcor.de/claus.poltermann/ms8/ms8.html is zwar mit pic realisiert, aber der ausgang wird direkt verwendet..

35

Mittwoch, 15. Oktober 2008, 22:29

@testerjoe

Zitat

wie weit bist du mit dem sendemodul??

Morgen krieg ich die ersten Prototypenplatinen in die finger, dann kann ich die Schaltung aufbauen und mein Co Entwickler die Software schreiben.

Zitat

...ist der i2c-poti schnell genug, und überhaubt nötig?

Bei der Geschwindigkeit hätte ich überhaupt keine Angst.
Die Frame wiederholrate beträgt 20ms, das dürfte kein Problem sein.
Für die Anwendung als reines Schaltmodul wäre das digitale Poti nicht unbedingt notwendig.
Aber es vereinfacht die Einstellung der Spannung / Impulslängen, da alles per Software gemacht werden kann.
Bei der PIC Lösung müsste man dazu Widerstände umlöten.
Ausserdem haben wir vor, wenn alles läuft, ein Mix Modul rauszubringen, das 4 Schalter und 4 Potis zur Servoansteuerung beherbergt. Und da ist das digitale Poti zwingend erforderlich.
Das Modul könnte dann 8 Schaltfunktionen haben und zusätzlich noch 4 Servos bedienen.
Aber immer einen Schritt nach dem anderen.

Auch eine 8 Kanal Servo Variante wäre denkbar, allerdings haben wir da das Problem mit der Befestigung im Sender.

36

Freitag, 17. Oktober 2008, 16:32

Hallo Leute,

die ersten Prototypenplatinen für das Nautic Sendemodul sind eingetroffen.
»wkrug« hat folgendes Bild angehängt:
  • Nautic_Sender 002.jpg

37

Freitag, 17. Oktober 2008, 19:38

Das sieht schon mal super aus, Wilhelm... :ok:

Ich bin schon total gespannt, wie das Ergebnis sein wird!

In welcher Sprache wirst Du programmieren?

Viele Grüße

Torsten
[SIZE=4]www.zuendapp.net - die grösste Zündapp-Community im Internet! :ok:[/SIZE]

38

Freitag, 17. Oktober 2008, 21:12

sieht wirklich gut aus, wird aber warscheinlich nicht in eine mc12 passen??

hoffe, dass nicht gleich in asm programmiert wird..

39

Samstag, 18. Oktober 2008, 22:48

Der erste Quellcode + Probleme

Vorab mal das Problem...
Hat jemand von euch eine Quelle, oder zumindest einen Hersteller für die Buchsenstecker ( Kanalsteckplätze ) die Graupner in seinen MC Anlagen verwendet.
Wir suchen schon die Ganze Zeit rum finden aber nichts.
Einen Kanalschalter auszuschlachten wär natürlich auch eine Möglichkeit.
Ausserdem bräuchten wir natürlich noch Stecker und Buchsen für das Multi Frame Signal.
Eine Bastellösung mag mir hier aber nicht besonders gefallen.

Zitat

In welcher Sprache wirst Du programmieren?

Das wir Dir wieder weniger gefallen, es wird doch in "C" sein.
Aber eine Adaption auf BASCOM sollte nicht wirklich ein Problem sein.
Mein Co Entwickler ( BASCOM Crack ) hat Probleme das Modul zu testen, drum wird alles trotzdem in meiner Hand bleiben

Nun zum angenehmeren Teil:
Ich hab den ersten Quellcode fertig.
Der ist in der Zwischenzeit aber nur mit Frequenzgenerator getestet worden, scheint aber zu funktionieren.
Die Tests in der Anlage folgen noch.
Hier der Code in "C" für CodeVision AVR:

Zitat

/*****************************************************
This program was produced by the
CodeWizardAVR V1.25.5 Standard
Automatic Program Generator
© Copyright 1998-2007 Pavel Haiduc, HP InfoTech s.r.l.
http://www.hpinfotech.com

Project : Multiswitch Sender
Version : 0.1
Date : 17.10.2008
Author : Wilhelm Krug
Company : Germany
Comments:


Chip type : ATmega8L
Program type : Application
Clock frequency : 8,000000 MHz
Memory model : Small
External SRAM size : 0
Data Stack size : 256
*****************************************************/

#include <mega8.h>
#define TWIE 0
#define TWEN 2
#define TWWC 3
#define TWSTO 4
#define TWSTA 5
#define TWEA 6
#define TWINT 7



volatile bit ub_nextframe=0; /* Flag für nächsten Multiswitchimpuls */
volatile unsigned char uc_pulsecount=0; /* Zähler zur Impulszählung 8 Pulse schalten 1 Frame weiter )*/
volatile unsigned char uc_framecount=0; /* Zähler für de Framezählung 10 Pulse pro Sequenz */
volatile unsigned char uc_frame[10]={250,250,118,118,118,118,118,118,118,118}; /* Puffer für Impulshöhe */
const unsigned char uc_low=25; /* Konstanten für die Impulslängen bei digitalen Poti */
const unsigned char uc_mid=123;
const unsigned char uc_high=214;
const unsigned char uc_sync=255;

// External Interrupt 0 service routine
interrupt [EXT_INT0] void ext_int0_isr(void)
{
TCNT0=0;
uc_pulsecount++;
if(uc_pulsecount>7) /* Nach 8 Sync Impulsen wird ein Frame weitergeschaltet */
{
uc_pulsecount=0;
uc_framecount++;
if(uc_framecount>9){uc_framecount=0;};
ub_nextframe=1;
};
if(uc_framecount==0)
{
PORTD.5=1;
}
else
{
PORTD.5=0;
};
}

// Timer 0 overflow interrupt service routine
interrupt [TIM0_OVF] void timer0_ovf_isr(void)
{
uc_pulsecount=0; /* Wenn 8ms kein neuer Impuls eingetroffen ist, wird der Pulszähler auf 0 gesetzt*/
}

// I2C Daten an das digitale Poti senden
void send_i2c(unsigned char uc_value)
{
TWCR=((1<<TWINT)|(1<<TWSTA)|(1<<TWEN)); /* Start Condition senden */
while (!(TWCR&(1<<TWINT))); /* Warten bis fertig */
if ((TWSR&0xF8) != 0x08) /* Gab es Fehler */
{
//ERROR
}
else
{
TWDR=0b01010000; /* Control Byte in das I2C Poti schreiben ( SLA + W ) */
TWCR=(1<<TWINT)|(1<<TWEN);
while (!(TWCR&(1<<TWINT))); /* Warten auf das Ende der Übertragung */
if((TWSR&0xF8) !=0x18)
{
// ERROR
}
else
{
TWDR=0b10101111; /* Command Byte in das I2C Poti schreiben wird als Data behandelt ( beide Potis ansteuern )*/
TWCR=(1<<TWINT)|(1<<TWEN);
while (!(TWCR&(1<<TWINT))); /* Warten auf das Ende der Übertragung */
if((TWSR&0xF8) !=0x28)
{
// ERROR
}
else
{
TWDR=uc_value; /* Werte in das I2C Poti schreiben */
TWCR=(1<<TWINT)|(1<<TWEN);
while (!(TWCR&(1<<TWINT))); /* Warten auf das Ende der Übertragung */
if((TWSR&0xF8) !=0x28)
{
// ERROR
}
else
{
TWCR=(1<<TWINT)|(1<<TWEN)|(1<<TWSTO); /* Stopp Condition senden */
};
};
};
};
}

void main(void)
{
// Declare your local variables here

// Input/Output Ports initialization
// Port B initialization
// Func7=In Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=T State6=T State5=P State4=P State3=P State2=P State1=P State0=P
PORTB=0b00111111;
DDRB=0x00;

// Port C initialization
// Func6=In Func5=In Func4=In Func3=In Func2=In Func1=In Func0=In
// State6=T State5=T State4=T State3=P State2=P State1=P State0=P
PORTC=0b00001111;
DDRC=0x00;

// Port D initialization
// Func7=In Func6=In Func5=Out Func4=In Func3=In Func2=In Func1=In Func0=In
// State7=P State6=P State5=0 State4=P State3=P State2=T State1=P State0=P
PORTD=0b11011011;
DDRD=0x20;

// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: 31,250 kHz
TCCR0=0x04;
TCNT0=0x00;

// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Normal top=FFFFh
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
// Timer 1 Overflow Interrupt: Off
// Input Capture Interrupt: Off
// Compare A Match Interrupt: Off
// Compare B Match Interrupt: Off
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;

// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Normal top=FFh
// OC2 output: Disconnected
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;

// External Interrupt(s) initialization
// INT0: On
// INT0 Mode: Rising Edge
// INT1: Off
GICR|=0x40;
MCUCR=0x03;
GIFR=0x40;

// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x01;

// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
SFIOR=0x00;

// 2 Wire Bus initialization
// Generate Acknowledge Pulse: Off
// 2 Wire Bus Slave Address: 0h
// General Call Recognition: Off
// Bit Rate: 200,000 kHz
TWSR=0x00;
TWBR=0x0C;
TWAR=0x00;
TWCR=0x04;

// Watchdog Timer initialization
// Watchdog Timer Prescaler: OSC/1024k
#pragma optsize-
WDTCR=0x1E;
WDTCR=0x0E;
#ifdef _OPTIMIZE_SIZE_
#pragma optsize+
#endif
//**********************
//**** Testroutines ****
/* ub_nextframe=1; */


//*End of Testroutines*

send_i2c(uc_mid);

// Global enable interrupts
#asm("sei")

while (1)
{
#asm ("wdr");


// Sync Impulse
uc_frame[0]=uc_sync; /* Die beiden Sync Impulse in den Framebuffer laden */
uc_frame[1]=uc_sync;

// Schaltersatz 1 abfragen
if(PINC.0>0&&PINC.1>0)
{
uc_frame[2]=uc_mid;
};
if(PINC.0==0)
{
uc_frame[2]=uc_high;
};
if(PINC.1==0)
{
uc_frame[2]=uc_low;
};
// Schaltersatz 2 abfragen
if(PINC.2>0&&PINC.3>0)
{
uc_frame[3]=uc_mid;
};
if(PINC.2==0)
{
uc_frame[3]=uc_high;
};
if(PINC.3==0)
{
uc_frame[3]=uc_low;
};
// Schaltersatz 3 abfragen
if(PIND.0>0&&PIND.1>0)
{
uc_frame[4]=uc_mid;
};
if(PIND.0==0)
{
uc_frame[4]=uc_high;
};
if(PIND.1==0)
{
uc_frame[4]=uc_low;
};
// Schaltersatz 4 abfragen
if(PIND.6>0&&PIND.7>0)
{
uc_frame[5]=uc_mid;
};
if(PIND.6==0)
{
uc_frame[5]=uc_high;
};
if(PIND.7==0)
{
uc_frame[5]=uc_low;
};
// Schaltersatz 5 abfragen
if(PINB.0>0&&PINB.1>0)
{
uc_frame[6]=uc_mid;
};
if(PINB.0==0)
{
uc_frame[6]=uc_high;
};
if(PINB.1==0)
{
uc_frame[6]=uc_low;
};
// Schaltersatz 6 abfragen
if(PINB.2>0&&PINB.3>0)
{
uc_frame[7]=uc_mid;
};
if(PINB.2==0)
{
uc_frame[7]=uc_high;
};
if(PINB.3==0)
{
uc_frame[7]=uc_low;
};
// Schaltersatz 7 abfragen
if(PIND.3>0&&PIND.4>0)
{
uc_frame[8]=uc_mid;
};
if(PIND.3==0)
{
uc_frame[8]=uc_high;
};
if(PIND.4==0)
{
uc_frame[8]=uc_low;
};
// Schaltersatz 8 abfragen
if(PINB.4>0&&PINB.5>0)
{
uc_frame[9]=uc_mid;
};
if(PINB.4==0)
{
uc_frame[9]=uc_high;
};
if(PINB.5==0)
{
uc_frame[9]=uc_low;
};
// Umschaltung des digitalen Potis auf nächsten Wert
if(ub_nextframe>0)
{
ub_nextframe=0;
send_i2c(uc_frame[uc_framecount]); /* I2C Routine aufrufen */
};
};
}


Falls die Impulslängen nicht passen kann man das leicht per Software ( uc_low, uc_mid, uc_high, uc_sync ) ändern.
Da der Code nur ein paar Byte hat, sollte sich das Programm mit der Free Version von CodeVision kompilieren lassen.

Das Layout ist leider noch nicht Veröffentlichungswürdig, weil die Schalter zu große Pins haben, die nicht in die Platine passen.
Ich hab bei den Prototypen die Löcher für die Schalterpins nach einer Seite ausgefräst, dann gings.

Ich hab das Bauteil aus der EAGLE - "switch" library, es ist dort der M9040p.
Wenn einer von euch Lust hat, kann er die .lib mal updaten und den gleichen Schalter mit 2,5mm Bohrungen als Package anlegen, dann passen die Reichelt Schalter ganz locker rein.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »wkrug« (18. Oktober 2008, 22:55)


40

Samstag, 18. Oktober 2008, 23:00

Moin Wilhelm,

Zitat

Hat jemand von euch eine Quelle, oder zumindest einen Hersteller für die Buchsenstecker ( Kanalsteckplätze ) die Graupner in seinen MC Anlagen verwendet.


Guck mal hier:

PS 25/2G BR

Falls der Link (wegen Session-ID) nicht geht, gibst Du halt bei Angelika die Nummer in die Suche ein.

Obacht: nur die braunen passen. Die Dinger gips auch in weiß, die passen nicht!

Liebe Grüße aus der Wesermarsch

Ralph