Seite 2 von 7 ErsteErste 1234567 LetzteLetzte
Ergebnis 16 bis 30 von 97
Like Tree1Likes

Thema: für xorg1990

  1. #16
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.610

    AW: für xorg1990

    Zitat Zitat von xorg1990 Beitrag anzeigen
    Naja, 8bit ist schon Untere grenze.
    ich kann zu dem ganzen audiogeraffel nichts sagen, aber es scheint ja zu funktionieren

    Zitat Zitat von xorg1990 Beitrag anzeigen
    cs?
    chip select

    Zitat Zitat von xorg1990 Beitrag anzeigen
    Ja aber irgendwo muss doch mal definiert werden bei 16Mhz Takt so schnell und bei 8Mhz Takt so schnell.
    welche takte meinst du?
    idr hast du ja hardware-i2c. da kannst du meist über ein paar register aus einem paar gegebenen takten dir einen wählen.
    bei einer bitbanging-i2c lösung hast du vielleicht ein paar mehr einstellmöglichkeiten, wobei meiner meinung nach ein standard-takt gewählt werden sollte um mit jedem belibigen hw oder sw slave klarzukommen.
    wenn du nichts setzt, sollte ja eine vernünftige default-einstellung gewählt sein, mit der die soft und hardware klarkommt.
    keine ahnung was die klasse macht, wenn du dort irgendwas einstellst, was die hardware nicht unterstützt. im schlechtesten fall kommt dann kein fehler und sie nehmen eine software-i2c-implementierung obwohl hardware-i2c vorhanden ist.
    in deinem fall, wo der avr kein hardware-i2c ünterstützt (beim esp ist es glaube ich genau so) ist es etwas anderes, aber auch da würde ich davon ausgehen, dass default der takt vorausgewählt ist, mit dem die sw am besten klarkommt.

    Zitat Zitat von xorg1990 Beitrag anzeigen
    Dachte Wenigstens eins von dreien ist dabei.
    USI (Avr)
    inwiefern man das auch für einen uart nutzen kann müsste man mal nachlesen, vielleicht geht das auch.

  2. #17
    Avatar von xorg1990
    xorg1990 ist offline König
    registriert
    20-12-2013
    Beiträge
    797

    AW: für xorg1990

    Zitat Zitat von tsseh
    welche takte meinst du?
    Die vom Atemel also 16Mhz

    Zitat Zitat von tsseh
    bitbanging-i2c
    Software i2c ist glaube ich immer Bit banging.

    Zitat Zitat von tsseh
    inwiefern man das auch für einen uart nutzen kann müsste man mal nachlesen, vielleicht geht das auch.
    Ja ich sehe mal nach.

    Der Idealfall wäre wenn eines der 3 Verfahren Full-Duplex ist (i2c ist es schon mal nicht), dann könnte ich die Sache fürs Licht sprechen ausbauen.
    Ansonsten brauch ich eine Sende/Empfangs Umschaltung

    Dann bräuchte ich aber beim AVR, den Areff Pin und bis jetzt wurde dieser immer von i2c oder SPi belegt, außer Software Serial, da kann ich die Pins frei wählen, aber Timer 0 wurde von Software serial benutzt.

    Bei USi steht,
    USIPOS USI Pin Position
    Es ist möglich, die Datenleitungen auf einen alternativen Port zu legen, wenn dieses Bit gesetzt wird. Die alternative Position ist aber auch festgelegt, man schaltet nur zwischen den Möglichkeiten um.
    Beim ESp-01 wäre klasse wenn die RX/TX Pins fürs verbinden genutzt werden, dann habe ich noch 2 GPIOS für andere Sachen frei. Der avr macht die modualtion/demodulation auf den Laser... ja das könnte gehen.
    Laser.JPG
    Laser2.JPG
    Der Laser Punkt 5km Entfernung an einem Windrad. ca 10cm Durchmesser(der rote Punk in der Mitte leicht verwackelt). Mit Einem Laser Klasse 3a also nix illegales.
    5km.JPG
    Übriges hat das 2 Stunden gedauert überhaut das Windrad anzupeilen, weil auf 5km reicht es einmal zu Husten und der laser ist aus der Richtung.
    Die Schrittmotoren muss ich noch anpassen die laufen noch zu grob. 100ms auf den Taster drücken sind 3 Meter auf 5km. Meine Ziel Zeil wäre 30Km Reichweite. Da brauch ich noch ein Nivelliergerät sonst weiß ich nicht wie ich 30km einblicken soll. Obwohl in 30km hat der Laser dann 10Meter Durchmesser.

    - - - Aktualisiert - - -

    Also USI ist wohl nur Half Duplex, bei UART ist das ganz besonder Interessant man brauch nur ein Pin. IC weiß allerdings nicht ob das das gleiche ist wie das Dallas 1-Wire.
    http://nerdralph.blogspot.de/2014/01...ware-uart.html

    SPI geht mit dem ESP01 nicht, da brauch man wohl den 03er der avr müsste dann atTiny861 werden, der hat auch noch eine PLL und derAREF Pin ist nicht belegt.
    Geändert von xorg1990 (27-04-2017 um 20:42 Uhr)
    mikdoe likes this.

  3. #18
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.610

    AW: für xorg1990

    Zitat Zitat von xorg1990 Beitrag anzeigen
    Am ende landet der Salat auch nur wieder i2s Buffer:
    https://github.com/espressif/ESP8266...reertos.c#L287
    jetzt hab ich aber lange gebraucht um zu merken, dass das i2s und nicht i2c ist.
    ich hab mich die ganze zeit gefragt wie das funktionieren soll, wenn der i2c pin einfach als pwm signal genutzt wird, da ja über i2c zusätzlich zu den nutzdaten auch immer noch die adresse, start, und ack gehen.
    es ist aber i2s und damit gehen nur die daten über die leitung. damit kannst du dann natürlich das pwm signal ausgeben.
    bleibt noch die frage, wie er auf diese bitverteilung gekommen ist, ich hätte das nächste bit ja immer auf die nächste stelle gesetzt. also 1,3,7,F,...

    - - - Aktualisiert - - -

    das wäre also eine möglichkeit die auf jeden fall zu funktionieren scheint, mit einem esp.
    eine 8 bit auflösung anstelle der 5 bit ist theoretisch gerade noch so möglich, die frequenz abweichung ist dann allerdings größer, keine ahnung ob man das raushört, ist bei 8bit und 48kHz langsammer. ich hab mal die in der beschreibung angegebenen sample rate von 48kHz genommen:
    5bit PWM: ReqRate 48000 MDiv 52 BckDiv 2 Bits 16 Frq 48076
    6bit PWM: ReqRate 96000 MDiv 26 BckDiv 2 Bits 16 Frq 96153
    7bit PWM: ReqRate 192000 MDiv 13 BckDiv 2 Bits 16 Frq 192307
    8bit PWM: ReqRate 384000 MDiv 7 BckDiv 2 Bits 16 Frq 357142
    anstelle von 48kHz kommst du auf bei 8 bit auf 44,6kHz (sind 76ms die du pro sekunde länger brauchst)

    bei 8kHz:
    5bit PWM: ReqRate 8000 MDiv 25 BckDiv 25 Bits 16 Frq 8000
    8bit PWM: ReqRate 64000 MDiv 39 BckDiv 2 Bits 16 Frq 64102 entspricht 8012,75
    bei 8kHz sample rate dürftest du auch weniger probleme mit dem puffer haben, weswegen ja der zusätzliche ram benötigt wurde.

  4. #19
    Avatar von xorg1990
    xorg1990 ist offline König
    registriert
    20-12-2013
    Beiträge
    797

    AW: für xorg1990

    Zitat Zitat von tsseh
    jetzt hab ich aber lange gebraucht um zu merken, dass das i2s und nicht i2c ist.
    Deswegen nützt mir das nix weil, der ESp-01 denn i2s Pin nicht frei gelegt hat.

    Zitat Zitat von tsseh
    ich hab mal die in der beschreibung angegebenen sample rate von 48kHz genommen:
    Wie jetzt, du hast das zum laufen gebracht?

    Wie ist das eigentlich wenn ich eine Hardware SPI Lösung mit einer Software SPI Lösung verbinde. Verträgt sich das?
    Das ESP-03 Modul hat die Miso/Mosi/clock pins frei und kostet halt 1 Euro Mehr. Der avr macht SPI über das USI, dann hätte ich für das Lichtsprechen die Full-Duplex sache gelöst. Der nächst größere avr mit PLL wäre der ATtiny861

    Vor allem hier steht nun wieder Hardware SPi:
    Arduino hardware SPI library for ATtiny44/84/45/85
    https://github.com/JChristensen/tinySPI
    Können die sich mal entscheiden?

  5. #20
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.610

    AW: für xorg1990

    Zitat Zitat von xorg1990 Beitrag anzeigen
    Deswegen nützt mir das nix weil, der ESp-01 denn i2s Pin nicht frei gelegt hat.
    welcher ist es denn? vielleicht kommt man ja gut ran? ich kann das zwar nicht löten, aber meine frau hat bessere augen, die macht das immer für mich.pin1.jpg


    Zitat Zitat von xorg1990 Beitrag anzeigen
    Wie jetzt, du hast das zum laufen gebracht?
    nee, wobei das ja aber nur draufzuspielen wäre.

    Zitat Zitat von xorg1990 Beitrag anzeigen
    Wie ist das eigentlich wenn ich eine Hardware SPI Lösung mit einer Software SPI Lösung verbinde. Verträgt sich das?
    sonst wäre es ja sinnlos

    Zitat Zitat von xorg1990 Beitrag anzeigen
    Vor allem hier steht nun wieder Hardware SPi:
    Arduino hardware SPI library for ATtiny44/84/45/85
    https://github.com/JChristensen/tinySPI
    Können die sich mal entscheiden?
    ist ja auch hardware, nur bischen weniger komfortabel.

  6. #21
    Avatar von xorg1990
    xorg1990 ist offline König
    registriert
    20-12-2013
    Beiträge
    797

    AW: für xorg1990

    Zitat Zitat von tsseh
    welcher ist es denn? vielleicht kommt man ja gut ran? ich kann das zwar nicht löten, aber meine frau hat bessere augen, die macht das immer für mich.
    Wo der i2s Pin ist weiß ich auch nicht, das steht nicht mal beim esp-12(nodemcu) geschrieben. Auf dem 01er rum zu Löten war eingleich nicht mein Plan.

    Wie seit ihr eigentlich zwischen esp und flash gekommen mit dem Lötkolben, hat deine Frau eine Stecknadel erhitzt, da ist gerade mal 1mm Platz^^
    esp_klein_groß.JPG

    Für eine vernünftige Voll-duplex Lösung braucht es den esp-03 und SPI, aber was ich mich frage was passiert mit den Flash Speicher wenn der ESP als SPI Slave läuft und der avr als Master.

    Überschreibe ich den Flash? Es gibt ja auch mehrer Slaves bei SPI aber der Flash speicher hat gar kein cs/ss Pin. Datenblatt im Anhang. ESP8266 Register Table's habe ich auch noch im Anhang. Theoretisch kann es nicht viel anders sein als beim lesen/schreiben einer sd Karte, aber das macht auch kaum einer, und das wird auch seien Grund haben.

    Auf die Reverenz Spannung kann ich verzichten beim avr. SS Pin kann ach auch hart auf GND ziehen, dann spare ich zumindest beim avr einen Pin ein.
    Angehängte Dateien Angehängte Dateien

  7. #22
    Avatar von xorg1990
    xorg1990 ist offline König
    registriert
    20-12-2013
    Beiträge
    797

    AW: für xorg1990

    Ein paar Dinge konnte ich noch Herausfinden.
    Der avr kann nur mit 8Mhz getaktet werden wenn man die PLL für PWM nutzen möchte.

    Die ADC Clock Frequenz hat nichts mit der Sample Rate zu tun.
    Wenn avr 8Mhz und adc Vorteiler auf 8 steht ergibt das 1Mhz Clock Frequenz also das Maximum was Atmel verspricht.
    Im Free Runnging Modus braucht es 13 Clock Zyklen bis ein wert erfasst wird.
    Also 1mhz/13 = 76.92kHz
    76.92kHz ist also mein Sample rate sehe ich das richtig so??

    • Bit 6 – ADSC: ADC Start Conversion
    In Single Conversion mode, write this bit to one to start each conversion. In Free Running mode, write this bit to
    one to start the first conversion. The first conversion after ADSC has been written after the ADC has been enabled,
    or if ADSC is written at the same time as the ADC is enabled, will take 25 ADC clock cycles instead of the normal
    13. This first conversion performs initialization of the ADC.
    Da ist schon die Frage schaft der das spi Protokoll überhaut die 76khz a 8Bit das Sample überhaupt?

    Auch nicht zu verstehen ist folgende aussage:
    ###transfer() #####Description Transfers one byte over the SPI bus, both sending and receiving. Interrupts are inhibited during each byte transfer to ensure a consistent bit clock period. #####Syntax SPI.transfer(val); #####Parameters val: the byte to send over the bus (byte) #####Returns the byte read from the bus (byte)
    https://github.com/JChristensen/tinySPI
    Interrupts are inhibited .... Das würde mein vorhaben unbrauchbar machen

    Was mit den Flash speicher passiert wenn ich die Daten vom avr zum esp sende weiß auch keiner so richtig.

    Die out SampleRate also die aufs PWM moduliert wird sollte ~32kHz betragen, da die ELISE Sender das machen.
    https://www.aatis.de/content/bausatz...Empf%C3%A4nger


    Was ich auch noch nicht verstanden habe ist die "wie schell muss den mein adc auf dem avr nun wirklich den laufen". Druch die PLL erreiche ich eine PWM Frequenz von 64Mhz/256 = 250kHz. auf die 250Khz moduliere ich eine Sample rate von 32Khz auf, sprich das was vom Browser kommt. In den 32Khz stecken aber alla nyquist/2 Frequenzen also 16kHz die wirklich hörbar wären. Dann würde es ja reichen wenn der adc auf dem auch nur 32kHz macht oder doch 64+ ???
    Geändert von xorg1990 (01-05-2017 um 11:23 Uhr)

  8. #23
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.610

    AW: für xorg1990

    Zitat Zitat von xorg1990 Beitrag anzeigen
    Wo der i2s Pin ist weiß ich auch nicht
    scheint gpio3 (rx) zu sein

    Zitat Zitat von xorg1990 Beitrag anzeigen
    Wie seit ihr eigentlich zwischen esp und flash gekommen
    ging, war der ganz am rand

    Zitat Zitat von xorg1990 Beitrag anzeigen
    Für eine vernünftige Voll-duplex Lösung braucht es den esp-03 und SPI, aber was ich mich frage was passiert mit den Flash Speicher wenn der ESP als SPI Slave läuft und der avr als Master.
    gute frage, hab ich mich auch schon gefragt bei deinem i2s beispiel mit dem ram, der muss also irgendwie über cs gesteuert werden

    Zitat Zitat von xorg1990 Beitrag anzeigen
    Es gibt ja auch mehrer Slaves bei SPI aber der Flash speicher hat gar kein cs/ss Pin. Datenblatt im Anhang.
    pin1

    Zitat Zitat von xorg1990 Beitrag anzeigen
    76.92kHz ist also mein Sample rate sehe ich das richtig so??
    wenn das alles so ist, dann ja, dann ist das deine max. sample rate

    Zitat Zitat von xorg1990 Beitrag anzeigen
    Da ist schon die Frage schaft der das spi Protokoll überhaut die 76khz a 8Bit das Sample überhaupt?
    sw oder hw lösung? aber egal, du musst ja nicht mit 76khz messen, machst du eben langsammer, würde ich sowieso

    Zitat Zitat von xorg1990 Beitrag anzeigen
    Auch nicht zu verstehen ist folgende aussage:

    https://github.com/JChristensen/tinySPI
    Interrupts are inhibited .... Das würde mein vorhaben unbrauchbar machen
    nee, das ist ja klar, damit würdest du ja das timing durcheinanderbringen. das ist ja aber nur für die laufzeit von transfer() so. du musst deine zeiten ja sowieso so wählen, dass du in einem zyklus messen und übertragen kannst. erst dann (mit reserve) darf ein neuer zyklus beginnen.

    Zitat Zitat von xorg1990 Beitrag anzeigen
    Dann würde es ja reichen wenn der adc auf dem auch nur 32kHz macht oder doch 64+ ???
    wenn das
    Zitat Zitat von xorg1990 Beitrag anzeigen
    Die out SampleRate also die aufs PWM moduliert wird sollte ~32kHz betragen, da die ELISE Sender das machen.
    gilt, dann 32kHz

  9. #24
    Avatar von xorg1990
    xorg1990 ist offline König
    registriert
    20-12-2013
    Beiträge
    797

    AW: für xorg1990

    Laut Verdrahtung sollte es keinen Kontakt zwischen GPIO Pins und Flash speicher geben.
    esp03-boardtop.jpg
    GPIO14,12 und 13 werden benötigt für spi, der Flash hängt an ganz anderen Pins am ESP.
    esp-03.png

    Zitat Zitat von tsseh
    sw oder hw lösung? aber egal, du musst ja nicht mit 76khz messen, machst du eben langsammer, würde ich sowieso
    ESP, ist denke ich Hardware SPI und avr USI also auch Hardware.

    Beim avr ist die SPi Bandbreite Cpu Clock/2 also 4Mhz == 4Mbit/sec, mehr als ausreichend. Den ADC lasse ich langsamer laufen.

    Zitat Zitat von tsseh
    nee, das ist ja klar, damit würdest du ja das timing durcheinanderbringen. das ist ja aber nur für die laufzeit von transfer() so. du musst deine zeiten ja sowieso so wählen, dass du in einem zyklus messen und übertragen kannst. erst dann (mit reserve) darf ein neuer zyklus beginnen.
    Wie soll ich das den Timen, das erst gemessen und dann erst gesendet wird? Gut ich könnte den Transfer in den ISR vom ADC Packen.
    Wäre den das Interrupt Proben noch wenn der avr als SPi Slave läuft und der ESP als Master? Das wäre vielleicht günstiger, dann laufe ich nicht Gefahr das der avr den flash überschreibt.

    Ich habe das ohnehin nicht verstandene die tynySPi Master Klasse sendet und empfängt ein byte gleichzeitig:
    https://github.com/JChristensen/tiny...spi_85.ino#L58
    wärend die ESP Salve klasse einen Puffer überträgt:
    https://github.com/esp8266/Arduino/b...e_Test.ino#L31

    Wie soll das bitte zusammen passen?

  10. #25
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.610
    Zitat Zitat von xorg1990 Beitrag anzeigen
    Laut Verdrahtung sollte es keinen Kontakt zwischen GPIO Pins und Flash speicher geben.
    nicht an den nach außen geführten gpios

    Zitat Zitat von xorg1990 Beitrag anzeigen
    GPIO14,12 und 13 werden benötigt für spi, der Flash hängt an ganz anderen Pins am ESP.
    ok, der esp scheint 2 spi schnittstellen zu haben
    esp8266_gpio_pin_allocations [ESP8266 Support WIKI]
    der flash hängt an einem multi io interface (sqi - gpio 6-11)
    und auf gpio 12-15 hast du ein weiteres spi

    Zitat Zitat von xorg1990 Beitrag anzeigen
    Wie soll ich das den Timen,
    timer isr alle 32khz -> flag setzen
    in loop() wenn flag sitzt adc wert lesen dann über spi an esp senden
    so einfach
    das einzige was zu beachten ist, der code in loop muss definiert fertig sein ehe der timer isr wieder kommt

    Zitat Zitat von xorg1990 Beitrag anzeigen
    Ich habe das ohnehin nicht verstandene die tynySPi Master Klasse sendet und empfängt ein byte gleichzeitig:
    https://github.com/JChristensen/tiny...spi_85.ino#L58
    wärend die ESP Salve klasse einen Puffer überträgt:
    https://github.com/esp8266/Arduino/b...e_Test.ino#L31
    ja gut, die esp schnittstelle ist komfortabler als die beim tiny (dafür vermutlich mit overhead)

    Zitat Zitat von xorg1990 Beitrag anzeigen
    Wie soll das bitte zusammen passen?
    wie? warum nicht, ob du jedes byte einzeln schickst und dann als puffer empfängst und umgekehrt ist ja egal?!

  11. #26
    Avatar von xorg1990
    xorg1990 ist offline König
    registriert
    20-12-2013
    Beiträge
    797

    AW: für xorg1990

    Zitat Zitat von tsseh
    timer isr alle 32khz -> flag setzen
    in loop() wenn flag sitzt adc wert lesen dann über spi an esp senden
    so einfach
    Ja ginge auch, fürs erste lasse ich erst mal den Attiny als Slave laufen.
    Aktuell warte ich nur noch auf die Logic level shifter, dann kann es los gehen.

    Zitat Zitat von tsseh
    wie? warum nicht, ob du jedes byte einzeln schickst und dann als puffer empfängst und umgekehrt ist ja egal?!
    Nicht ganz, die Attiny Spi klasse kann nur ein byte pro Event senden und empfangen, wiederum die esp klasse nur einen Puffer.
    Der avr kann nicht eine byte zum esp senden ein Hunderte kommen zurück, dann kommt "garbage" raus.

  12. #27
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.610

    AW: für xorg1990

    Zitat Zitat von xorg1990 Beitrag anzeigen
    Nicht ganz, die Attiny Spi klasse kann nur ein byte pro Event senden und empfangen, wiederum die esp klasse nur einen Puffer.
    ja gut und?
    beim tiny musst du
    transfer('h');transfer('a');transfer('l');transfer('l');transfer('h');transfer('o'); aufrufen um beim esp "hallo" zu empfangen.
    anders herum sendest du beim esp setData("hallo"); und musst auf dem tiny buffer[idx++] = transfer();buffer[idx++] = transfer();buffer[idx++] = transfer();buffer[idx++] = transfer();buffer[idx++] = transfer();buffer[idx++] = transfer(); zum empfang aufrufen.

    Zitat Zitat von xorg1990 Beitrag anzeigen
    Der avr kann nicht eine byte zum esp senden ein Hunderte kommen zurück, dann kommt "garbage" raus.
    ähhh was? ich versuch das mal zu deuten
    Zitat Zitat von xorg1990 Beitrag anzeigen
    Der avr kann nicht eine byte zum esp senden
    doch: transfer('X');
    Zitat Zitat von xorg1990 Beitrag anzeigen
    Hunderte kommen zurück
    wenn Hunderte zurück kommen, kann aber der tiny in der zwischenzeit nichts anderes machen als ein buffer[idx++] = transfer(); nach dem nächsten. das dürfte ungünstig sein.
    was willst du denn überhaupt machen?

    - - - Aktualisiert - - -

    Zitat Zitat von xorg1990 Beitrag anzeigen
    wärend die ESP Salve klasse einen Puffer überträgt:
    https://github.com/esp8266/Arduino/b...e_Test.ino#L31
    die passende master-implementierung liegt gleich daneben
    https://github.com/esp8266/Arduino/tree/master/libraries/SPISlave/examples/SPISlave_Master
    die mit der arduino-kompatiblen SPI-klasse https://github.com/esp8266/Arduino/blob/master/libraries/SPI/SPI.h

    https://github.com/esp8266/Arduino/blob/master/libraries/SPISlave/examples/SPISlave_Master/SPISlave_Master.ino#L111
    ruft
    https://github.com/esp8266/Arduino/blob/master/libraries/SPISlave/examples/SPISlave_Master/SPISlave_Master.ino#L98
    ruft
    https://github.com/esp8266/Arduino/blob/master/libraries/SPISlave/examples/SPISlave_Master/SPISlave_Master.ino#L88
    ruft
    https://github.com/esp8266/Arduino/blob/master/libraries/SPISlave/examples/SPISlave_Master/SPISlave_Master.ino#L69

    nebenbei: dort sieht man dass die slave-klasse immer 32 byte erwartet, du musst also immer 32 byte mit padding 0 übertragen und deine "hunterten bytes" auf 32-byte-blöcke aufteilen

  13. #28
    Avatar von xorg1990
    xorg1990 ist offline König
    registriert
    20-12-2013
    Beiträge
    797

    AW: für xorg1990

    Zitat Zitat von tsseh
    was willst du denn überhaupt machen?
    Praktisch das gleiche wie bei den WIFI Speakern nur als voll-duplex Lösung.

    Ich lasse aber den avr nun doch als SPi Client laufen, ich habe nur gerätselt wie das mit den CS Pin gehen soll beim Attiny85. Es gibt da ein 3-Wire Mode.

    Problem, ich kann meine Code nicht kompilieren:
    <built-in>: fatal error: when writing output to /tmp/arduino_build_169954/preproc/ctags_target_for_gcc_minus_e.cpp: No space left on device
    compilation terminated.
    exit status 1
    Fehler beim Kompilieren für das Board ATtiny25/45/85.
    Also meine Festplatte ich definitiv nicht voll!

    Oder meint Arduino den Code:
    Code:
    #define F_CPU 8000000UL
    #include "pins_arduino.h"
    
    
    #define bufferSize 128
    #define BUFFER_MASK (bufferSize-1)
    /*
      Pinmodes
      PB0 MOSI
      PB1 MISO
      PB2 Clock
      PB3 ADC Input
      PB4 PWM Out
    */
    static struct adc_FIFO {//ringBuffer als struct für pcm saples
      byte data[bufferSize];
      volatile byte read_ptr; // zeigt auf das Feld mit dem ältesten Inhalt
      volatile byte write_ptr; // zeigt immer auf leeres Feld
    } adc_buffer = {{}, 8000, 0};
    
    static struct pcm_samples_buffer {//ringBuffer als struct für pcm saples
      byte data[bufferSize];
      volatile byte read_ptr; // zeigt auf das Feld mit dem ältesten Inhalt
      volatile byte write_ptr; // zeigt immer auf leeres Feld
    } pcm_buffer = {{}, 0, 0};
    
    void setup() {
      cli();
      // Enable 64 MHz PLL and use as source for Timer1
      PLLCSR = 1 << PCKE | 1 << PLLE;
      // Set up Timer/Counter1 for PWM output
      TIMSK = 0;                              // Timer interrupts OFF
      TCCR1 = 1 << CS10; //1<<PWM1A | 2<<COM1A0 | 1<<CS10; // PWM A, clear on match, 1:1 prescale
      GTCCR = 1 << PWM1B | 2 << COM1B0;       // PWM B, clear on match
      OCR1B = 128;               // 50% duty at start on pin PB4
      // Set up Timer/Counter0 for 44.1kHz interrupt to output samples.
      TCCR0A = 3 << WGM00;                    // Fast PWM sets bits WGM00 and WGM01, which (when combined with WGM02 from TCCR0B below) enables Fast PWM mode
      TCCR0B = 1 << WGM02 | 2 << CS00;        // 1/8 prescale
      TIMSK = 1 << OCIE0A;                    // Enable compare match
      OCR0A = 22;                            // 22us = 44100HZ
      //pinModes
       pinMode(MOSI, INPUT);// initialize the MOSI Port (PIN 0) 
     pinMode(MISO, OUTPUT);// initialize the MISO Port (PIN 1) 
     pinMode(SCK, INPUT);// initialize the SCK Port (PIN 2) 
      pinMode(4, OUTPUT);
      pinMode(3, INPUT);
    
     USICR = (1<<USIWM0)  // SPI mode; Uses DO, DI, and USCK pins.
             |(1<<USIOIE)  // Enable interrupt
             |(1<<USICS1) // Clock is external
             |(0<<USICS0); // SPI Mode 0
      
      //ADC settings 8bit value
      ADMUX =   3 | //channel 3
                (1 << ADLAR) |     // left shift result
                (0 << REFS1) |     // Sets ref. voltage to VCC, bit 1
                (0 << REFS0);    // Sets ref. voltage to VCC, bit 0
    
      ADCSRA =
        (1 << ADEN)  |     // Enable ADC at 38,46 kHz Samplerate
        (1 << ADSC)    | // start conversion
        (1 << ADATE)   | // free running
        (1 << ADPS2) |     // set prescaler to 8, bit 2
        (0 << ADPS1) |     // set prescaler to 8, bit 1
        (0 << ADPS0);      // set prescaler to 8, bit 0
      sei();  // enable interrupts
    }
    
    
    ISR(ADC_vect)// interuppt each 38kHz
    {
      byte adcValue = ADCH;
      register byte next = ((adc_buffer.write_ptr + 1) & BUFFER_MASK);
      if (adc_buffer.read_ptr != next) {
        adc_buffer.data[adc_buffer.write_ptr] = adcValue;
        //buffer.data[buffer.write_ptr & BUFFER_MASK] = byte;
        adc_buffer.write_ptr = next;
      }
    }
    
    // Sample interrupt 44.1khz
    ISR(TIMER0_COMPA_vect) {
      if (pcm_buffer.read_ptr != pcm_buffer.write_ptr) {
        byte sample  =  pcm_buffer.data[pcm_buffer.read_ptr];
        pcm_buffer.data[pcm_buffer.read_ptr] = 0;
        OCR1B = sample;
        pcm_buffer.read_ptr = (pcm_buffer.read_ptr + 1) & BUFFER_MASK;
      }
    }
    
    ISR(USI_OVF_vect){
      byte incommingByte = 0;
      // Wait for complete byte to arrive
     while ((USISR & (1<<USIOIF))==0) {
     }
     // Clear counter overflow flag so next byte can begin arriving
     // While we're processing this one
     USISR = (1<<USIOIF);
     incommingByte = USIDR;
    }
    
    void loop() {
    }

  14. #29
    tsseh ist offline Foren-Gott
    registriert
    19-05-2008
    Beiträge
    5.610

    AW: für xorg1990

    Zitat Zitat von xorg1990 Beitrag anzeigen
    Praktisch das gleiche wie bei den WIFI Speakern nur als voll-duplex Lösung.
    ich habs immer noch nicht verstanden, egal
    aber warum voll-duplex? das würde ich ja auf keinen fall so machen

    Zitat Zitat von xorg1990 Beitrag anzeigen
    Problem, ich kann meine Code nicht kompilieren:
    gnu fehlermeldungen - manchmal recht "gewöhnungsbedürftig"
    das ist alles an code? dann kann es nicht die größe sein. hast du schreibrechte?

  15. #30
    Avatar von xorg1990
    xorg1990 ist offline König
    registriert
    20-12-2013
    Beiträge
    797

    AW: für xorg1990

    Zitat Zitat von tsseh
    aber warum voll-duplex? das würde ich ja auf keinen fall so machen.
    Ich auch nicht aber man muss ja Wettbewerbsfähig bleiben.
    Die einfachen Licht-Sende-Empfänger sind voll Dupelx Fähig, da das muss man ja Toppen.
    ELiSE steht für „Einfacher Licht-Sender-Empfänger“, wobei mit zwei Bausätzen sogar Gegensprechen möglich ist!
    https://www.aatis.de/content/amateur...C3%BCber-licht

    Der nachteil ist aber die Modulieren AM, das ist nicht so effizient wie PWM. Die Idee war über den ESP die Daten über Wlan rüber zu schaffen. Weil, a habe ich keine bock neben ein Laser zu stehen und b einmal an das Stativ kommen und die Laser sind nicht mehr justiert.

    Zitat Zitat von tsseh
    das ist alles an code? dann kann es nicht die größe sein. hast du schreibrechte?
    Hab's gefunden mein /tmp Verzeichnis ist voll. ich wusste gar nicht das das voll werden kann.

    Wie dem auch sei ich komme aktuell nicht weiter, da die Pegelwandler noch nicht gekommen sind. Außerdem platzt mir bald der Schädel.

    Vater hat Hodenkrebs, Muttern kann nicht mehr laufen weil was mit dem Knie und von meiner Freundin, deren Beste Freundin liegt im Streben.
    Frag nicht was hier los ist... ein Geweine.

    Die Umstände sind mehr als scheiße, da sie Ursprünglich aus Venezuela kommt und hier niemanden hat. Und Krebs ist ein scheiß, sie hat eine Gehirnblutung am Stammhirn/Hirnstamm. Ich war gestern im KH, habe bald gekotzt und ich habe schon viel erlebt. Das letzt war vor 2 Jahren auf Arbeit, da ist eine Kette beim Spunden gerissen und auf meine Kollegen drauf, das sind Bilder... ach seiß auf die Bilder das Geräusch.
    https://www.youtube.com/watch?v=xk2rvgONzYQ

    Hier hilft nur noch gute Musik.
    https://www.youtube.com/watch?v=rAsgIwkGAwY
    oder:
    https://www.youtube.com/watch?v=5-NsrOP_dqg
    Geändert von xorg1990 (10-05-2017 um 21:50 Uhr)

Lesezeichen

Berechtigungen

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