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   364 / 845
(#) wbt válasza RoliNyh hozzászólására (») Júl 20, 2017 /
 
Ez az egész Basic-ben 60%-ot fogyaszt. (csak kíváncsiságból kipróbáltam; a kapcsolási értékek EEPROMban, SW serial meg egy LED+Kimenet). A villogó (úgy, ahogy Te írtad) 13-15%. Szóval Arduino-C++-ban bele fog az férni, csak a kezdeti maceráskodások alapban ennyit esznek, lehet, egy üres program is lesz vagy 10%, aztán lassan nő.
(#) RoliNyh válasza wbt hozzászólására (») Júl 20, 2017 /
 
Igazad legyen, most nekiállok megírni, aztán meglátom mekkora lesz a méret. A softserialtól azért kicsit tartok, mert ha nem tudom összehozni, akkor lesz 20db felesleges Attiny13 -as tokom...
Aztán mégis meg kell vennem a kétszer annyiba kerülő 85 -öt, amiben van hardveres kommunikáció is. Ráadásul az még plusz egy hónap mire ideér...

És még a 13 -ra is várnom kell egy hónapot amúgy is.
Ha benyelem, és mégis a 85 -öst kell majd használnom, máris két hónap csúszás van...
(#) wbt válasza RoliNyh hozzászólására (») Júl 20, 2017 /
 
A SW serial-tól ne tarts, ezen nem segít a T85 USI egysége, mivel ha belső oszcillátorról hajtod, ugyan olyan "pontatlan" lesz, mint a SW-es megoldás ezen kívül az USI 8-bites regiszterrel rendelkezik, Neked kell varázsolni start/stop-bitet ha RS232-szerű kommunikációt akarsz (SPI/I2C-re van az kitalálva) Ha bajban vagy, ki tudlak segíteni SO8 (keskeny) tokú T13-akkal, én RGB LEDvezérléseket ácsolok belőle, van kb 40-50db.
(#) RoliNyh válasza wbt hozzászólására (») Júl 20, 2017 /
 
A gondom ott kezdődik, hogy amint átváltok Attiny13 -ra, és ellenőrzöm a kódot:

  1. float iREF = 1.105; //internal reference cal factor
  2. const int dischargePin = 9;
  3. const int statusPin = 13;
  4. int statusLedState = LOW;
  5. const long statusInterval = 1000;
  6. unsigned long previousMillis = 0;  
  7. void setup()
  8. {
  9.   // put your setup code here, to run once:
  10.   analogReference(EXTERNAL);
  11.   //burn some ADC readings after reference change
  12.   for(int i=0; i<8; i++) analogRead(A0);
  13.   Serial.begin(57600);
  14.   pinMode(dischargePin,OUTPUT);
  15.   pinMode(statusPin,OUTPUT);
  16. }
  17.  
  18. void loop()
  19. {
  20.   // put your main code here, to run repeatedly:
  21.   delay(10);
  22.  
  23.   Serial.println(fReadVcc());
  24.   Serial.println();
  25.  
  26.   if (fReadVcc() > 3.5)
  27.   {
  28.     digitalWrite(dischargePin,HIGH);
  29.   }
  30.   else
  31.   {
  32.     digitalWrite(dischargePin,LOW);
  33.   }
  34.     unsigned long currentMillis = millis();
  35.  
  36.   if (currentMillis - previousMillis >= statusInterval)
  37.   {
  38.     // save the last time you blinked the LED
  39.     previousMillis = currentMillis;
  40.  
  41.     // if the LED is off turn it on and vice-versa:
  42.     if (statusLedState == LOW)
  43.     {
  44.       statusLedState = HIGH;
  45.     }
  46.     else
  47.     {
  48.       statusLedState = LOW;
  49.     }
  50.  
  51.     // set the LED with the ledState of the variable:
  52.     digitalWrite(statusPin, statusLedState);
  53.   }
  54. }


Rögtön hibába ütközik, mivel nem ismeri a Serial fügvényt:
Idézet:

Arduino: 1.6.12 (Windows 7), Alaplap:"ATtiny13, 9.6 MHz internal osc., 2.7v, -Os LTO enabled (default)"

D:\_Arduino 1.6.12_\Projekt\Li-IonCellBalancer\Li-IonCellBalancer.ino: In function 'void setup()':

Li-IonCellBalancer:13: error: 'Serial' was not declared in this scope

Serial.begin(57600);

^

D:\_Arduino 1.6.12_\Projekt\Li-IonCellBalancer\Li-IonCellBalancer.ino: In function 'void loop()':

Li-IonCellBalancer:23: error: 'Serial' was not declared in this scope

Serial.println(fReadVcc());

^

Li-IonCellBalancer:23: error: 'fReadVcc' was not declared in this scope

Serial.println(fReadVcc());

^

exit status 1
'Serial' was not declared in this scope

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.



A fReadVcc hiba most nem érdekel, az ki lesz véve belőle úgy is...
(#) wbt válasza RoliNyh hozzászólására (») Júl 20, 2017 /
 
Ehhez elég sülthal vagyok, de nem kell megmondani, hogy melyik láb lesz a soros?
(#) RoliNyh válasza wbt hozzászólására (») Júl 20, 2017 /
 
Nekem elsőre az ugrott be, hogy mivel az hardveres függvény, azért nem ismeri.
Próbáltam a szoftverest, de azt meg nem találja a könyvtárban, pedig már be is másoltam a *.ino fájl mellé.
  1. // include the SoftwareSerial library so you can use its functions:
  2. #include <SoftwareSerial.h>
  3.  
  4. #define rxPin 2
  5. #define txPin 3
  6. #define ledPin 13
  7.  
  8. // set up a new serial port
  9. SoftwareSerial mySerial =  SoftwareSerial(rxPin, txPin);
  10. byte pinState = 0;
  11.  
  12. void setup()  {
  13.   // define pin modes for tx, rx, led pins:
  14.   pinMode(rxPin, INPUT);
  15.   pinMode(txPin, OUTPUT);
  16.   pinMode(ledPin, OUTPUT);
  17.   // set the data rate for the SoftwareSerial port
  18.   mySerial.begin(9600);
  19. }

Idézet:

Arduino: 1.6.12 (Windows 7), Alaplap:"ATtiny13, 9.6 MHz internal osc., 2.7v, -Os LTO enabled (default)"

D:\_Arduino 1.6.12_\Projekt\Li_IonCellBalancer\Li_IonCellBalancer.ino:2:28: fatal error: SoftwareSerial.h: No such file or directory

#include <SoftwareSerial.h>

^

compilation terminated.

exit status 1
Error compiling for board ATtiny13.
Invalid version found: 1.0.1b1

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
(#) wbt válasza RoliNyh hozzászólására (») Júl 20, 2017 /
 
Ebben majd a hozzáértők biztos segítenek... A kevés hely miatt szerintem a lebegőpontos cuccokat nem biztos, hogy ajánlatos használni, én ADC értéket küldenék ki illetve azzal komparálnék (de ez csak apró meglátásom, majd kiderül, bele fér-e a T13-ba). No, de előbb működjön a soros!
(#) RoliNyh hozzászólása Júl 20, 2017 /
 
Ismeritek az Arduino Web editor -t?

Arduino web editor...

Kipróbálnám, de nem találok benne Attiny13 -at, arra nem lehet fejleszteni ezen keresztül?
(#) kapu48 válasza RoliNyh hozzászólására (») Júl 20, 2017 / 1
 
Ide nem jók a <> kacsacsörök!
Igy kel:
  1. #include "SoftwareSerial.h"


És milyen távolság lessz a 2 soros eszköz között?
Mert a TTL jel max 20 - 50cm.-re mehet.
Ha távolabbra kel? Akkor Kellene az TTL - Rs232 vagy USB átalakítók.
A hozzászólás módosítva: Júl 20, 2017
(#) kapu48 válasza RoliNyh hozzászólására (») Júl 20, 2017 /
 
Ne
Nem fér bele a Flash-ba!
(#) RoliNyh válasza kapu48 hozzászólására (») Júl 20, 2017 /
 
Pofám leszakad, de jó, hogy két helyen is csőrös zárójelbe van írva, akkor nekik hogy a pimba megy?

SoftSer1...
SoftSer2...

Persze nekem is pont a két hibásra kell ráakadnom...

Nem messze, max az 50cm -t tartom mindenképp...
A hozzászólás módosítva: Júl 20, 2017
(#) kapu48 válasza RoliNyh hozzászólására (») Júl 20, 2017 /
 
Nem hiba az!
Hanem a környezettöl füg mit kel alkamahni. (Éppen hol vannak a 'SoftSerial.c-h')
(#) RoliNyh válasza kapu48 hozzászólására (») Júl 20, 2017 /
 
Ok, akkor nem értem...

És idézőjelek közé téve sem megy...

Idézet:

Arduino: 1.6.12 (Windows 7), Alaplap:"ATtiny13, 9.6 MHz internal osc., 2.7v, -Os LTO enabled (default)"

D:\_Aarduino_1.8.3_\Projekt\Li_IonCellBalancer\Li_IonCellBalancer.ino:1:28: fatal error: SoftwareSerial.h: No such file or directory

#include "SoftwareSerial.h"

^

compilation terminated.

exit status 1
Error compiling for board ATtiny13.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

A hozzászólás módosítva: Júl 20, 2017
(#) kapu48 válasza RoliNyh hozzászólására (») Júl 20, 2017 /
 
Vannak:
A standard könyvtár függvényei, típusai és makrói standard headerekben vannak deklarálva. Ezek a standard headerek:
<assert.h> <limits.h> <signal.h> <stdlib.h>
<ctype.h> <locale.h> <stdarg.h> <string.h>
<errno.h> <math.h> <stddef.h> <time.h>
<float.h> <setjmp.h> <stdio.h>
Egy headerhez az
#include <headernev>
direktívával férhetünk hozzá. A headerek bármilyen sorrendben és akárhányszor beépíthetők a programba. Egy headert bármilyen külső deklaráción vagy definíción kívül, vagy bármely, a headerben deklarált függvény, típus vagy adat felhasználása előtt kell beépíteni. A headernek nem szükséges a forrásállományban lenni.

A forrásállományban levőkre hivatkozunk: #include "headernev" formában.
(#) kapu48 válasza RoliNyh hozzászólására (») Júl 20, 2017 /
 
Erre a feladatra inkább ezt használonám:
ATMEGA8U2

Kicsi és minden benne van, nem kel mellé + USB illesztő.
(#) RoliNyh válasza kapu48 hozzászólására (») Júl 20, 2017 /
 
Naszóval, mivel a ATTinyCore mappában (ami a 24, 44, 84, 25, 45 és 85 ös tokokat támogatja) van SoftwareSerial mappa, átmásoltam a MicroCore mappába (ami a 13 -as tokot támogatja), és aban alapból nincs SotwareSerial mappa.
Csakhogy itt meg az a probléma, hogy gondolom nem kompatibilis egyik a másikkal, mert ismét hibát dob. Azt hiszem, az Attiny13 -hoz való SoftwerSerial -t kellene szerezni valahonnan, de azt én nem találtam...

Idézet:

Arduino: 1.6.12 (Windows 7), Alaplap:"ATtiny13, 9.6 MHz internal osc., 2.7v, -Os LTO enabled (default)"

In file included from D:\_Aarduino_1.8.3_\Projekt\Li_IonCellBalancer\Li_IonCellBalancer.ino:1:0:

C:\Users\username\AppData\Local\Arduino15\packages\MicroCore\hardware\avr\1.0.2\libraries\
SoftwareSerial/SoftwareSerial.h:100:18: error: conflicting return type specified for 'virtual size_t SoftwareSerial::write(uint8_t)'

virtual size_t write(uint8_t byte);

^

In file included from C:\Users\username\AppData\Local\Arduino15\packages\MicroCore\hardware\avr\1.0.2\libraries\
SoftwareSerial/Stream.h:26:0,

from C:\Users\username\AppData\Local\Arduino15\packages\MicroCore\hardware\avr\1.0.2\libraries\
SoftwareSerial/SoftwareSerial.h:36,

from D:\_Aarduino_1.8.3_\Projekt\Li_IonCellBalancer\Li_IonCellBalancer.ino:1:

C:\Users\username\AppData\Local\Arduino15\packages\MicroCore\hardware\avr\1.0.2\cores\
microcore/Print.h:45:18: error: overriding 'virtual void Print::write(uint8_t)'

virtual void write(uint8_t) = 0;

^

exit status 1
Error compiling for board ATtiny13.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.
A hozzászólás módosítva: Júl 20, 2017
(#) kapu48 válasza RoliNyh hozzászólására (») Júl 20, 2017 /
 
Gondolkoz már!
Amit Te akarsz, az nem férbele a:
Non-volatile Program and Data Memories
- 1K Byte of In-System Programmable Program Memory Flash ???

Endurance: 100,000 Write/Erase Cycles
- 64 Bytes Internal SRAM ???
(#) kapu48 válasza RoliNyh hozzászólására (») Júl 20, 2017 /
 
Kezdő memoria foglalása:
  1. #ifndef SoftwareSerial_h
  2. #define SoftwareSerial_h
  3.  
  4. #include <inttypes.h>
  5. #include <Stream.h>
  6.  
  7. /******************************************************************************
  8. * Definitions
  9. ******************************************************************************/
  10. A 16-osban ennyi van összesen 64Byte:
  11. #ifndef _SS_MAX_RX_BUFF
  12. #define _SS_MAX_RX_BUFF 64 // RX buffer size
  13. #endif
  14.  
  15. #ifndef GCC_VERSION
  16. #define GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
  17. #endif
  18.  
  19. class SoftwareSerial : public Stream
  20. {
  21. private:
  22.   // per object data
  23.   uint8_t _receivePin;
  24.   uint8_t _receiveBitMask;
  25.   volatile uint8_t *_receivePortRegister;
  26.   uint8_t _transmitBitMask;
  27.   volatile uint8_t *_transmitPortRegister;
  28.   volatile uint8_t *_pcint_maskreg;
  29.   uint8_t _pcint_maskvalue;
  30.  
  31.   // Expressed as 4-cycle delays (must never be 0!)
  32.   uint16_t _rx_delay_centering;
  33.   uint16_t _rx_delay_intrabit;
  34.   uint16_t _rx_delay_stopbit;
  35.   uint16_t _tx_delay;
  36.  
  37.   uint16_t _buffer_overflow:1;
  38.   uint16_t _inverse_logic:1;
  39.  
  40. // static data
  41.   static uint8_t _receive_buffer[_SS_MAX_RX_BUFF]; Ez elfoglalja az összes RAMot, És mi marad a többinek???
  42.   static volatile uint8_t _receive_buffer_tail;
  43.   static volatile uint8_t _receive_buffer_head;
  44.   static SoftwareSerial *active_object;
(#) RoliNyh válasza kapu48 hozzászólására (») Júl 20, 2017 /
 
Jó, akkor maradjunk annyiban, hogy úgyse fog beleférni. Meglátom a 85 mit szól hozzá...
(#) kapu48 válasza RoliNyh hozzászólására (») Júl 20, 2017 /
 
Abban már van: 15. USI – Universal Serial Interface
Nem kel neki a SoftSerial!

A következő gond, hogy a belső oscilátor nem elég pontos a soros átvitel ídőzítéséhez.
Ezért kel a külső kvarc. Igy viszont már kevés pin marad.
A hozzászólás módosítva: Júl 20, 2017
(#) Kovidivi válasza RoliNyh hozzászólására (») Júl 20, 2017 /
 
Szerintem simán belefér.
A szoftver serial kommunikációt ki kell bogozni, az csak sima bit banging. Megadni neki egy megfelelő lábat, és csak a szükséges fv.-eket átvenni. Float-ot felejtsd el. Egy adc érték beolvasása, összehasonlítása alig foglal valami helyet. A szoftver seriallal kell vigyázni, de az se ehet túl sokat.
A hozzászólás módosítva: Júl 20, 2017
(#) wbt válasza RoliNyh hozzászólására (») Júl 20, 2017 /
 
Ha Basicben belefért (60%), akkor C++-ban szerintem jóval kisebb lesz. A SW sorost meg ha máshogy nem, írd meg kibitezgetéssel meg várakozásokkal, akkor méretre már okosabbak leszünk.
(#) Kari55 hozzászólása Júl 20, 2017 /
 
Sziasztok!
Lehet, hogy kimúlt az arduino nanom? Mert ha csatlakoztatom a géphez, nem jelez, hogy valamit rádugtam, csak a két led (TX, POW) világít pirosan.
Az arduino IDE programban az eszközöknél ki tudom választani, de a Port kijelölés nem aktív.
Ezt a hibaüzenetet kapom: "avrdude: ser_open(): can't open device "\\.\COM3": A rendszer nem találja a megadott fájlt." Hogyan tudom megváltoztatni a port számát?

Köszönöm előre is.
(#) KoblogPerGyok válasza Kari55 hozzászólására (») Júl 20, 2017 /
 
Simán meghalhatott, de a win frissítés esetleg elkaszálta a drivert. Szedd le a drivert, tedd fel újra a PC-re, hátha csak ez a gond.
(#) RoliNyh válasza Kovidivi hozzászólására (») Júl 20, 2017 /
 
Sajnos nem vagyok olyan penge programozásban, hogy egy ilyet megírjak magam.
A netről összeollózni meg, hááát nem vennék rá mérget, hogy az is működne...
(#) Kari55 válasza KoblogPerGyok hozzászólására (») Júl 20, 2017 /
 
Köszi, azt hogyan csináljam?
(#) KoblogPerGyok válasza Kari55 hozzászólására (») Júl 20, 2017 /
 
Nem tudom, mert nem írtad, hogy kínai klón, amihez CH340 -kell, mint a topik tetején megadott, vagy sem. Ha az, akkor ha jól emlékszem annak van uninstall opciója, utána újraindítás, megint telepítés. (win7, 8,10, stb???)

Neked kell tudnod, hogy milyen drivert tettél fel annak idején!
(#) Kari55 válasza KoblogPerGyok hozzászólására (») Júl 20, 2017 /
 
Nem tudom milyen gyártmány, úgy kaptam.
Futtattam az uninstall/install programot, csak nem indítottam újra közötte.

Idézet:
CH340
van benne.
(#) RoliNyh hozzászólása Júl 20, 2017 /
 
Naszóval, én valami ilyesmire gondoltam:

  1. const int Vpin = 1;                 // Cellafeszültségmérő láb
  2. const int Tpin = 2;                 // Cellahőmérsékletmérő láb
  3. int Voltage = 0;                    // Feszültség nullázása
  4. int Temperature = 0;                // Hőmérséklet nullázása
  5. boolean F_pin = LOW;                // FET kikapcsolása
  6. boolean S_led_pin = LOW;            // Kommunikáció visszajelző LED kikapcsolása
  7.  
  8. #define RXpin 5                     // Adatfogadás beállítása az 5 -ös lábra
  9. #define TXpin 6                     // Adatküldés beállítása a 6 -os lábra
  10. #define S_led_pin 7                 // Adatforgalom visszajelző LED beállítása a 7 -es lábra
  11. #define F_pin 3                     // Balanszer FET beállítása az 3 -as lábra
  12.  
  13. void setup()
  14.   {
  15.   pinMode(RXpin, INPUT);            // RX láb definiálása bemenetként
  16.   pinMode(TXpin, OUTPUT);           // TX láb definiálása kimenetként
  17.   pinMode(S_led_pin, OUTPUT);       // Adatforgalom visszajelző LED láb definiálása kimenetként
  18.   pinMode(F_pin, OUTPUT);           // Balanszer FET láb definiálása kimenetként
  19.   Serial.begin(9600);               // Soros port megnyitása
  20.   }
  21.  
  22. void loop()
  23.   {
  24.   Voltage = analogRead(Vpin);       //  Beolvassuk a cellafeszültséget
  25.   Temperature = analogRead(Tpin);   //  Beolvassuk a cellahőmérsékletet
  26.  
  27.   if (Voltage > 920)                //  Ha a cellafeszültség nagyobb 4.2V -nál
  28.     digitalWrite(F_pin, HIGH);      //  akkor bekapcsoljuk a balanszer FET -et
  29.  
  30.   else                              //  Ha a cellafeszültség kissebb 4.2V -nál
  31.     digitalWrite(F_pin, LOW);       //  akkor kikapcsoljuk a balanszer FET -et
  32.  
  33.   digitalWrite(S_led_pin, HIGH);    //  Soros adatforgalom előtt bekapcsoljuk a visszajelző LED -et
  34. //Serial.print("Feszültség = " );   //  Elküldjük a soros vonalon az adatokat...
  35.   Serial.println(Voltage);          //    (Az adatforgalom és programméret csökkentése érdekében,
  36. //Serial.print("Hőmérséklet = ");   //    a sztring (szöveges) adatokat nem szükséges átküldeni,
  37.   Serial.print(Temperature);        //    azt a fő arduino is kiírhatja az adatok előtt és után)
  38.   digitalWrite(S_led_pin, LOW);     //  Soros adatforgalom után kikapcsoljuk a visszajelző LED -et
  39.  
  40.   delay(1000);                      // Várunk 1 mp -t és kezdődik előről.
  41.   }

És mivel az ellenőrzés szerint:
Idézet:

Sketch uses 2 422 bytes (59%) of program storage space. Maximum is 4 096 bytes.
Global variables use 68 bytes (26%) of dynamic memory, leaving 188 bytes for local variables. Maximum is 256 bytes.

máris 2.5kb, így az Attiny13 -ba nem fér bele.
Nem tudom ezt hogy lehetne még egyszerűben, szerintem sehogy. Szóval marad a 45/85 tok.

Viszont, hogy ez a kód mennyire van rendben, arról fogalmam sincs...

Bár ez még csak egy cellát ellenőriz, ha ebből készítek 17 darabot, még valahogy be kellene implementálni, hogy az adatokat csak akkor küldje, amikor vagy megszakítás jön, vagy lekérdezi a soros porton a fő arduino...
A hozzászólás módosítva: Júl 20, 2017
(#) Kovidivi válasza RoliNyh hozzászólására (») Júl 20, 2017 /
 
Az összes digitalWrite, analogRead, pinMode fv-t le kell cserélni. Az Arduinos az nagyon pazarló. Van rá biztos valami segítség a neten.
Következő: »»   364 / 845
Bejelentkezés

Belépés

Hirdetés
XDT.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