Keresés

Részletes keresés

Törölt nick Creative Commons License 2017.01.23 0 0 2790

IDE 1.6.4

Sketch uses 30 296 bytes (93%) of program storage space. Maximum is 32 256 bytes.
Global variables use 1 530 bytes (74%) of dynamic memory, leaving 518 bytes for local variables. Maximum is 2 048 bytes.

Free ram: 437

5
Free ram: 431
5
Free ram: 431
5
Free ram: 425
5
Free ram: 424
5
Free ram: 417
5
Free ram: 408
5
Free ram: 398
5
Free ram: 388
5
Free ram: 378
5
Free ram: 370
5
Free ram: 365
5
Free ram: 360
5
Free ram: 355
5
Free ram: 350
5
Free ram: 342
5
Free ram: 332
5
Free ram: 324
5
Free ram: 316

 

IDE 1.8.0

Sketch uses 27080 bytes (83%) of program storage space. Maximum is 32256 bytes.
Global variables use 1540 bytes (75%) of dynamic memory, leaving 508 bytes for local variables. Maximum is 2048 bytes.
Low memory available, stability problems may occur.

Free ram: 255
5
Free ram: 249
5
Free ram: 249
5
Free ram: 243
5
Free ram: 242
5
Free ram: 235
5
Free ram: 226
5
Free ram: 216
5
Free ram: 206
5
Free ram: 205
5
Free ram: 204
5
Free ram: 199
5
Free ram: 194
5
Free ram: 189
5
Free ram: 184
5
Free ram: 183
5
Free ram: 173
5
Free ram: 172
5
Free ram: 171
5

Előzmény: titusz99 (2789)
titusz99 Creative Commons License 2017.01.23 0 0 2789

Azt már jeleztem, hogy az SD-re írásod kritikus.

Azt a részt át kell írni, mert nagyon sok RAM-ot eszik.

A "reserve(200)" lehet, hogy sok, ki kell számolni, de jobban jársz ha beállítod.

Javaslom, hogy serialra írasd ki a freemem értékét minden egyes sor előtt.

Akkor kiderül, hogy mi a helyzet.

Az "= String(valami);" helyett "=valami;".

 

(Kevés RAM esetén a String-ek nem működnek. Ilyenkor üresek lesznek.)

Előzmény: Törölt nick (2787)
Törölt nick Creative Commons License 2017.01.23 0 0 2788

Sketch uses 26730 bytes (82%) of program storage space. Maximum is 32256 bytes.
Global variables use 1530 bytes (74%) of dynamic memory, leaving 518 bytes for local variables. Maximum is 2048 bytes.

 

Viszont különbözik a méret az verziótól függően is, a fenti IDE 1.8.0v, az előbbi  IDE 1.6.4v volt.

Viszont csak IDE 1.6.4v-val jeleníti meg helyesen a 4x20 soros I2C lcd a karaktereket.

Előzmény: Törölt nick (2787)
Törölt nick Creative Commons License 2017.01.23 0 0 2787

Sketch uses 29 816 bytes (92%) of program storage space. Maximum is 32 256 bytes.
Global variables use 1 520 bytes (74%) of dynamic memory, leaving 528 bytes for local variables. Maximum is 2 048 bytes.

Át kellett írni a kódot, az SD kártyára nem írt ki adatot:

 

void sd_iras()
{
SD.begin(A0);
byte second, minute, hour, dayOfWeek, dayOfMonth, month, year;
// retrieve data from DS3231
readDS3231time(&second, &minute, &hour, &dayOfWeek, &dayOfMonth, &month,
&year);

// Lakástermosztát fűtésre kapcsol= A3=5V
int sensorValue = analogRead(A3);
float LAKASFUTES = sensorValue * (5.0 / 1023.0);

String dataString =""; //String dataString; helyett
//dataString.reserve(200);
dataString += String(dayOfMonth, DEC);

Előzmény: titusz99 (2753)
titusz99 Creative Commons License 2017.01.23 0 0 2786

A hiba (reset probléma) a soros programozáskor fordulhat elő (16u2 irányából).

Programozó használatát nem érinti.

A 10 V-os ütés a reset lábon egy kicsit túlzás.

Azért van a védődióda a felhúzó-ellenállással párhuzamosan.

Talán egy zéner jobb lett volna.

Ezek szerint a szerzőnél lévő példány hibás volt, akkor elképzelhető, hogy az uno programozása hibára futott.

 

Előzmény: Vargham (2784)
323i Creative Commons License 2017.01.23 0 0 2785

Szerintem igen, nekem segitett.

Előzmény: nagyharcos (2781)
Vargham Creative Commons License 2017.01.23 0 0 2784

>Ez a kondenzátoros reset nekem vakításnak tűnik.

Ezt hogy érted?

https://rheingoldheavy.com/arduino-from-scratch-part-11-atmega328p-dtr-and-reset/

Előzmény: titusz99 (2783)
titusz99 Creative Commons License 2017.01.23 0 0 2783

Az 1.7.11-es Arduino IDE mega bootlodere szerint (stk500v2) kezeli a wdt-t.

Ezért azt javaslom, hogy próbáld azt feltölteni.

Ha a teszt ezek után is lefagy akkor vagy fordítasz vagy keresel hozzá való bootloader-t ami jó.

Ez a kondenzátoros reset nekem vakításnak tűnik.

A programozó egyik kimenetével pisztergálja a reset lábat.

Szóval kimenetet terhelsz egy kondival.

Előzmény: nagyharcos (2781)
titusz99 Creative Commons License 2017.01.23 0 0 2782

Ha lefagy, elszáll a wdt használata(tesztje) során akkor igen, olyan bootloader-re ami kezeli a wdt-t.

Előzmény: nagyharcos (2781)
nagyharcos Creative Commons License 2017.01.23 0 0 2781

Szia!

Kipróbáltam a kína megámaon a WDT-t. Nálam is kifagy!  Egyébként minden oké... Ezek szerint nekem is le kéne cserélnem a bootloadert?

Előzmény: 323i (2780)
323i Creative Commons License 2017.01.23 0 0 2780

Sikerult a bootloader frissites!

Tegnap linux alatt probaltam, ott vmiert nem ment; ma win alatt (ugyanugy kabelezve mint tegnap), elore megcsinalta.

Feltoltottem a wdt-t es szepen ujrainditgatja magat a mega.

 

Tehat az unorol a mega bootloader frissites megy; visszafele azt a hibat irja ki, amit a kondi hianya okoz. Ha sikerul ez is, megirom.

 

Addig is koszonom mindenkinek aki probalt segiteni!

Előzmény: titusz99 (2775)
323i Creative Commons License 2017.01.22 0 0 2779

Nalam mega/uno szinten ugyanugy fagy.

Ha megvagyok a bootloader update-tel, jelzem es bizom benne hogy mukodni fog a wdt.

Előzmény: Törölt nick (2778)
Törölt nick Creative Commons License 2017.01.22 0 0 2778

https://bigdanzblog.wordpress.com/2014/10/23/installing-the-optiboot-loader-on-an-arudino-nano-to-fix-the-watch-dog-timer-wdt-issue/

https://bigdanzblog.wordpress.com/2014/10/24/arduino-watchdog-timer-wdt-example-code/

https://learn.sparkfun.com/tutorials/installing-an-arduino-bootloader

Ezek alapján a nanon sikerült bekapcsolni a wdt funkciót, a nano uno-ként viselkedik.

Nem lettem előrébb, a lefagyás wdt-vel is teljes, az az elektronikai rész is lefagy, csak a tápfeszültség ki-be kapcsolás oldja meg az újra indítást.

Az igen erős mágneses zavar, pl. egy induktív kapcsolás üti ki a magyarázatok szerint, azt kerülni kell.

A kódban is lehetnek hibák, nálam a delay(); időzítés elmaradása határozott stabilitás javulást eredményezett.

Előzmény: 323i (2776)
323i Creative Commons License 2017.01.22 0 0 2777

Ez alapjan kotottem ossze a mega-t es az uno-t. 2:12-nel van az, amikor inditja a bootloader feltoltest, nekem akkor hibat ir ki, amire ezt talaltam itt: "2. When getting this error:  avrdude: stk500_getsync(): not in sync: resp=0x00
You did not put an 100nF capacitor between +5v and RESET pin on the Arduino Mega 2560". Szo szerint nem ez a hibauzenet amit kapok, de ugyaningy kezdodik. Szoval a jovo heten vmikor kiprobalom 100n-s kondit a +5 es a reset koze, ahogy irjak.

Előzmény: titusz99 (2775)
323i Creative Commons License 2017.01.22 0 0 2776

Ezek sajnos nem segitettek, marad a bootloader csere.

Előzmény: Prof (2772)
titusz99 Creative Commons License 2017.01.22 0 0 2775

Van egy usbasp-om ilyen esetekre.

A bootloader, ami az arduino ide része.

Annyi, hogy kicsit át kell írni a boards.txt-t.

Az interneten rengeteg anyag van ezzel kapcsolatban.

Arról is, hogy hogyan lehet egyik arduinoval a másik bootloaderét cserélni vagy egyszerűen csak programozni.

Előzmény: 323i (2774)
323i Creative Commons License 2017.01.22 0 0 2774

Masik Arduino-val frissitetted a bootloadert?

Honnan toltotted le hozza az optiboot-ot?

 

Ezt en sem ertem, azert (is) vettem nano/uno/megat, hogy valamelyiken csak jo lesz, de nem. A masik ok pedig az, hogy igy egyikkel tudjam a masikon frissiteni a bootloadert.

 

A bootloader-t verziojat ki lehet valahogyan olvasni, vagy pl. ezzel a wdt-s teszttel lehet tudni hogy nem a legutolso verzio?

Előzmény: titusz99 (2773)
titusz99 Creative Commons License 2017.01.22 0 0 2773

Ha bármelyik wdt tesztet futtatva lefagy, akkor bootloadert kell cserélni.

Csere után, lehet tesztelni.

Miattad a NANO-mat teszteltem.

Lefagyott, optiboot-ra lecseréltem.

A teszt sikereses futott.

 

Én csak azt nem értem, hogy ennyi év után még most is a régi bootloader-rel árulják a modulokat.

Egyébként az alap bootloader tartalmazza a wdt kezeléséhez szükséges kódsorokat.

Csak ahhoz úgy kell lefordítani.

A legújabb arduino ide is csak a régi bootloadert tartalmazza. Kiprobáltam.

Előzmény: 323i (2771)
Prof Creative Commons License 2017.01.22 0 0 2772

Szia!

Try-and-error...

http://forum.arduino.cc/index.php?topic=176329.0

És innen hivatkozva:

http://www.fiz-ix.com/2012/11/low-power-arduino-using-the-watchdog-timer/

 

Alapvetően az a véleményem, hogy az MCU státuszregiszterei vannak némileg elbarmolva (ez nem a te hibád, de csak te tudod rendbeszedni őket). Javaslom még azt, hogy a wdt_enable() mellett a wdt_reset() is legyen meghívva még a setup vége felé.

Előzmény: 323i (2771)
323i Creative Commons License 2017.01.22 0 0 2771

Szia,

 

eddig barmivel probaltam, mindig az volt a vegeredmeny, hogy latszolag probal ujraindulni, de ott mindig lefagy.

 

Most ezzel probalom.

 

A setup-ban eloszor letiltom, utana varok 1000ms-ot, a led-et kikapcsolom, utana engedelyezem ujra a wdt-t.

Az indulaskor meg is csinalja szepen, 3x gyorsan villogtatja a ledet, majd kb. meg 2x 1mp-es kesleltetessel, utana indulna ujra, de mar a led-et sem tudja lekapcsolni, odaig sem jut el.

Probaltam ugy is, hogy az ujraindulaskori led kikapcsolast tettem rogton a setup elso soraba, de ugyanez tortent akkor is.

 

===

#include <Arduino.h>
#include<avr/wdt.h>
const int onboardLED = 13;

void setup() {
  wdt_disable();

  digitalWrite(onboardLED, LOW);
  delay(1000);
  wdt_enable (WDTO_4S);
  pinMode(onboardLED, OUTPUT);
  int k;
  pinMode(13,OUTPUT);
  pinMode(onboardLED, OUTPUT);
  for (k = 1; k <= 3; k = k + 1) {
    digitalWrite(onboardLED, HIGH);
    delay(250L);
    digitalWrite(onboardLED, LOW);
    delay(250L);
  }
}

void loop(){
  delay(1000);
  digitalWrite(onboardLED, HIGH);
  delay(1000);
  digitalWrite(onboardLED, LOW);
}

===

 

Az elozo kodot (while(1)) amit kuldtem, az in-en talaltam, azert probaltam ki azt is, mert amit eredetileg probaltam es kuldtem, azzal sem mukodott.

A serial.print azert kerult bele az egyik peldaba, hogy lassam meddig jut el a wdt utan.

 

Itt talaltam egy reset teszet: https://github.com/Optiboot/optiboot/tree/master/optiboot/examples/test_reset -et, aminek van egy ilyen resze:

 

===

 if (resetFlags != 0x00)
  {
    // It should never enter here
    Serial.print(" Unknown");
  }

===

 

nalam persze rafut ide es ki is irja a serial.monitoron. Szoval nem vagyok meg elobbre.

 

Valamiert azt gondolom (ill. inkabb csak megerzes), hogy az optiboot-os bootloader update oldana meg a problemamat...

 

Zaraskent kiprobaltam meg millis-sel:

 

===

#include <Arduino.h>
#include<avr/wdt.h>
const int onboardLED = 13;

void setup() {
  wdt_disable();
  Serial.begin(9600);
  digitalWrite(onboardLED, LOW);
  delay(1000);
  wdt_enable (WDTO_8S);
  pinMode(onboardLED, OUTPUT);
  int k;
  pinMode(13,OUTPUT);
  pinMode(onboardLED, OUTPUT);
  for (k = 1; k <= 3; k = k + 1) {
    digitalWrite(onboardLED, HIGH);
    delay(250L);
    digitalWrite(onboardLED, LOW);
    delay(250L);
  }
}

void loop(){
  unsigned long Time1 = 0;
  unsigned long Time2 = 0;

  Time1 = millis();
  delay(500);
  Time2 = millis();
  Serial.print(Time1);
  Serial.print("       ");
  Serial.println(Time2);
  delay(100);
 
  delay(1000);
  digitalWrite(onboardLED, HIGH);
  delay(1000);
  digitalWrite(onboardLED, LOW);
}

===

 

7700 es 8200-ig jut el az egyik es a masik szamlalo, akkor jon(ne) a reset es onnaltol semmi sem tortenik.

Előzmény: Prof (2770)
Prof Creative Commons License 2017.01.21 0 0 2770

Szia!

 

Igen, szoftver.

 

A felállást úgy kell érteni, hogy hogyan van a projektbe építve a watchdog. Milyen időközönként avatkozik be, mennyi ideig vár ki stb.

 

Ezzel a kóddal valószínűleg mindenen meg fog állni induláskor. A korábban általad küldött mintában elég egyértelműen le van írva pár szabály, amit érdemes betartani:

-- setup alatt ki kell kapcsolni (ha a void setup nem fut le, ott azért súlyos bajok vannak),

-- kivárás az élesítés előtt (wathdog, hogy ne forduljon végtelen reset-körbe a kártya és kelljen bootloadertől újra húzni),

-- megfelelő időközönként nullázni kell a watchdogot.

 

Igen, erre gondoltam, hogy mit csinálsz éppen a kontrollerrel.

 

Ami a kódot illeti. A loop-on belüli while(1) nem tudom, honnan jött, de teljesen felesleges. A loop() az Arduino keretrendszerben while(1)-ként funkcionál. A kódnak kb. 8 mp-ig kellene futnia, utána reset. Én elvetném egyelőre a Serial.print-et, és helyette a ledet villogtatnám (mint a példaprogramban). Ahogy azt nálam hozzáértőbbek néhányszor már alaposan kitárgyalták a Serial (így a Serial Monitor megnyitása) nem várt hatásokhoz vezethet.

E mellett még megpróbálnám a példaprogramban írt megoldást (wdt_disable(); a setup-ban), illetve ha már ragaszkodsz hozzá, több és informatívabb kiírást (Serial.print) mindenféle helyeken, különös tekintettel az időre ( millis() ). Ha reset után történik a baleset, tisztázni kellene, hogy mikor és mi történik, valóban van-e reset (tehát elindul újra a program a setup-tól vagy sem).

 

Az eredeti példaprogram működik?

Előzmény: 323i (2769)
323i Creative Commons License 2017.01.20 0 0 2769

Szia,

 

hogy a kerdeseidre valaszoljak:

- gondolom szoftver

- ezt a kerdest nem ertem

- ezzel a koddal Unon ugyanugy megall ujraindulaskor:

- milyen hw-es kornyezetre gondolsz? Nincs semmi az Unon.

 

Nalad milyen koddal mukodik?

 

===

#include<avr/wdt.h>
int i=0;

void setup() {
pinMode(13,OUTPUT);
Serial.begin(9600);
wdt_enable (WDTO_8S);
}

void loop(){
while(1){
i++;
delay(500);
Serial.println(i);
}
}

===

Előzmény: Prof (2706)
Vargham Creative Commons License 2017.01.20 0 0 2768

Szerintem ennél többet távgyógyításban nehéz mondani.

 

Kimérheted még multiméterrel:

  • rx-tx láb között nincs-e zárlat
  • rx, tx és GND, Vcc között nincs-e zárlat
  • CH340 rx, tx lába és az AVR rx, tx lába között nincs-e szakadás

 

+1 ötlet:

Próbáld meg másik gépen, amin nem XP van. (Az XP-t amúgy is érdemes lecserélni.)

Előzmény: szla0056 (2767)
szla0056 Creative Commons License 2017.01.20 0 0 2767

Rendben, akkor "ezzel" nem foglalkozom.

De azt azért továbbra is jó lenne tudni, hogy miért nem megy.

Előzmény: Vargham (2766)
Vargham Creative Commons License 2017.01.20 0 0 2766

> Gondolom a BN-re is illene valamit kapnia, ezt már a kontrollertől, igaz?

Nem, az marad unknown. Ne foglalkozz vele. Mondtam már, hogy nem jelent semmit.

Előzmény: szla0056 (2765)
szla0056 Creative Commons License 2017.01.20 0 0 2765

Igazad van, gugliban tényleg megtaláltam a VID/PID-et.

Gondolom a BN-re is illene valamit kapnia, ezt már a kontrollertől, igaz?

 

A reset-nyomós indítást is próbáltam már, eredmény ugyanaz.

 

Előzmény: Vargham (2764)
Vargham Creative Commons License 2017.01.20 0 0 2764

> Bocs az értetlenkedésért, de ezek szerint ez a kommunikáció csak az illesztővel történt eddig?

Igen

 

> És mit takar a VID, a PID és a BN?

Google? (USB hardver azonosító: Vendor ID és Product ID. A BN-t pedig Arduino Board Namenek tippelem.)

 

> A bekapcsolás után folyamatosan villogó L led azt jelzi hogy fut egy bootloader?

Azt hiszem, de most nem találom az információ forrását.

 

> És a hibaüzenet szerint a kontroller nem válaszol?

Pontosan

 

Tartsd lenyomva a reset gombot, és csak akkor engedd el, amikor kiírja, hogy "Uploading..."

Előzmény: szla0056 (2763)
szla0056 Creative Commons License 2017.01.20 0 0 2763

Bocs az értetlenkedésért, de ezek szerint ez a kommunikáció csak az illesztővel történt eddig?

És mit takar a VID, a PID és a BN?

A bekapcsolás után folyamatosan villogó L led azt jelzi hogy fut egy bootloader?

És a hibaüzenet szerint a kontroller nem válaszol?

Előzmény: Vargham (2762)
Vargham Creative Commons License 2017.01.20 0 0 2762

> Az jó, ha most nem számít. De mit is jelent? És ezt a Nanoból kapta vissza? Akkor valami kommunikáció már van, vagy ez még nem jelenti azt?

A nano, mint minden Arduino, két fő részből áll. A cél mikrokontrollerből, ami itt ATmega 328P-PU, és a soros USB illesztő mikrokontrollerből, ami itt CH340. Tehát ez az információ semmi mást nem jelent, mint azt, hogy sikeresen lekérdezte USB kapcsolaton az illesztő VID/PID párosát.

Előzmény: szla0056 (2761)
szla0056 Creative Commons License 2017.01.20 0 0 2761

Az jó, ha most nem számít. De mit is jelent? És ezt a Nanoból kapta vissza? Akkor valami kommunikáció már van, vagy ez még nem jelenti azt?

Előzmény: Vargham (2760)

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!