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   295 / 869
(#) jeges válasza Kera_Will hozzászólására (») Nov 26, 2016 /
 
Másik amikor a millis 0-zódik kb.: 50naponként ... igen ezt ugy 3 napja is kérdeztem de sajnos nem nagyon tárgyaltuk ki 1 válaszon kivül......
wdt került szoba...
(#) kapu48 válasza jeges hozzászólására (») Nov 27, 2016 /
 
Szerintem a tulcsordulás nem lesz gond!
Unsigned long variables are extended size variables for number storage, and store 32 bits (4 bytes).
range from 0 to 4,294,967,295 +1 <<< Itt fordul át 0-ába

Vegyünk kisebb kezdőértéket:

  1. 4294967000      0xFFFFFED8      legyen a milis induló értéke
  2. +       1000     Hozzáadjuk
  3. = 4294968000    0x1000002C0  Balszélső 1-es tulcsordul marad a:
  4.          704     0x000002C0  Maradék Ez lesz a t_kovetkezo1 értéke
  5.          295    + az átcsordulás előtti érték
  6.         1000    összesen vártunk OK!


Cáfoljátokmeg! Ha tévedek?
(#) kapu48 válasza kapu48 hozzászólására (») Nov 27, 2016 /
 
Javitom!: Szerintem a tulcsordulás lesz a gond!

Kérdés, hogy fog a rendszer egyfolytában járni 48 napot?
A hozzászólás módosítva: Nov 27, 2016
(#) RoliNyh hozzászólása Nov 27, 2016 /
 
Szép napot!

Próbáltam átköltöztetni a programomat a digisparkos Attiny85 -re.
Persze hogy is gondolhattam, hogy ez majd ilyen pofonegyszerű lesz...

Attiny85...

Ki is köpött egy oldal hibát ami a mellékelt fájlban megtalálható.
(Nem akartam fél oldalt elfoglalni a fórumból inkább feltöltöttem egy *.txt -ben.
Az xxxxxx helyén csak a felhasználónév van.)
Ott van mellette a program is, ami Nano 328 -ason végre megy.

Ránéznétek? Köszi...
(#) RoliNyh válasza RoliNyh hozzászólására (») Nov 27, 2016 /
 
És ha már itt járunk még kettő kérdés evvel kapcsolatban:

  1. #define __DC 9
  2. #define __CS 10
  3. // MOSI --> (SDA) --> D11
  4. #define __RST 12
  5. // SCLK --> (SCK) --> D13


Szóval itt a MOSI és a SCLK miért vannak kikommentelve? Ebből én (kezdőként) azt gondolnám, ha kitörlöm akkor is menni fog, ami igaz is, de ha kihúzom ezt a két vezetéket, rögtön nem megy nyilván, mert pont az adatvonalat és az órajelet szüntetem meg...

A másik:

  1. TFT_ST7735 tft = TFT_ST7735(__CS, __DC, __RST);


Ezt a sort elmagyarázná valaki? Miért vannak vonallal kezdve a zárójeles részben a betűk?
(Magam arra tippelnék, mert az aktív LOW szint érvényes.)
A sorrend számít egyébként? Mennyire szükséges a kijelzőnek ez a három vezeték?

Ha arra gondolok, hogy a __CS a ChipSelect, és nem az arduino lábára, hanem mondjuk simán testre kötöm, akkor a TFT kijelző állandóan ki lesz választva, és máris spóroltam egy arduino lábat.

Az __RST -t hasonlóan felkötöm a tápfeszre, akkor sose lesz resetelve a kijelző, és megint spóroltam egy arduino lábat.

Viszont ha érzésem nem csal a __DC (talán Data / Command választás) akkor ezt mindenképpen rendesen használnom kell, hogy tudja közölni az arduino a kijelzővel éppen milyen adatot küld...

Nem egészen tiszta jó -e a gondolatmenetem?
A hozzászólás módosítva: Nov 27, 2016
(#) RoliNyh válasza RoliNyh hozzászólására (») Nov 27, 2016 /
 
A gondolatmenetet tett követte, és áttettem a reset lábat a tápfeszre, működik is, Tovább gondolva, a reset lábat az arduino reset kivezetésére tettem, így ha megnyomom a reset gombot, reseteli a kijelzőt is.

Viszont a __CS lábat teszem át a tápfeszre, már nem működik.
Csak tiszta fehér a kijelző. Miért is nem működi így?
A hozzászólás módosítva: Nov 27, 2016
(#) jeges válasza kapu48 hozzászólására (») Nov 27, 2016 /
 
igen lesz 24/24 üzem is több honapon keresztül is.....

valami ilyesmi?

  1. unsigned long previousMillis = 4294960000; // induló idő azért, hogy ne kelljen 49 napot várni
  2. unsigned long currentMillis;
  3. unsigned long lastReadTime; // végleges programban: unsigned long lastReadTime=0;
  4. long interval = 1000; // intervallum
  5.  
  6.  
  7. void setup() {
  8. Serial.begin(9600);
  9.  
  10. // a végleges programban ez nem kell, csak a lastReadTime deklarációjában 0-zni az értékét
  11. lastReadTime = previousMillis;
  12. }
  13.  
  14. void loop()
  15. {
  16. // aktuális idő kiszámítása - indulás óta eltelt + konstans (~49nap)
  17. // a végleges programban a previousMillis nem szerepel
  18. currentMillis = previousMillis + millis();
  19.  
  20. if (currentMillis - lastReadTime > interval) {
  21.  
  22. lastReadTime = currentMillis;
  23.  
  24. Serial.print("Aktualis ido: ");
  25. //prints time since program started
  26. Serial.print(currentMillis);
  27. Serial.print(". Eltelt ido: ");
  28. //prints time since program started
  29. // ide irhattam volna millis()-t is.
  30. Serial.println(currentMillis - previousMillis);
  31. // Serial.println(millis());
  32.  
  33. delay(1000);
  34. }
  35. }
(#) (Felhasználó 120038) válasza RoliNyh hozzászólására (») Nov 27, 2016 / 1
 
Sok kérdésedre nem tudom a választ, de talán a többire:

  1. #include <TFT_ST7735.h>
  2.  
  3. // All wiring required, only 3 defines for hardware SPI on 328P
  4. #define __DC 9
  5. #define __CS 10
  6. // MOSI --> (SDA) --> D11
  7. #define __RST 12
  8. // SCLK --> (SCK) --> D13


Szerintem az történik, hogy a TFT_ST7735.h fájlban a MOSI és a SCLK fixen adott értékre lettek beállítva. Azért kell mindenképpen az adott lábra kötni, nem máshova. Szóval ezt a beállítási lehetőséget elvették tőled, cserében menni fog, illetve nem lesz szükséged a kódban megadni. Fizikailag kell az oda, de nem itt van definiálva. Nézd meg a ...h fájlban ezt a TFT_ST7735( , , ); függvényt. Azért hagyták benne így ki kommentelve, hogy mindenképpen belegyenek kötve a szükséges lábak, nehogy az legyen, hogy 5 vezeték helyett 3-at köt csak be, mert a kód is csak annyit használ... Egyszerűen figyelmeztet, segít. Kitörölheted, a kód menni fog, de mankónak mindenképpen jó, én benne hagynám.

Idézet:
„TFT_ST7735 tft = TFT_ST7735(__CS, __DC, __RST);


Ezt a sort elmagyarázná valaki? Miért vannak vonallal kezdve a zárójeles részben a betűk?
(Magam arra tippelnék, mert az aktív LOW szint érvényes.)
A sorrend számít egyébként? Mennyire szükséges a kijelzőnek ez a három vezeték?”


Itt nem kellene az aláhúzás feltétlenül (hacsak az IDE nem foglalja ezeket a karaktereket), az aki a kódot írta így definiálta a változókat, fentebb. Definiálhatta volna bárminek, így tette, valószínűleg a jobb átláthatóság miatt.
(#) Kovidivi válasza (Felhasználó 120038) hozzászólására (») Nov 27, 2016 /
 
Van hardware-es és software-s SPI is, a software-esnél megadhatóak más lábak is, a hardware-esnél fixek. Ez persze a lib-től függ. Amit pár oldallal ezelőtt linkeltem, az tudja mindkettőt, csak a megfelelő define-t kell kiválasztani. A CS nem aktiv low?
A hozzászólás módosítva: Nov 27, 2016
(#) (Felhasználó 120038) válasza Kovidivi hozzászólására (») Nov 27, 2016 /
 
Ezt nem tudtam, körbe szimatolok kicsit.
(#) RoliNyh válasza (Felhasználó 120038) hozzászólására (») Nov 27, 2016 /
 
Nos a MOSI és a SCLK valóban ott vannak...

  1. #if defined(__MK20DX128__) || defined(__MK20DX256__)
  2.                 TFT_ST7735(uint8_t cspin,uint8_t dcpin,uint8_t rstpin=255,uint8_t mosi=11,uint8_t sclk=13);
  3.         #elif defined(__MKL26Z64__)
  4.                 TFT_ST7735(uint8_t cspin,uint8_t dcpin,uint8_t rstpin=255,uint8_t mosi=11,uint8_t sclk=13);
  5.         #else
  6.                 TFT_ST7735(uint8_t cspin,uint8_t dcpin,uint8_t rstpin=255);
  7.         #endif


Egyébként nem is azért írtam, mert ki akarnám venni a megjegyzést, csak így
(lehet csak számomra) kicsit félreérthető volt.
Azt is odajegyezhette volna a készítő, hogy a fentemlített két vezetéket mindenképp a két megadott lábra kell kötni, a többi választható.

De akkor ezen elgondolkodva, lehet meg is van az egyik probléma az Attiny85 átfordításra, ugyanis azon a boardon nincs 11 és 13 lábak...
(#) jeges hozzászólása Nov 27, 2016 /
 
Valaki tudja egy #define meg lehet több értéket is egyszere ugyan ahoz az egy #define hoz?

pl

#define Pir3_en 9469960 ,9469963, 12345678, 9876333
(#) RoliNyh válasza Kovidivi hozzászólására (») Nov 27, 2016 /
 
Igaz, a __CS elvileg aktiv LOW de ha átteszem testre, akkor is csak fehér kijelző van...
(#) (Felhasználó 120038) válasza RoliNyh hozzászólására (») Nov 27, 2016 /
 
Idézet:
„Ha arra gondolok, hogy a __CS a ChipSelect, és nem az arduino lábára, hanem mondjuk simán testre kötöm, akkor a TFT kijelző állandóan ki lesz választva, és máris spóroltam egy arduino lábat.”


Elnézést a bénaságomért, lehet butaságot írok, nem vágom ezt még, de azért okoskodok, hogy valaki elmagyarázza..

Gondolom a _CS lábat nem az arduino felől kötötted földre, hanem a kijelző SS lábát nem? Mert akkor szerintem 0-ra húzva a kijelző nem lesz aktív, így a felé küldött adatokat nem is fogja értelmezni. Nem éppen logokai 1 re kellene felhúzni? Azaz folyamatosan azt mondani neki, hogy ami jön adat az mind a tiéd?

Innen az ötlet:

https://en.wikipedia.org/wiki/Chip_select
A hozzászólás módosítva: Nov 27, 2016
(#) vyky hozzászólása Nov 27, 2016 /
 
Sziasztok. Szeretném az arduinoból isp ként feltölteni egy bootloadert a meglévő atmega8-ra.
Össze is huzaloztam ahogy kell,de nincs az IDE-ben mega8 boad.Ezt hogy tudom pótolni?
(#) Kovidivi válasza RoliNyh hozzászólására (») Nov 27, 2016 / 1
 
Az Attiny85-ön nincs is hardware-es SPI, a software-es implementációt kell használni. A CS ha aktív, az még nem jelenti, hogy meg is fog jelenni a kijzőn valami. A CS aktív után kell initializálni a kijelzőt, és csak ezután fog valami megjelenni rajta. Rossz sorrend esetén nem történik meg az initializáció, így az utána levő parancsokkal sem tud mit kezdeni a kijelző. De valőszínűleg nálad a lábkiosztás nem stimmel.
(#) Bakman válasza RoliNyh hozzászólására (») Nov 27, 2016 / 1
 
Általában a CS láb két szerepet tölt be. Aktív állapotban tudja az eszköz, hogy ő következik, aktív-inaktív átbillentéskor pedig végrehajtja az utasítást amit az aktív szakaszban kapott. Tehát kb. a lehető legkevesebb esetben lehet megspórolni annak vezérlését.

Általános az is, hogy a CS láb aktív alacsony, de ez nem kőbe vésett dolog.

Shot_702.jpg
    
(#) (Felhasználó 120038) válasza Bakman hozzászólására (») Nov 27, 2016 /
 
Így már nekem is értehetőbb lett, kösz.
(#) Kovidivi válasza Bakman hozzászólására (») Nov 27, 2016 /
 
Megnéztem az egyik nyákomon, ott is az AVR-be be van kötve a CS láb. Tehát ami kell: SCK MOSI CS és DS vagy nálam A0.
(#) RoliNyh válasza (Felhasználó 120038) hozzászólására (») Nov 27, 2016 /
 
A kijelző CS lábát (az megy az arduino _CS lábára, 10 -es pin) kötöttem testre, és tápra is próbáltam, egyik módon se működik, csak a fehér képernyő van...

Kíváncsiságból a kijelző A0 lábát (ami az arduino _DC lábára, 9 -es pin) megy is kipróbáltam szintén tápra is és testre is, úgyis csak a fehér képernyő van...

Igazából azzal se vagyok konkrétan tisztába, hogy a kijelző CD és A0 lába konkrétan mi is valójában?
Valamint azt se értem, hogy az arduino _CS (D10 pin) és _DC (D9 pin) -nek nevezett lábai micsodák...

A többit sikerült kitalálni.

1.44" 128x128 TFT...
(#) RoliNyh válasza Bakman hozzászólására (») Nov 27, 2016 /
 
Jól van akkor a _CS az kell mindenképpen ez nem is gond (kijelzőn szintén CS láb ChipSelect gondolom én).
Szóval ha alacsonyan van nincs semmi. Ha magasra vált, fogadja az adatokat, és ha alacsonyra vált ismét, akkor meg végrehajtja.

De a _DC láb az mit csinál? (kijelző A0 láb). Ezt se lehet megspórolni vagy testre vagy tápra kötve?
A hozzászólás módosítva: Nov 27, 2016
(#) RoliNyh válasza RoliNyh hozzászólására (») Nov 27, 2016 /
 
Az adatlapban böngészve elvileg pedig van háromvezetékes SPI mód is.
Csak épp a lábak megnevezései más mint ami a panelre van írva...
De imádom mikor nincs egy normális egyértelmű dokumentáció valamiről...

ST7735S v1.1 datasheet / 2.8Mb
A hozzászólás módosítva: Nov 27, 2016
(#) RoliNyh válasza RoliNyh hozzászólására (») Nov 27, 2016 /
 
Ismertek ennél kissebb arduinot, amin futna az előzőekben feltöltött programom?
Lehet kevesebb lába is...

Arduino pro mini...

Mimimum három analóg bemenet, minimum 4 digitális kimenet a kijelzőhöz amin megy a hardware -es SPI...
(#) jeges válasza RoliNyh hozzászólására (») Nov 27, 2016 /
 
Bővebben: Link

Bővebben: Link2
A hozzászólás módosítva: Nov 27, 2016
(#) Kovidivi válasza RoliNyh hozzászólására (») Nov 27, 2016 /
 
Valami van még ezzel a CS-tel.
A lib-ben ezt találtam:
Idézet:
„/*
// ATMEGA 328p (Arduino) with hardware SPI
* SCL PB5 (SCK), Digital Pin 13 on Arduino
* SDA PB3 (MOSI), Digital Pin 11 on Arduino
* RS PD7, Digital Pin 7 on Arduino
* RST PD6, Digital Pin 6 on Arduino
* CS GND
*/”


És nálam a programból nincs is használva a CS kimenet, beállítom kimenetnek, és marad GND-n. Valószínűleg resetel adatátvitelkor, így nem kell a CS-t használni. Nálam az RS az A0, RST a reset, SDA - MOSI, SCK pedig az SPI órajel kimenete.

Software-es SPI-hez ez kell, ebben sincs CS.
Idézet:
„/*
#define SPI_SOFTWARE
#define RSREG DDRB
#define RSTREG DDRB
#define RSPORT PORTB
#define RSTPORT PORTB
#define RS PB1
#define RST PB5
#define SPIREG DDRB
#define SPIPORT PORTB
#define SCK PB2
#define MOSI PB0
*/”


Ha parancsot ír, alacsonyra rakja az RS-t, ha adatot, akkor pedig magasra. Nálam a CS GND-n van, ha magasra rakom, akkor fehér a kijelző. Ahogy nézem, CS a GND-re húzva, RS vagy A0 kell, attól függ milyen néven szerepel a kijelzőn, MOSI vagy SDA, és SCL vagy SCK kell, a RST pedig csak az initializáló fv-ben van használva, tehát 4 vezetékes a kommunikáció.
A hozzászólás módosítva: Nov 27, 2016
(#) RoliNyh válasza jeges hozzászólására (») Nov 27, 2016 /
 
Ezt átnézem köszi...
(#) RoliNyh válasza Kovidivi hozzászólására (») Nov 27, 2016 /
 
Nekem már gőzöm sincs mit csinál ez a _CS. Ha már fut a program, és kihúzom, akkor képernyő újrarajzoláskor dob egy fehér képernyőt. Addig viszont látszik ami ki volt rajzolva eredetileg. Ha visszadugom az arduino D10 -es lábára, nem történik semmi marad a fehér képernyő, nyomnom kell egy reset gombot, hogy újra működjön.

Ha leveszem a tápot az egészről, és GND -re (vagy 3.3V -ra v. +5V -ra) teszem a _CS lábat, aztán kap egy tápot, szintén csak a fehér képernyő van. Szóval tuti, hogy csinál valamit...
Nekem is négy dróton megy:

Arduino------>TFT

MOSI--------->SDA
SCLK--------->SCK
_DC---------->A0
_CS---------->CS

Rátettem egy egy LED -et a _DC és _CS lábakra próbaképp. Alapból mindkettőn HIGH van.
A képernyő újrarajzolásnál mindkettő LOW -ba megy, aztán ismét HIGH.
A _CS láthatóan hosszabb ideig van LOW -on, a _DC viszont éppenhogycsak.
A MOSI alapból HIGH, és szintén képernyőrajzolásnál megy LOW -ba, majd vissza HIGH -ba.
A SCLK alapból LOW és képernyőrajzoláskor megy HIGH -ba, aztán vissza LOW -ra...

A szoftveres ISP hez meg hozzá se tudok szagolni...
A hozzászólás módosítva: Nov 27, 2016
(#) RoliNyh válasza RoliNyh hozzászólására (») Nov 27, 2016 /
 
Egyébként ahogy az adatlapon néztem az időzítéseket, leginkább kezd az az érzésem lenni, hogy valami parancsot kellene küldeni a kijelzőnek, hogy kapcsolja át magát a háromvezetékes SPI mód fogadására. Amit megint gőzöm sincs, hogy kellene megoldani. Szóval kezdek afelé hajlani, hogy nem tudom összehozni ezt a kijelzőt az Attiny85 -el, ráadásul abból még a hardveres SPI is hiányzik, ami újabb probléma és nem tudom megoldani szoftveresen.
Lehet megcsinálom egy olyan board -al amin ez így működik normálisan.
Csak hát elég kicsi a hely. Ha megjön az aksitöltő meglátom befér -e...
(#) pivi1 válasza vyky hozzászólására (») Nov 27, 2016 /
 
Üdv!
D:\Arduino\arduino-1.0.6\hardware\arduino\bootloaders\atmega8\ATmegaBOOT.hex
Viszont ha van meglévő atmega 328p arduinod, felprogramoznám arduino isp-re és azzal tölteném rá. 8kb helyet ne foglalja fölösen bootloader.
A hozzászólás módosítva: Nov 27, 2016
(#) vyky válasza pivi1 hozzászólására (») Nov 27, 2016 /
 
Szia. Közben megtaláltam a neten a megoldást. Azt mondod nem kell a bootloader? Simán ISP-vel is felmegy a program?
Következő: »»   295 / 869
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