Fórum témák

» Több friss téma
Fórum » Arduino
A klónok CH340 Soros-USB illesztőjének drivere (Letöltés)
Lapozás: OK   684 / 839
(#) Rober_4 válasza Josi777 hozzászólására (») Ápr 1, 2021 /
 
Ugye alapvetően arra kell vigyázni, hogy az Arduinó és a eeprom ne egy kimenetre dolgozzon egyszerre. Erre különösen ügyeltem.
A címbuszra a következő tesztértékeket küldtem:
0,127,256,511,1024,2048,4096,8192,10384,16385,32767
Tudom kevesebb variáció is elég lett volna...
Mindegyik érték tökéletesen megjelent a címvezetékeken. Ezek rajta is maradnak a setAdress() parancs után.
Az output enable mindig olyan érték, ami volt előtte, és olyan is marad. Tehát, ha olvasás volt akkor output módban van. Ilyenkor az oe-0-át vesz fel, ha nem az volt előtte. A write enable ilyenkor magas szinten van mindvégig. Megmértem.
Írásnál, ugye átállítódnak inputra az arduinó kimenetei, ilyenkor nem a kiírt adat olvasható rajta, hanem az eeprom kimenete, amikor mind a 8 bit 1-es, és sajnos az soha nem is változik...
Megnöveltem a delay értékét, és mérhető volt, mikor a write enanle leváltott nullára, majd vissza.
Két napja méregetem, tanulmányozom a dolgot, egyszerűen nem értem, miért nem jó...
Lehet pár kondenzátort előhalászok...
A hozzászólás módosítva: Ápr 1, 2021
(#) Rober_4 válasza sdrlab hozzászólására (») Ápr 1, 2021 /
 
A 8 adatlábra kellene kondenzátor?
(#) sdrlab válasza Rober_4 hozzászólására (») Ápr 1, 2021 /
 
Itt már leírtam....
(#) Rober_4 válasza sdrlab hozzászólására (») Ápr 1, 2021 /
 
Ja hogy a shift regiszteren! Ok.
(#) sdrlab válasza Rober_4 hozzászólására (») Ápr 1, 2021 /
 
Igen, arról beszéltem....

Ha van másik EEPROM-od, érdemes lenne azzal is próbálkoznod..., vagy esetleg valami olyan azonosítót lekérdezni, ami nem függ adatvédelemtől! Elvileg kell lennie benne valami ID-nek.... rég foglalkoztam ilyesmivel...
(#) Lamprologus válasza Thomas10100 hozzászólására (») Ápr 1, 2021 /
 
Mit is szeretnél pontosan?
(#) majkimester válasza Rober_4 hozzászólására (») Ápr 1, 2021 / 1
 
Mielőtt sdrlab javaslatát kipróbálod, tegyél 100..220nF kerámia kondenzátorokat az U2, U3 és U4 táp és GND lábai közé, minél közelebb az IC-khez.

A EEPROM írásvédett a tápfesz rákapcsolása után tipikusan 5mS-ig, mielőtt nekiállsz írni érdemes várni 10mS-et.
(#) Thomas10100 válasza Lamprologus hozzászólására (») Ápr 1, 2021 /
 
Arduino unom van. Nextion editorban a debug funkcióval szimulálni a projektet. (kijelzőm nincs)
(#) Josi777 válasza Rober_4 hozzászólására (») Ápr 2, 2021 / 1
 
Ahogy írtam, a 3 LED-es dolgot megcsináltad? A címbusz megfelelő működése az EEPROM nélkül is ellenőrizhető, az EEPROM majd csak az írásnál kell, de előbb azt is lehet ellenőrizni nélküle.
De magát az EEPROM-ot is ellenőrizheted egy dugaszolható boardon, csak jó sok vezeték kell hozzá.
Azt is megpróbálhatod, hogy az írást 2 lépésben végzed el. Először olvasod az adott címet, majd utána írod ugyanazt, valamint beállítasz egy késleltetést, hogy csak az OE jelnek határozottan megnőjön az ideje.
De kipróbálhatod az OE manuális állításával is. Elvileg működnie kéne.
(#) Rober_4 válasza Josi777 hozzászólására (») Ápr 2, 2021 /
 
Szerintem led nélkül is tudom mérni az 5V-ot és a 0 V-okat. Lelassítottam az egész algoritmust, hogy kb. 1 másodpercenként lép egyet. Semmivel nem vagyok előrébb. De szerzek egy ilyen próbapanelt, mint a videón kölcsönbe, és kipróbálom azon az eepromot, hogy bármire reagál-e. Ha lenne ilyen romom még másik, akkor már rég megtettem volna, hogy tesztelem, összehasonlítom, de így is 1 éves huzavona volt mire megrendeltem ezt. Egyszerűen minden más projektem beállt emiatt, és nem értem, hogy ha ott a cím, ott a write enable nullán, az output meg tiltva, akkor miét nem tárolja el az eeprom a megadott címen a ráadott értéket Nincs sebesség ráér, minden mérhető tök jól. Csak vissza nem jön csak mindenütt 1, azaz 255 illetve FF. Köszönök minden segítséget, de kb. most vagyok ott, hogy előbb hiszek abban, hogy lapos a föld, mint, hogy ebből az eepromból bármi információ kijön...
(#) KoblogPerGyok válasza Rober_4 hozzászólására (») Ápr 3, 2021 / 1
 
Nano-d van? Annak a d13 pinje kicsit macerás lehet. Az éppen az enable pin neked. Azt írják, hogy több esetben macerás lehet ennek használata. Tegyél fel egy kapcsolót, vagy fixen logikai 1-nek megfelelő feszültséget erre a pinre, írj rá, majd ártalmatlanítsd, szedd le róla a feszt, (húzd le 0-ra) és olvasd ki. Magyarán kerüld meg egy írásra ezt a pint, hátha ez a probléma. Lehet arra a kis időre, míg ez logikai 1-n van, leesik a fesz a led, meg az ellenállás miatt, vagy más gond van vele. Amúgy ez az eeprom 5V-os? Íráskor nem vesz fel áram tüskéket?

De nem vagyok szaki, de látom te azért vágod ezt a témát!
A hozzászólás módosítva: Ápr 3, 2021
(#) superuser válasza Rober_4 hozzászólására (») Ápr 3, 2021 / 4
 
Zárójelben jegyzem meg, hogy ilyen jellegű problémákat logikai analizátorral negyed óra (de max. 60 perc) leforgása alatt be lehet határolni. 1500 Ft Kínából, de itthon is vásárolható 5.000 Ft környékén.
Érdemes beszerezni egyet.
(#) Rober_4 válasza KoblogPerGyok hozzászólására (») Ápr 3, 2021 /
 
Köszönöm szépen a segítséget! Kipróbálom amit mondtál, hátha bejön, csak átgondolom a sorrendet! Mert mondjuk beállítom a programot írásra, és mondjuk írok csak, aztán meg csak olvasok, a következő feltöltés után. A megfelelő lábakat meg mindig olyan szintre hozom, amilyenre kell. Ha csak egy címnél is sikerülne, menteni betölteni, akkor már jó a dolog.
Még egyszer köszi mindenkinek!
(dehogy vágom a témát, életem legelső eepromját szeretném megírni...)
A hozzászólás módosítva: Ápr 3, 2021
(#) cua válasza Rober_4 hozzászólására (») Ápr 3, 2021 / 1
 
A legegyszerubb teszt egy probapanel es kb 5 perc alatt (beleertve a doksi olvasast is) kivitelezheto.
Nezd meg alaposan az E(E)PROM adatlapjan az iras (es olvasas) idoziteset, gyakorlatilag ott van feketen-feheren mikor es melyik labnak hol kell lennie.
Szeritnem valamit tul koran (vagy tul keson) huzol nullara vagy allitasz 1-be.

28c256.png
    
(#) Vacok hozzászólása Ápr 4, 2021 /
 
Sziasztok!
Van egy olyan gondom, hogy a mikrovezérlő nem tudja egyszerre kezelni az INT0 bemenetre kötött 433MHz modult és az analogWrite() utasítást. A jelenség úgy néz ki, hogy ha a pwm kimenetre kötött led fényereje a pwm jel értékének megfelelő fényerővel világít, tehát ez a funkció működik. Ezzel egy időben viszont a 433MHz modul felől semmilyen jel nem érkezik be. Hogyan lehet orvosolni ezt a problémát?
(#) sargarigo válasza Vacok hozzászólására (») Ápr 4, 2021 / 1
 
Ilyen esetben célszerű egy programkódot mellékelni, mert az orákulumok éppen szabadságukat töltik.
Addig is itt egy puska, hátha ki tudod nézni belőle ami érdekel: Bővebben: Link
A hozzászólás módosítva: Ápr 4, 2021
(#) Vacok válasza sargarigo hozzászólására (») Ápr 4, 2021 /
 
Első körben arra lettem volna kíváncsi, hogy a kettő üti-e egymást?
  1. #include <Avr/io.h>
  2. #include <Avr/interrupt.h>
  3.  
  4. #define green 3
  5. #define red 5
  6. #define interval 125000
  7. #define flashingMillis 500
  8.  
  9. #define openCode 0
  10. #define closeCode 1
  11.  
  12. #define RCSWITCH_MAX_CHANGES 48   //rf kód raw tömb mérete
  13. #define nSeparationLimit 4300    //rf kód preamble
  14.  
  15. const char address[] = "F0101F01";  //device address code
  16. const char Open[] = "0001";  //gate open command
  17. const char Close[] = "0010";  //gate close command
  18. unsigned long previousMillis = 0;
  19. unsigned long ledMillis = 0;
  20. int ledState = 0;
  21. boolean Start = true;
  22. boolean greenOn = false;
  23. boolean redOn = false;
  24.  
  25. unsigned long code[2] = {0, 0};
  26. byte tristateBit = 0;
  27.  
  28. volatile unsigned long value = 0;  //rf érték
  29. volatile boolean dataCollection = false;
  30. volatile boolean dataEnd = false;
  31. unsigned long rf_value = 0;  //a főprogram számára használatos kapuzott rf érték
  32.  
  33. void setup () {
  34.   attachInterrupt(0, handleInterrupt, CHANGE);  //megszakítás beállítása
  35.  
  36.   pinMode(green, OUTPUT);
  37.   pinMode(red, OUTPUT);
  38.   analogWrite(green, 0);
  39.   analogWrite(red, 0);
  40.  
  41.   // turn the tristate code word into the corresponding bit pattern, then send it
  42.   for (int i = 0; i < 2; i++) {
  43.     for (int j = 0; j < 12; j++) {
  44.       if (j < 8) {
  45.         tristateBit = address[j];
  46.       } else if (i == 0) {
  47.         tristateBit = Open[j - 8];
  48.       } else {
  49.         tristateBit = Close[j - 8];
  50.       }
  51.       code[i] <<= 2L;
  52.       switch (tristateBit) {
  53.         case '0':
  54.           // bit pattern 00
  55.           break;
  56.         case 'F':
  57.           // bit pattern 01
  58.           code[i] |= 1L;
  59.           break;
  60.         case '1':
  61.           // bit pattern 11
  62.           code[i] |= 3L;
  63.           break;
  64.       }
  65.     }
  66.   }
  67. }  // end of setup
  68.  
  69. void loop() {
  70.   if (dataEnd) {  //adás vége, a megszakításban gyűjtött és dekódolt érték tovább engedése a főprogramba
  71.     dataEnd = false;
  72.     rf_value = value;
  73.   } else {
  74.     rf_value = 0;
  75.   }
  76.  
  77.   if ((rf_value == code[openCode]) || (rf_value == code[closeCode])) {
  78.     previousMillis = millis();
  79.     Start = false;
  80.   }
  81.  
  82.   if ((millis() - previousMillis >= interval) || (Start)) {
  83.     greenOn = false;
  84.     if (millis() - ledMillis >= flashingMillis) {
  85.       ledMillis = millis();
  86.       if (redOn == false) {
  87.         redOn = true;
  88.       } else {
  89.         redOn = false;
  90.       }
  91.     }
  92.   } else {
  93.     if (rf_value == code[openCode]) {
  94.       greenOn = false;
  95.       redOn = true;
  96.     }
  97.     if (rf_value == code[closeCode]) {
  98.       greenOn = true;
  99.       redOn = false;
  100.     }
  101.   }
  102.   if (redOn) {
  103.     analogWrite(green, 0);
  104.     analogWrite(red, 90);
  105.   } else {
  106.     analogWrite(red, 0);
  107.   }
  108.  
  109.   if (greenOn) {
  110.     analogWrite(red, 0);
  111.     analogWrite(green, 90);
  112.   } else {
  113.     analogWrite(green, 0);
  114.   }
  115. }
  116.  
  117.  
  118. void handleInterrupt() {  //rf kód megszakítás kérés
  119.  
  120.   static unsigned int changeCount = 0;
  121.   static unsigned long lastTime = 0;
  122.  
  123.   unsigned int duration = micros() - lastTime;  //jel időtartam számítás
  124.   lastTime = micros();
  125.  
  126.   if (duration > nSeparationLimit) {  //ha az időtartam nagyobb, mint nSeparationLimit, adatgyűjtés engedélyezés
  127.     dataCollection = true;
  128.     value = 0;
  129.   }
  130.  
  131.   if ((dataCollection) && (duration > 200)) {  //rf kódból (raw data) érték generálás, hiba esetén nullázás és adatgyűjtés tiltás
  132.     changeCount++;
  133.     if ((changeCount % 2 == 0) && (duration > 1000)) {
  134.       value |= 1UL << (24 - (changeCount / 2));
  135.     }
  136.   } else {
  137.     changeCount = 0;
  138.     dataCollection = false;
  139.   }
  140.  
  141.   if (changeCount == RCSWITCH_MAX_CHANGES) {  //maximális adatmennyiség elérése után adatgyűjtés tiltás és adás vége
  142.     dataEnd = true;
  143.     dataCollection = false;
  144.   }
  145. }

Alapvetően az a gond, hogy ha az analogWrite() utasításban nem 0 vagy 255 értéket adok ki, hanem pl. 90-et, mint ahogy most is van a kódban, akkor az első jel beérkezik az rf modul felől, utána több nem.
Az rf modul jelfeldolgozása kifogástalanul működik, azzal biztosan nincs baj. Valami más a gond, de még nem jöttem rá.
A hozzászólás módosítva: Ápr 4, 2021
(#) Vacok válasza sargarigo hozzászólására (») Ápr 4, 2021 /
 
Az az érdekes, hogy amikor a 82. sorban lévő (millis() - previousMillis >= interval feltétel teljesül, akkor ismét érkezik egy jel az rf modultól, de csak egy és utánna süket.
(#) kapu48 válasza Vacok hozzászólására (») Ápr 5, 2021 /
 
Rossz a feltétel! Mert nem biztos, hogy pont eltudod kapni, vedd ki = jelet:
  1. if ((millis() - previousMillis > interval) || (Start)) {
  2.         previousMillis = millis();  // és itt frissíteni kellen a következő időpontra
(#) Vacok válasza kapu48 hozzászólására (») Ápr 5, 2021 /
 
A >=-nél, ha nagyobb, ha egyenlő végrehajtódik a feltétel utáni utasítás. Frissíteni nem akarom ezen a ponton, mert egy bekezdéssel korábban van egy
  1. if ((rf_value == code[openCode]) || (rf_value == code[closeCode])) {
  2. previousMillis = millis();
feltétel, tehát csak akkor frissül és kerüli ki a feltételt, tehát csak akkor nem villog, ha nem érkezik jel az rf modul felől. De ha már egyszer a 82. sorban lévő feltétel nem teljesül, akkor már az
  1. if (dataEnd){
feltéltel sem fog teljesülni. Mintha a megszakításban történne valami, ami értelmezhetetlen jeleket eredményezne és ezt csak akkor tapasztalom, ha pwm jel megy ki a kimeneteken.
(#) kapu48 válasza Vacok hozzászólására (») Ápr 5, 2021 /
 
Te tudod mit akarsz, én csak nem értem!
Ha nem frissíted previousMillis -t
Akkor ezután minden körben teljesül a feltétel:
if ((millis() - previousMillis >= interval) || (Start))
És folyamatosan ismétlődik. Ezt akarod?
(#) kapu48 válasza Vacok hozzászólására (») Ápr 5, 2021 /
 
Amig handleInterrupt() megszakításban vagy addig más megszakítás nem működik!
Ezért handleInterrupt() belül hiába hivod: microst() mert le van tiltva a megszakítása ami növelné az értékét.
unsigned int duration = micros() - lastTime; //jel időtartam számítás
lastTime = micros();


Ez az AVR-ek átka!
A hozzászólás módosítva: Ápr 5, 2021
(#) Vacok válasza kapu48 hozzászólására (») Ápr 5, 2021 /
 
Az etedeti rcswitch könyvtárban is a megszakításban hívja meg a micros()-t és működik, nekem is működik, csak akkor nem, aminor kiadom az analogWrite() utasítást.
(#) Lamprologus válasza Thomas10100 hozzászólására (») Ápr 6, 2021 / 1
 
Lehet én tévedek, de az Editor szimulátora nem tud soros portról adatot fogadni.
Tudod a kijelző programját tesztelni kijelző nélkül, a szimulátorba beírt adatokkal amit úgy értelmez mintha a soros porton érkezne, vagy rákötheted a kijelzős is a soros protra és akkor ott is láthatod az eredményt...
(#) farkas16 hozzászólása Ápr 7, 2021 /
 
Sziasztok!
Az van, hogy van egy PRO MICRO (m32u4 hestorból) lapocskám, amire Arduino IDE-vel feltöltöttem egy progit...._Az most lényegtelen, hogy mit...
Az a kérdés, hogy avrdude progival hogyan tudom letölteni róla a code-t duplikálás véget?

azAz alábbi kódót használtam:
avrdude -p m32u4 -P com6 -c arduino -U flash:r:prog.hex:i

próbáltamPróbáltam más programozót használni avr109...avrisp.... semmi

A fenti parancsra nem történik semmi...._csak áll, és néz felém comtrolC vel Control + C-vel tudom megszakítani

Mi a hiba?
Help nekem légy szívesLegyetek szívesek segíteni!

Köszönöm
Szisz (Ez vajon mi akarna lenni?)
A hozzászólás módosítva: Ápr 8, 2021
Moderátor által szerkesztve
(#) pipi válasza farkas16 hozzászólására (») Ápr 8, 2021 /
 
Nem "pont" válasz...
Az arduinó beállításaiban a bővített listázást, így ha lefordítod az eredeti programot, akkor utána látod honnan/mit süt be, azt a parancsort meg a hex fájlt onnan lemásolod, és bármikor tudod programozni, szaporítani.
Persze ha az eredeti arduinó kód nincs meg, akkor ez nem megoldás
(#) farkas16 válasza pipi hozzászólására (») Ápr 8, 2021 /
 
Szia
Pont ez a bajonbajom, hogy nincs meg a kód, és igyígy az arduino-ról kellene valahogy lecsalni a progit.
vanVan ötlet ?ötlete valakinek?
Köszönöm.
A hozzászólás módosítva: Ápr 8, 2021
Moderátor által szerkesztve
(#) sdrlab válasza farkas16 hozzászólására (») Ápr 8, 2021 /
 
Zavaros a történeted! Azt írtad, te töltötted fel a programot az Arduino-ra! Ezek szerint meg volt akkor hozzá a program. Gondolom, most okkal nincs meg a kódja - mert az nem a tiéd!
(#) Skori válasza farkas16 hozzászólására (») Ápr 8, 2021 /
 
Az említett arduino lapot nem ismerem, de a legtöbb MCU-n bekapcsolható a kódvédelem. Ha ez aktív, akkor kb. semmilyen módszerrel nem lehet kiolvasni belőle a kódot.
(#) Egri Frédi válasza Skori hozzászólására (») Ápr 8, 2021 /
 
Ha nem aktiválták, a forrásprogramot akkor sem. Max a hex. kódot ...
Következő: »»   684 / 839
Bejelentkezés

Belépés

Hirdetés
Lapoda.hu     XDT.hu     HEStore.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem