Fórum témák

» Több friss téma
Fórum » ESP8266 wifi modul
Lapozás: OK   44 / 44
(#) sanyisay válasza atus1981 hozzászólására (») Szept 13, 2017 / 1
 
Jól mondja "Kovabe" kollega,
ha túl hosszú ideig dolgozik egy ciklus akkor watchdog lesz a vége.
Ha mást nem delay(x), vagy yield() kell az ilyen ciklusokba.
Nem szabad lefoglalni a processzor időt mert kell a wifi és egyéb dolgoknak. delay és yield várakozás alatt automatikusan futtatja a háttér folyamatokat. Valahol ez szépen le van írva de már nem tudom hol.
A delay() viszont nem a barátunk mert közben minden feladatunk tétlenségre van kárhoztatva úgyhogy inkább Ticker használatát javaslom, mindenféle időzítésre, így "párhuzamosan" futtathatunk több feladatot.
Bővebben: Link


ui.: yield() kb egyenlő a delay(0) val nem késleltet csak életben tartja a háttérfolyamatokat.
A hozzászólás módosítva: Szept 13, 2017
(#) pipi válasza atus1981 hozzászólására (») Szept 13, 2017 / 1
 
Hali!
ezt lövi ki a wd, ebbe hal bele:
while(digitalRead(ir)== HIGH)
{};
kell bele egy yield()
(#) atus1981 hozzászólása Szept 13, 2017 /
 
Köszi mindenkinek!
  1. display.setTextAlignment(TEXT_ALIGN_CENTER);
  2.     display.setFont(ArialMT_Plain_24);
  3.     display.drawString(64, 15, String(count) + "db");

Ezt beletettem a while ciklusba, hogy csináljon is valamit, így nem resetel.
Ez a yield(), meg a ticker dolog nekem új, nem is tudom hogyan kellene alkalmazni.
(#) sanyisay válasza atus1981 hozzászólására (») Szept 13, 2017 / 1
 
yield-et próbáltam leírni mire kell, reméltem érthető.

Ticker meg egyszerűen a beállított idő elteltével meghívja a beállított függvényt a megadott paraméterekkel. Persze ticker függvényében sem célszerű túl hosszú időt tölteni mert az is wd gondot okozhat. (ilyenkor célszerű egy változó értékét átállítani és loop ból figyelni hogy ha volt ticker akkor történjen a bonyolult esemény) Pld ha ledet szeretnél villogtatni amolyan visszajelzésféleképp, akkor ha delay-el teszed más nem is fog futni. Ezzel meg megoldható úgy hogy közben a kódod dolgozik.

Ez a példa pont ezt csinálja.
Bővebben: Link


  1. tickerSetLow.once(0.25, []() {digitalWrite(1, 1);});

így lehet függvény nélkül használni
az once azt jelenti hogy csak egyszer fut le a megszakítás, attach meg folyamatos.

  1. tickerSetLow.detach()

ez meg leállítja

Röviden ennyi



ui.
itt

WDT reset elkerülésére ajánlják a TickerScheduler használatát de az valahogy nekem nem működött, igaz nem is foglalkoztam vele sokat
A hozzászólás módosítva: Szept 13, 2017
(#) Tardief hozzászólása Szept 14, 2017 /
 
Sziasztok!

Szeretnék egy PIC16f690 és egy ESP-12 között UART-on keresztül adatot küldeni.
integer értékekről lenne szó.

Csináltam is egy próbát, ahol az ESP elküld egy 10-es számot a PIC-nek az pedig visszaküldi. Sajnos a PIC nem küld vissza értékelhető adatot. Egy ftdi232 segítségével néztem, hogy mit küldenek.

Az ESP kódja:
  1. #include <ESP8266WiFi.h>
  2. #include <WiFiClient.h>
  3. #include <ESP8266WebServer.h>
  4. #include <SoftwareSerial.h>
  5. int x = 10;
  6. int received=1;
  7. int j = 0;
  8. void setup() {
  9.   //Serial.begin(9600);
  10.   Serial.begin(9600, SERIAL_8N1);
  11.  
  12.  
  13.  
  14. }
  15.  
  16. void loop() {
  17.  
  18.     Serial.print(x);
  19.     //serial.write( x );
  20.      if (Serial.available()){
  21.       received = Serial.read();
  22.         for( j = 0; j<received; j++){
  23.             digitalWrite(2, HIGH);   // turn the LED on (HIGH is the voltage level)
  24.             delay(500);              // wait for a second
  25.             digitalWrite(2, LOW);    // turn the LED off by making the voltage LOW
  26.             delay(500);
  27.         }
  28.       }
  29.      delay(500);
  30. }


A pic kódja:

  1. #include <16F690.h>
  2. #device ADC=16
  3. #use delay(internal=4M)
  4.  
  5. #use rs232(baud=9600, xmit=PIN_B7, rcv=PIN_B5)
  6.  
  7. void main ()
  8. {
  9.    unsigned char value = 0;
  10.    unsigned char count = 0;
  11.    for (;;)
  12.    {
  13.       while (!kbhit ());         // Amíg nem érkezik adat az UART-on, várakozunk
  14.       value = getc ();           // Ha a kbhit () 1-et ad vissza, akkor kilépünk a while ciklusból és kiolvassuk a vett bájtot
  15.       putc(value);
  16.       for (count = 0; count < value; count++)   // A for ciklusban pedig annyit villantunk a leden, amekkora a value értéke
  17.       {
  18.          output_high (PIN_C0);
  19.          delay_ms (100);
  20.          output_low (PIN_C0);
  21.          delay_ms (100);
  22.       }
  23.    }
  24. }


Van ötletetek, hogy mi lehet a gond?
(#) TheShaft hozzászólása Csü, 17:21 /
 
Sziasztok!
Nézegetem egy ideje ezeket az ESP8266-tal szerelt modulokat, de kicsit zavarban vagyok, mert rengetegféle kivitelt láttam. Létezik valamiféle összefoglaló anyag, amelyből össze lehet a modulokat hasonlítani?
(#) nedudgi válasza TheShaft hozzászólására (») Csü, 18:04 /
 
(#) TheShaft válasza nedudgi hozzászólására (») Csü, 18:21 /
 
Köszönöm. Ezek szerint nem az Espressif gyártja ezek nagy részét.
(#) TheShaft hozzászólása Pé, 19:23 /
 
ESP-07S modul külső antennával mekkora hatótávolsággal rendelkezik? Van valakinek ilyen tapasztalata? Mennyivel "rosszabb" a PCB antennás verzió?
(#) nedudgi válasza TheShaft hozzászólására (») Pé, 20:48 /
 
(#) TheShaft válasza nedudgi hozzászólására (») Pé, 22:32 /
 
Köszönöm. Szóval 90 vs 150m....
Következő: »»   44 / 44
Bejelentkezés

Belépés

Hirdetés
Frissek
2017. Szept, 25. Hé
2:54:04
Jelenleg 47 fő olvassa az oldalt
Online tagok:
Lapoda.hu     XDT.hu     HEStore.hu