Fórum témák

» Több friss téma
Fórum » ARM - Miértek hogyanok
 
Témaindító: gtk, idő: Jún 26, 2007
Lapozás: OK   144 / 177
(#) szénási_ válasza vargham hozzászólására (») Okt 2, 2019 /
 
Köszönöm szépen.
Ezekre okvetlen rákeresek, mert még semmit nem tudok róluk.
(#) szénási_ válasza Kovidivi hozzászólására (») Okt 2, 2019 /
 
Biztosan ez lesz a megoldás.
Igaz, első ránézésre még nem értem, hogyan lehet egy adott címhez rendelni.
Ha lehetne mondjuk akár 4 párhuzamos portot nyerni ilyenekkel, akkor biztosan ez a megoldás.
(#) vargham hozzászólása Okt 2, 2019 / 1
 
Kérdés a sebesség is. Egy 16 bites GPIO porton egy teljes port művelet az 1, maximum 2 CPU cycle. Ha jól emlékszem. Shift regiszternél idő, mire kimegy az adat. Ráadásul egy Bluepillre plusz shift regiszter az vagy külön NYÁK, vagy vezeték dugdosás. Egy Nucleo-ra viszont rámegy az egész 2x16 bit egyben...

Viszont a 4 párhuzamos port szöget ütött a fejembe. Ilyenre létezik cél megoldás, és egyszerűbb, mint egy mikrokontrollerből csinálni. Például ez.
(#) szénási_ válasza vargham hozzászólására (») Okt 2, 2019 /
 
Nagyon köszönöm!

Ezek szerint teljesen el voltam tévedve.
Én úgy gondoltam, hogy néhány IC-vel, mint mondjuk ez a shift regiszter gyorsabban lehet megoldani a problémát, mint mondjuk egy mikrovezérlő, amihez még program is kell.

Nekem a sebesség nem annyira lényeges.
Ha egy ISA port sebességét tudja, az már nekem elég.

Gondolom, te nagyon otthon lehetsz a témában. Ezért megkérdezném, hogy mi lenne a módja annak, hogy PCI buszon keresztül tudjak vezérelni valamit akár 16 bites adatbusszal.
Annyit tudok a dologról csak, hogy multiplex jön az adat és cím, de hogy hogyan lehet szétválasztani őket, arra még nem találtam leírást.
Mert ha ez menne, akkor nem is volna szükségem más irányba nézelődni.
Egy PCI ISA átalakító már megoldaná a problémámat, de ilyet nem tudtam szerezni.
No meg jó volna tisztába lenni a PCI működésével.
Tudnál erről írni valamit, vagy esetleg volna egy link, hogy mit és hogyan.
Persze, magyarul volna a legjobb, ha lehet.
(#) vargham válasza szénási_ hozzászólására (») Okt 2, 2019 /
 
Le tudnád írni PONTOSAN, hogy mit szeretnél?
(#) szénási_ válasza vargham hozzászólására (») Okt 2, 2019 /
 
Kezdetnek egy CNC esztergára gondoltam.
Tudom, egyszerűbben is meg lehet oldani, de azért éppen ezzel próbálkoznék elsőre, mert a CNC dolgokban nagyjából eligazodok. Tudom, hogy mit várjak egy ilyen vezérléstől.
Kezeljen útmérőket és a főorsó enkóderét.
Lehessen hozzá kapcsolni akár léptető motorokat, akár szervomotort.
A grafikus felület a PC-n, de ennek az eszköznek legyenek azért kijelzőik.X,Y, fordulatszám és előtolás.
Nagyjából ennyi.
AVR-el oldottam már meg hasonló feladatot.
(#) bbalazs_ válasza cimopata hozzászólására (») Okt 6, 2019 /
 
Sajnos, csak most olvastam ezt a hozzászólást, ugyanebbe futottam bele most.
Segway-ek mainboardját gd32f103rctx szerettem volna átprogramozni, sikerült is, de ahogy a kezelőszerveket meghosszabbítottam 1m-es drót végére (két kapcsoló és egy potméter), két panelt is sikerült hazavágni. A stabilizátor megúszta, de a proci kemény zárlatba került a Vdd Vss között.
PIC-nél ilyet még soha nem tapasztaltam, pedig jópárral dolgoztam már.

A másik problemám, hogy GD32F130-ast (nem elírás!, az előző kistestvére) programoznék és az ST-LINk V2.0 nem tudja írni egyáltalán. Olvasni tudja, chip erase, sector erase megy, de a programozásnál az első byte már hibát jelez. Külső tápról megy a proci és a kétvezetékes módszerrel, st tools progival írnám.
Sajnos nagyon kezdő vagyok az ARM vonalon.
(#) vargham válasza bbalazs_ hozzászólására (») Okt 6, 2019 /
 
GD32 az a GigaDevices eszköze, és nem az STM-é. Kérj tőlük eszközt a programozáshoz.
(#) bbalazs_ válasza vargham hozzászólására (») Okt 6, 2019 /
 
Úgy tűnik, a gond az lehet, hogy míg a gd32f103 és az stm32f103 mindkettőnél m3 magot kapott - ezért megy az ST LINKKEL, addig a GD32f130 M3, a STM32f130 pedig M0 maggal szerelt.
(#) vargham válasza bbalazs_ hozzászólására (») Okt 7, 2019 /
 
STM32F130 nincsen. M0 maggal az STM32F0XX sorozat rendelkezik.
Az ST-Link az elvileg csak STM eszközökhöz használható. Trükközéssel néha működik mással is. Az STM32 sorozat az az STMicroelectronics nevű cég terméke, a GD32 pedig a Gigadevce terméke. Ez utóbbi is megvásárolta az ARM-tól a processzormagot, köré rakta a saját perifériáit, amiknek a regiszterkiosztása, és elnevezése többé-kevésbé megyegyezik az STM32 sorozatéval. Tehát annyra hasonlít rá, hogy még éppen legális. Nem klón. De nem is ugyanaz.
Több kérdés is felmerült bennem ezután.
1. Miért nem STM32 MCU-t használsz? Nagyobb a választék, jobb a terméktámogatás.
2. Ha kitartasz a GD32 mellett, akkor miért nem a Gigadevice által készített, ajánlott fejlesztőeszközöket használod?
(#) rolandgw válasza bbalazs_ hozzászólására (») Okt 7, 2019 /
 
Saját programozójuk és szoftverük van:
GD-Link
GD-Link Programmer
(#) bbalazs_ válasza vargham hozzászólására (») Okt 7, 2019 /
 
Köszönöm neked és Rolandgw-nek is a választ.

Azért kell ezt használnom, mert:

- ez a chip van a hoverboardok kész alaplapján.
- ST-LINK programozót sikerült kölcsönkérnem, GD link nem volt
- árában kb fele-harmada az azonos tudású STM-nek.
(#) bbalazs_ válasza bbalazs_ hozzászólására (») Okt 7, 2019 /
 
Most nézem, a GD-link 16000+ÁFA, vagyis 20e felett van.
Az ST-LINK nagyjából ezer forint alatt van.
(#) vargham válasza bbalazs_ hozzászólására (») Okt 7, 2019 /
 
Az inkább 7 ezer. Az ezer alatti az hamisítvány.
(#) kapu48 hozzászólása Okt 8, 2019 /
 
Szevasztok!

Meg kérdezném, hogy az STM32-nél egy port különböző bitjei lehetnek eltérő sebességre állítva?
PORTA-n van a SPI1 amit nagy sebességen HIGH-en szeretnék járatni, és az LCD vezérlése amit lassabban MEDIUM-on. Mert a hosszú kábel miatt szemetel a kijelző!

Lehet így használni?
(#) cross51 válasza kapu48 hozzászólására (») Okt 8, 2019 / 1
 
A reference manual szerint (stm32f429-rm0090) minden láb beállítható külön sebességűre az OSPDEEDR regeszteren keresztül.

Így szerintem használhatod.
(#) benjami válasza kapu48 hozzászólására (») Okt 8, 2019 /
 
Tudomásom szerint mindegyik stm32 családnál lábanként állítható a sebesség. Viszont attól hogy a jel felfutás/lefutás sebessége lassabb lesz, nem fog megszűnni a hosszú kábel okozta szemetelés.
(#) kapu48 válasza benjami hozzászólására (») Okt 9, 2019 /
 
Köszönöm mind a két hozzászólást.

Sajnos még nem jutottam odáig, hogy teszteljem is az ötletemet.
Arduinos 8bites TFT, tulajdonképpen lassabb sebességre tervezték az 16MHz AVR-ekhez.
Akkor mit ajánlotok a probléma megoldására?
A hozzászólás módosítva: Okt 9, 2019
(#) icserny válasza kapu48 hozzászólására (») Okt 9, 2019 /
 
Nincs itt valami félreértés? A portbitek beállítható "sebessége" valójában csak az átbillenés idejét befolyásolja (a kimeneti feszültség változási sebességét korlátozza, nagyon leegyszerűsítve egy RC tagot közbeiktat). Az, hogy a TFT kijelző lábait milyen sebességgel kapcsolgatod, az már a programodtól függ. Én például most egy LED-et 1 Hz frekvenciával kapcsolgatok az egyébként max. 50 MHz-re állított portlábon.
(#) kapu48 válasza icserny hozzászólására (») Okt 9, 2019 /
 
Akkor tényleg félre értelmeztem ezt a HW lehetőséget!

Nincsen ennek a sebesség szabályozásnak valami egyszerűbb hardveres beállítása?
Muszáj a programban késleltetni?

Pl.: A PSRAM HCLOK clok cycles beállításokkal lehet játszani?
A hozzászólás módosítva: Okt 9, 2019
(#) benjami válasza kapu48 hozzászólására (») Okt 9, 2019 /
 
HW lehetőség: az órajelet előállító kvarcot alacsonyabb frekvenciájúra cseréled (feltéve, hogy nem a belső RC oszcillátorról jár a proci, meg ez ugye minden mást is visz magával). A többi verzió szoftver módosítást igényel.
Mivel nem tudjuk milyen vezérlő milyen programmal milyen periférián keresztül működteti a milyen kijelzőt, a szoftveres időzítés módosításának lehetőségéről többet nem lehet mondani.
(#) kapu48 válasza benjami hozzászólására (») Okt 9, 2019 /
 
A vezérlő: STM32F103RB
Az LCD: arduino-uno-2-4-tft-lcd-display-shield-touch-panel-ili9341
Bővebben: Link

Átkötve FMSC-re.

A program ezt módosítanám: Bővebben: Link
A hozzászólás módosítva: Okt 9, 2019
(#) kapu48 válasza kapu48 hozzászólására (») Okt 9, 2019 /
 
Letölthető: Bővebben: Link

És elkészítettem az STM CubeMX-es változatát.
A hozzászólás módosítva: Okt 9, 2019
(#) kapu48 válasza kapu48 hozzászólására (») Okt 9, 2019 /
 
Idézet:
„Átkötve FMSC-re.”

Bocsi már keverem az F407zet projectel!
Itt nincsen FSMC!
LCD adat port átkötve: PB08-PB14-re
A hozzászólás módosítva: Okt 9, 2019
(#) kapu48 válasza icserny hozzászólására (») Okt 9, 2019 /
 
Úgy tűnik, akkor marad a késleltetés a programban.

LCD adat írás közben várakozás, de HAL_Delay(1);-t nem akarok használni, az soknak tűnik.
Viszont pár __asm nop utasítás segíthet?
A hozzászólás módosítva: Okt 9, 2019
(#) kapu48 válasza kapu48 hozzászólására (») Okt 9, 2019 /
 
A kérdés a megjegyzésben:

  1. /******************************************************************
  2. //      TFT_WR_DATA  16 bit modunda:   16 bitlik veriyi B0..15 üzerinden gönderir
  3. //    8 bit modunda:   16 bitin küçük 8 bitini B8..B15 üzerinden gönderir
  4.  
  5. // TFT_WR_DATA 16-bites módban: 16-bites adatokat küld B0..15-en keresztül
  6. //      8-bites módban: A 16-bites kis 8-bites üzenetet küldi a B8..B15-en keresztül
  7. ******************************************************************/
  8. void TFT_WR_DATA(uint16_t data)
  9. {
  10.  
  11. #if TFT_USE8BIT_MODEL==1        // 8 bites adat 8 érintkezőn keresztül (B8..B15)     // 8 bit veri 8 pin üzerinden (B8..B15)
  12.         TFT_RS_SET;
  13.         TFT_CS_CLR;
  14.         DATAOUT(data<<8);
  15.         // Mit tegyek ide, késleltetésnek?
  16.         TFT_WR_CLR;
  17.         TFT_WR_SET;
  18.         TFT_CS_SET;
  19. #else                   // 16-bites mód: 16-bites adatokat küld, ha a B0..B15-re helyezi              // 16 bit modu: 16 bitlik veriyi B0..B15 üzerine koyarak gönderir
  20.         TFT_RS_SET;
  21.         TFT_CS_CLR;
  22.         DATAOUT(data);
  23.         TFT_WR_CLR;
  24.         TFT_WR_SET;
  25.         TFT_CS_SET;
  26. #endif
  27. }
A hozzászólás módosítva: Okt 9, 2019
(#) kapu48 válasza kapu48 hozzászólására (») Okt 9, 2019 /
 
Ilyen próbálkozás működhet?
  1. #define CUSTOM_DELAY()          __asm("NOP");__asm("NOP")
  2.  
  3. void TFT_WR_DATA(uint16_t data)
  4. {
  5. #if TFT_USE8BIT_MODEL==1        // 8 bites adat 8 érintkezőn keresztül (B8..B15)    
  6.         TFT_RS_SET;
  7.         TFT_CS_CLR;
  8.         DATAOUT(data<<8);
  9.         // Mit tegyek ide, késleltetésnek?
  10.         CUSTOM_DELAY();
  11.         TFT_WR_SET;
  12.         CUSTOM_DELAY();
  13.         TFT_CS_SET;
  14. #else                   // 16-bites mód: 16-bites adatokat küld, ha a B0..B15-re helyezi             
  15.         TFT_RS_SET;
  16.         TFT_CS_CLR;
  17.         DATAOUT(data);
  18.         TFT_WR_CLR;
  19.         TFT_WR_SET;
  20.         TFT_CS_SET;
  21. #endif
  22. }
A hozzászólás módosítva: Okt 9, 2019
(#) rolandgw válasza kapu48 hozzászólására (») Okt 9, 2019 / 1
 
CMSIS-ben:
  1. #define __NOP()       __ASM volatile ("nop")
(#) csatti2 hozzászólása Okt 9, 2019 /
 
Miért nem használod az FMC perifériát 8bites LCD módban? Ott hardveresen megadhatod a késleltetéseket, majd DMA-val lőheted a képernyőre az adatokat.
(#) kapu48 válasza csatti2 hozzászólására (») Okt 9, 2019 /
 
Mert az STM32F103RBT-ben nincsen!

rolandgw-nek köszönöm! Egész délután ezt a lehetőséget kerestem.
Következő: »»   144 / 177
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