- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 10 von 15

Thema: Controler für I2C befehl

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Gesperrt Öfters hier
    Registriert seit
    15.10.2019
    Beiträge
    7
    Hallo und Danke,
    Der uC muß nach Anlegen der Spannung, also Initialisierung, eine einzige Sequenz an den Mod-chip senden. die besteht aus paar Teilen (Blöcken) für Frequenz, Audio-Träger, Testsignal, Mod.-Tiefe u.dgl.
    Mir ist es egal, ob ich alle Parameter, die in dieser Sequenz enthalten sein müssen, vorher am PC festlege (und ins EEPROM schreibe ??) oder Teile (Blöcke) davon per DIP nachträglich modifizieren kann.
    Auch die Versorgung von üC und Modulator mit möglicherweise verschiedenen Spannungen und daraus resultierende Pegelanpassungen sind (ich bin Elektroniker) kein Thema.
    Mein Problem ist allein das Erstellen des Programms. Ich bin keine 17 mehr und wollte mit eurer Hilfe vermeiden, noch mal Programmiersprache usw. wegen dieses Projekts lernen zu müssen.

  2. #2
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    25.12.2018
    Beiträge
    459
    Ein bisschen Getüftel wird es schon.
    Der Arduino Nano lässt sich aber sehr einfach programmieren (Entwicklungsumgebung im PC installieren, Nano mit USB-Kabel anschließen - das ist eingetlich schon alles).
    Für dein Programm dürften die wesentlichen Teile die Einbindung der Wire-Bibliothek

    #include <Wire.h>

    und das Senden der Sequenzen

    Wire.beginTransmission(MOD_ADDRESS);
    Wire.write(0x88 )
    Wire.write(0x40 | mod_sound[soundIdx]);
    Wire.write(fm);
    Wire.write(fl);
    Wire.endTransmission();

    sein. Die Werte hier sind im Programm mit Hilfe der Tasten und des LCD eingestellt. Du kannst sie natürlich als feste Werte in den Klammern hinterlegen (so wie der Wert 0x88 in der zweiten Zeile).
    MOD_ADRSESS solltest du duch so etwas wie 0xCA (Adresse des Moduls aus dem Beispiel) ersetzen können. Die Definition
    #define MOD_ADDRESS (0xCA >> 1)

    verschiebt den Wert um ein Bit nach rechts - was das soll, verstehe ich allerdings nicht.
    In der Setup-Sektion ist offenbar noch ein

    Wire.begin();

    nötig.
    Jetzt heißt es für dich wohl: Frisch ans Werk.

  3. #3
    HaWe
    Gast
    Zitat Zitat von Gnom67 Beitrag anzeigen
    verschiebt den Wert um ein Bit nach rechts - was das soll, verstehe ich allerdings nicht.
    Arduino verwendet zur Adressierung per Wire die 7-bit I2C dev Adresse (0...127), 0xCA (dec 202) ist eine 8-bit-Adresse (least significant bit 1/0 für r/w).
    Durch >> 1 wird es rausgekickt (Division durch 2) und man erhält aus der 8-bit die "reine" 7-bit I2C addr
    202 >> 1 = 101 (hex 0x65)

  4. #4
    Gesperrt Öfters hier
    Registriert seit
    15.10.2019
    Beiträge
    7
    o.k. ! etwas "Getüftel" is bei allen solchen Projekten normal.
    Also paar dieser Teile:

    https://www.banggood.com/de/ATmega32...r_warehouse=CN

    kaufen, "arduino-1.8.10-windows.exe" installieren, usb-Verbindung und los gehts: " Wire.beginTransmission(0xCA); " usw. . . . ??

    Mein Modulator-chip MC44353 hat übrigens lt. Datenblatt auch die Adresse CA(hex), der wird doch nicht etwa kompatibel sein mit dem im Link von Holomino ??

  5. #5
    Gesperrt Öfters hier
    Registriert seit
    15.10.2019
    Beiträge
    7
    Hi,
    also ganz ohne eure externe Hilfe wirds doch nix. Mein Modulator chip mc44353 ist zwar sehr ähnlich dem MBS74T1AEF im Link von Holomino, alle bytes haben die selbe Bezeichnung und Funktion, aber es gibt doch paar Unterschiede.
    Die keyPad- und LCD- funktionen wie bei "Cornelius´ projekt brauch ich nicht, die umständliche umrechnung der PAL-Kanal-nummern in die eigentliche frequenz auch nich, mit meinem chip reicht es, die gewünschte Video-Frequenz als Vielfaches von 0,25 MHz in die beiden bytes FL und FM zu schreiben, die begrenzung der Kanäle " if ((channel < 21) || (channel > 69)) channel = 21;
    innerhalb 21 bis 69 is genau so überflüssig.
    Hab jetzt keine Ahnung wie ich aus dem Quellcode aus dem Link einen für mich machen kann??

  6. #6
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    25.12.2018
    Beiträge
    459
    Na, jetzt musst du dich schon mal selbst dranmachen...
    Aus deinem Datenblatt kannst du doch die gewünschten Bits leicht entnehmen. Da ist ebenso eine Tabelle wie im Link von Holomino.
    Füllst du die vier Bytes mit deinen gewünschten Werten aus, erhältst du die Binärwerte, die du senden musst. kannst du in hex umrechnen und als 0x?? angeben oder als binär müsste auch gehen (B????????)
    Beim Code kannst du den ganzen Schnickschnack weglassen. Du brauchst nur die Importe, die Rahmenstruktur, die Initialisierung des I2C und die Sendebefehle für deine Bytes. Nach dem Einschalten wird er einen Moment warten müssen, bis der Modulator empfangsbereit ist (wie lange, musst du ausprobieren). Dann die Adresse senden. Danach deine vier Bytes. Dann kommt noch das beenden der Sendesequenz. Dann könntest du den µC in den Tiefschlaf schicken, denn er hat seinen Dienst ja getan. Beim Reset/Einschalten sendet er die Sequenz und schläft dann...
    Also, so schwer erscheint mir das nicht. Insgesamt müsste das ungefähr so aussehen.

    #include <Wire.h>
    #define MOD_ADDRESS (0xCA >> 1)

    void setup() {

    Wire.begin();

    }

    void loop() {

    delay(100); // 100 ms warten

    Wire.beginTransmission(MOD_ADDRESS);
    Wire.write(0x??);
    Wire.write(0x??);
    Wire.write(0x??);
    Wire.write(0x??);
    Wire.endTransmission();

    set_sleep_mode(SLEEP_MODE_PWR_DOWN);
    sleep_enable();
    sleep_mode();
    }

  7. #7
    Gesperrt Öfters hier
    Registriert seit
    15.10.2019
    Beiträge
    7
    O.K. ganz vielen Dank @ Gnom67!

    jetzt bin ich guter Hoffnung, daß ich das hinbekomme. Genial wäre es, die Frequenz gleich in dezimal in kHz eintragen zu können, und der Controller rechnet das in binär um und setzt die bits gleich in das entsprechende Byte. Alle anderen Bytes können auf festen Werten bleiben, die muss ich nur einmal festlegen. Dafür müsste man wohl innerhalb der letzten beiden Bytes (FL und FM) die Bits als Variablen einsetzen, oder?? Die gewünschte eingegebene Frequenz durch 250 teilen, in eine Binärzahl wandeln und deren Stellen in die Variablen schreiben? Ich stell mir das so leicht vor, in der Praxis is das meist viel schwieriger.
    zudem muß ich mich erst mal mit der IDE auseinadersetzen, davor graust es mir. Die will schon beim Start nen "Code" ?? Hab gar keinen . . . ? dann muß das Machwerk bestimmt noch irgendwie kompiliert werden oder sowas, usw, usw . . .

Ähnliche Themen

  1. RGB Controler
    Von The Man im Forum Elektronik
    Antworten: 5
    Letzter Beitrag: 11.10.2008, 17:46
  2. 3 Achsen CNC Controler
    Von unleashed im Forum Elektronik
    Antworten: 10
    Letzter Beitrag: 25.07.2008, 12:24
  3. asuro controler
    Von baschi-1,3 im Forum Elektronik
    Antworten: 0
    Letzter Beitrag: 17.04.2006, 12:21
  4. RN-Controler und Schrittmotor
    Von Blackbumpkin im Forum Schaltungen und Boards der Projektseite Mikrocontroller-Elektronik.de
    Antworten: 3
    Letzter Beitrag: 12.12.2005, 09:51
  5. Frage zum µcontroler
    Von im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 10
    Letzter Beitrag: 25.08.2004, 18:54

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad