# ARM mikrokontrolleri >  stm32 USB negrib iet :(

## Epis

izmēģināju visus virtual com port USB demo piemērus (savam stm32circle kitam) un neviens tā īsti negrib iet, un visiem piemēriem parāda windowsā to lodziņu found new hardware, bet tālāk unnown device, itkā meklēju kas pa vainu un ieinstalēju vienu software USB draiveri kas nāca paraug kodam stmcdc (Setup Information file) un ja iet dziļāk hardware setingos tad tagat rāda šādu bildi
[attachment=0:1rirge7z]USB_neiet.JPG[/attachment:1rirge7z]

paraug kodus stm32 var atrast um0424 arhīvā kurš jānolādē no ST mājaslapas, es tur vēl nolādēju ieinstalēju kautkādu test progu; vcpdriver_v1.1_setup un vēlvienu progu um0551 arhīvā, tad vēl no stm32prime circle kita lapas pāris USB projektus un vārdsakot nekas neiet, un nezinu kur problēma proci vai tomēr windowsā ? 
man galvenais lai tas USB pārvēšās par COM portu un parādās manā visualC# kā COM ports, pagaidām tas COM5 ports visualC# nerādās, līdz ar to nekas arī neiet  ::  

ir kādam kāda nojausma kas ir ar tiem USB ?

----------


## Texx

Tas ports tālāk izstrādes vidē nerādās, jo tā dzeltenā izsuakuma zīme nozīme, ka ar šo ierīci ir kādas problēmas. Varbūt vajag citus draiverus. Pamēģini noinstalēt šo ierīci un pēc tam atkal pieinstalēt. Vēl vari pamēģināt pieslēgt pie cita datora.

----------


## Epis

A kā vispār fiziski pārbaudīt vai kompis saņem jebkādus USB datus, un cik viņi ir pareizi ?? ir kādas kompja USB test progas kas varētu atrast un diagnosticēt jebkādu USB HID klases ierīci ? 

jo man ir tā ka es nezinu vispār kas tur notiek un kur ir problēma, kodā vai kompī, ja agrāk SMD krāsnij taisīju uz RS232 porta tad varēju ar USB oscilu redzēt visus signālus tad ja kompis datus nesaņēma, bet oscils rāda ka mikrene datus nosūtīja tad bīj skaidrs ka vaina komja softā, a tagat velns viņzin kur tā vaina slēpjās, ar to debaggeri jau arī īsti neko saprast nevar, jo kā tad iespējams debagot USB interfeisu caur stm32 proci nezinu.  ::  

Tā ir ar tiem sūda protokoliem kuri ir pārāk šausmīgi sarežģiti sataisīti, ethernet manā skatījumā ir daudz vieglāks tur vismaz var ping testu uztaisīt   ::  un kā RS232 kautko primitīvu nosūtīt, a te USB neko caur winXP pa taisno caur Dos logu nosūtīt laikam ka nevar uz stm32 proci , vai tomēr var kā tur ir ??

----------


## jeecha

Nu protams, pie visa vainiigs shausmiigi sarezhgjiitais USB protokols... taapat kaa stuulbie pointeri un viss paareejais kas Epim sveshs.

Probleema visdriizaak ir mikrokontroliera kodaa jo spriezhot peec screenshota vinsh veiksmiigi nav izgaajis USB enumeraaciju. Starp citu seriaalaa porta emulaacija parasti ir nevis HID bet CDC... Taakaa naaksies vien tev uzmaniigi paarlasiit apnotes kas naaca liidzi tam paraugkodam ko tu meegjinaaji.

Anyway, http://www.usb.org/developers/tools/ var nolaadeet USB Command Verifier, varbuut tas kautkaa noder.

----------


## Epis

laikam būs toč problēma pašā stm32 softā, jo es lidz šim varēju ieprogrammēt flashā hex failu kurš nāca līdz projektam zem debugg mapes, bet ka palaiž pašu projektu tad caur turieni es debugg režīmā normāli nevaru ieiet, rāda ka nešot fat.elf un circle.elf failu , vispār tie piemēri tādi dīvaini un pēc build nekādus hex failus, cik redzu nerežo, un tur lejā bildē redzams ka parādās tāda lieta kā RANLIB library maneger, agrāk man tajā vietā rādīja flash programmeri un tagat sanāk ka es nevaru palaist to flash programeri no šī te projekta, lai kautko ieprogrammētu bīj jāizmanto cita programma (flash programmeris)

laikam ka būs jāmēģina taisīt viss projekts no jauna pārkopējot tos visus sorce failus, moš kautkas sanāks.
reku projeta faili ride7 logā.
[attachment=0:3je2l1ca]USB_projektsneiet.JPG[/attachment:3je2l1ca]

----------


## Vinchi

Vai tev diskā nenāca gatavi projekti līdzi kurus ir tikai jānokompilē un viss aiziet.
Vai esi iestādijis kompilatoram īsto kontroleri, taktēšanu utt?  :: 

Agrāk www.ftdichip.com lapā bija pie downloadiem kaut kāda microsoft proga kura uzrādija visādus USB iekārtas parametrus.

Iekš WinARM kādreiz bija neliela proga (termināls) ar kuru var uz COM sūtīt un saņemt datus, pārslēgt entos parametrus.

----------


## vecteevs

tad tagad  visas fpga nomestas malaa,  un pakjerts stm 32 pa 1,3 LS ??  ::

----------


## Epis

Tajā test kodā USB funkcionalitāte netiek pārbaudīta, tur ir pāris spēles uz LCD ektrāna kur izmanto to 3D acelerometru, bet USB netiek izmantots nekur. 
tie citi stm32 demo kodi kas ir itkā priekš USB ir domāti priekš cita dev.kita STM3210E-EVAL  tādēļ laikam ka pataisno neiet.

Es mēģināju pārtaisīt tos speciāli šim kitam taisīts projektus no http://www.stm32circle.com/hom/index.php lapas bet tie arī kautkā neiet, moš es vienkārši nevaru tur katko pareizi ielādēt ?, itkā mēģināju taisīt no 0 vienu USB projektu bet kautkas tur negāja, šoreiz vismaz debaggeris gnāja, un pie kautkādas vietas uzkarās un nekas tālāk nenotiek. 
Es tā jūtu ka beigās nāksies gandrīz no 0 visu kodu cept.

----------


## Epis

> tad tagad  visas fpga nomestas malaa,  un pakjerts stm 32 pa 1,3 LS ??


 Nēsi pamanījis ka man uz fpga plates stāv stm32 procis?, kura galvenā funkcija bīj plānota USB komunikācija, un papildus kādas matemātiskās darbības bet par to varēs spriest vēlāk kad būs nokārtota USB komunikācija.

----------


## Delfins

Starp pročiem USB? Neesi saspiedies?

----------


## Vikings

> Starp pročiem USB? Neesi saspiedies?


 Man jau liekas, ka starp proci un kompi, bet, iespējams, Tu tikko epim pasviedi labu ideju.

----------


## jeecha

Starp chipiem labaak lietot Epja iipasho briinumanalogodatusuutiishanasstandartu  ::

----------


## Epis

darīt man nav ko lai starp pročiem vilktu USB.

Tāda ir tā dzīves ironīja, ka itkā visādi kodi ir, bet nekas neiet, un es cerēju ka varēšu paņemt tos gatavos kodus kā "black box" un fiksi ietestēt un vēlāk virsū būvēt virsū savu cnc funkcionalitāti, apmēram kā tas tiek darīts iekš visual C#, vispār jau tā ir šīs augstās kodu hirarhijas, integritātes problēma ka itkā ir tie gatavie risinājumi, bet viņi ir specifiski, un ja galda kompjiem viņi iet uz OS, tad MCU pasaulē ir pietaisīti pie kāda čipa un ja paņem citu čipu tad vairs nesūda neiet, un tāpat sanākt rakties iekšā un meklēt kļūdas, bet tas jau nozīmē to ka no šīs te ātrās kodēšanas vairs nav ne smakas un paies nedeļas kamēr tai hodu hirarhijai, datashetiem izies cauri un atradīs kādēļ kas neiet. 

vispār tā ride7 IDE kautkā gļuko, man bīj viens koda piemērs "USB joystick " kurš izrādījās bīj taisīts uz tās Ride OS un tad pārliekot failus jaunā projektā no 0 kompilējot man rādija ka flashā vietas nēsot (viss pilns) tad pačakerējukautko tur (nomainīju MCU no circle Os uz parasto kas ir uz čipa) un kautkas izmaninījās, un rādīja ka nēsot main() funkcijas starta, tad atradu vietu kur to start failu ielikt un nomainīju uz circle OS un itkā nokombilējās un vairs nebrēca ka nēsot flashā vietas, bet ka palaidu debaggeri tad vienā vietā kods kārās augšā un taisija bezgalīgu lēkāšanu, kautkā stūlbi, un tas bīj USB biblotekas daļā vienā no funkcijām kas kautkādus parametrus ņēma, un acīm redzot bez tā parametra programma tālāk negāja. kas tas par parametru, un kādēļ uzkārās būs jānoskaidro, bet tā USB bibloteka ir tāda pasmaga.

jebkurā gadījumā tie USB izgudrotāji viennozīmīgi bīj pārāk skopi, nevarēja uztaisīt normālu full duplex komunikāij sistēmu ar RX, TX,sck diferenciāliem kanāliem kā ethernet tikai ar švakākiem signāliem priekš mazākiem attālumiem tad vismaz hardware daļa būtu vienkāršāka un datu pārraides apjoms 2x, ja kas jaunais Gb USB 3  būs tieši šāda tipa full duplex ar ātrummu virs 4.8Gb/s  tip 10x uzlabojums man tas liekās ka ir pārspīlēti daudz, pilnīgi pietiktu ja pa USb raidītu kādu parasto FPGA 720Mb/s LVDS, vai LVPECL signālu tad kopējā jauda būtu 1.4Gb/s un varētu pieslēgt pa taisno fpga Lvds kanālus un bez nekādiem īpašiem hardware protokoliem (kā rs232) tikai lai saņēmejam,sūtītājam būtu palieli datu bufferi), programmu līmenī lai protokolējās cik dziļi grib, bet lai tādi kā es var bez problēmām kautko nosūtīt un saņemt pa taisno rs232,LPT stillā caur visual C#  ::

----------


## Delfins

> bet lai tādi kā es var bez problēmām kautko nosūtīt un saņemt pa taisno rs232,LPT stillā caur visual C#


  ::  nr. 1




> un es cerēju ka varēšu paņemt tos gatavos kodus kā "black box" un fiksi ietestēt


  ::   nr. 2




> bez nekādiem īpašiem hardware protokoliem (kā rs232)


  ::   nr. 3




> jebkurā gadījumā tie USB izgudrotāji viennozīmīgi bīj pārāk skopi, nevarēja uztaisīt normālu full duplex komunikāij


  ::  nr. 4

USB = Universal Serial Bus ... ko tu vēl gribi?




> ja kas jaunais Gb USB 3 būs tieši šāda tipa full duplex ar ātrummu virs 4.8Gb/s tip 10x uzlabojums man tas liekās ka ir pārspīlēti daudz


 Būt jau būs, bet būs vajadzīgi vēl 2 papildus vadiņi.. tas tā,.. lai pārāk daudz nesapņotu  :: 




> by utilizing two additional high-speed differential pairs for "Superspeed" mode, and with the possibility for optical interconnect.[28][29] The two new differential pairs make the cable about as thick as an ethernet cable and provide full-duplex transfers


 

manuprāt tu esi paŗāk ieciklējies uz tiem test-kodiem un vispār defaulto testēšanu... uztaisi uz Atmega8 kaut kādu jēdzīgu projektu pirms ķeries pie "monstriem"...

----------


## Vikings

Davaj, Epi, visi redz, ka Tu esi diezgan gudrs un saproti kas tieši pietrūkst PC komunikācijai ar ārējām perifērijām. Nu tad paņem uztaisi vismaz PCI karti ar ideālo vadības sistēmu un gan lielie inženieri to sapratīs.

----------


## Epis

Debagoju to vienu demo kodu uz sava kita un sapratu ka problēma ir tajā USB hardware kur man  Device address =0 (DADDR reģistrs) tas laikam ka nozīmē ka stm32 nav saņemis no hosta to USb adresi inicializācijas brīdī kas hosts numurē ierīces, vai arī saņema bet nav reģistrā ielicis līdz ar to USB inicializācija nav izieta un nekas tālāk nenotiek, kādēļ tas tā tas būs jāskatās, ir aizdomas ka varētu būt vainīgs kāds PLL uzstādījuma parametrs, tur circle os forumā tiek minēts ka jānomaina Pll dalītājs, un vēl viena lieta un tad kautkam vaidzētu iet. es itkā vienreiz to mēģināju, bet tāpat nekas negāja, bet tas bīj pirms 2dienām moš tagat ar ka ir uzcepts tīrs projekts kautkas aizies. 




> Davaj, Epi, visi redz, ka Tu esi diezgan gudrs un saproti kas tieši pietrūkst PC komunikācijai ar ārējām perifērijām. Nu tad paņem uztaisi vismaz PCI karti ar ideālo vadības sistēmu un gan lielie inženieri to sapratīs.


 gudrību jau mēra ar IQ līmeni un tam nav nekāda sakara ko cilvēks vispār zin, proti es varu vispār neko nezināt, bet skaitītes gudrs, vai pertēji iekalt galvā veselu encikopēdīju bet tāpat būt dumš, 

Es saku tā ka kompjiem vaidzētu uztaisīt tādu vienkāršo komunikāciju kāda bīj Rs232 bet tikai kādas 100x ātrāku (kā LVds 720Mb/s) labi ja tas ir pa krutu tad vismaz to pašu USB vadu tikai pārraidīt tos datus RS232 stilā full duplex, un tālāk jau es pats izdomāšu kādus es datus sūtīšu, kādā formātā un tā tālāk.
Šitie smagie USB protokoli ir domāti tikai tādēļ ka cilvēki ir vienkārši pārāk slinki, proti viņiem vaig lai iespraužot kompī kādu flash atmiņu viņiem windows izmestu ārā flash atmiņas mapi ar visiem iekšējiem failiem, manā variantā ja pa USB vadu ietu pliki dati bez nekādiem standart protokoliem tam civlēkam vaidzētu pēc flashatmiņas iespraušanas palaist mapītes programmu kurā norādīt ka lūks šitajā portā ir pieslēgta flash atmiņa kuruas informāciju var dekodēt ar šo mapes softu un lieta darīta, vai tad tas ir tik grūti vai ?  proti katrai ierīcei savs softs kas viņu nolasa bez nekādiem tur tupiem standartiem lai var pieslēgt 1 ierīci pie 1 usb porta.

Tieši tas pats arī ir ar piemēram PCIexpress kur varētu normāli pieslēgt fpga ar tiem serdes kanāliem un pa taisno bez tupiem protokoliem kačāt tādu datu apjomu ka maz neliekās un iekš fpga tā datu sūtīšana aizņemtu pāris simtus loģikas, bet tagat ir tā ka fpga vai 10 000 loģikas lai tiktu galā ar to Pcie protokolu  ::  tādēļ lētāk izdevīgāk ir vienkārši nopirkt kādu PCIe-PHY/bridge čipu man liekās ka tāds viss tīrākais no protokolu murgiem bīja PCI32 standarts jo iekš fpga loģiku vaidzēja tikai ~500 elementiem (var iekš cpld arī realizēt)
Ethernet tā protams ir pavisam cita vide tur patiešām vaig visādus standartus, jo tā ir globāla līmeņa lieta, bet pārējo kas ir lokāls un kompim piespraužams varēja uztaisīt bez standartiem, viss labākais piemērs ir tas ISA sots un PCI jau ir ISA pēctecis tādēļ ir bišķi saglabājis sākotnējo primitīvismu, bet visi jaunie ir tā protokolēti ka vēmiens nāk. 

un par USB tad tas ir sviests ka USB atbalsta vairāku ierīču pieslēgšanu pie 1 vada caur tiem dalītājiem, apskatoties reāli katrai kompa mātesplatei ir čupa ar USB portiem (daļa pat nav izlikti) un katra USB ierīce slēdzās klāt tur atsevišķi, tākā kāda bīj jēga taisīt to tīkla atbalstu nerubīju, ja kādam vaig tīklu tad lai spraužās klāt ethernet būs jums tīklā saslēgtas ierīces.. 

Vispār būtu kruta ja kāds beidzot tos protokolus un standartus iebāztu kautkur dziļāk un uzliktu uz kompa mātesplatēm vienu šādu Xmos multitreading čipu ar kuru tad var emulēt visvisādus standartus līdz kādiem 60Mhz (kā ar fpga) bet kodējot ar C 
par šito es ierunājos jo nupat parādījās infa ka viņi tur uztaisīja Dev.kitu par 99$ ar savu 4kodolu xmos čipu  :: , teikšu kā ir šī ir pirmā kompānijas kas uztaisa cilvēkiem piejamu kitu savai jaunajai astranomiski krutajai tehnoloģijai, visas pārējās jau taisa kitus kas velk uz pāris 1000 $ un kāš vēl naudu par programmām un tā tālāk...  a te beidzot kāda inovācija pa pieņemamu cenu. (šitas čips varētu reāli aizstāt fpga) es jau protams iepētīju   ::

----------


## vecteevs

ko lai iesaka tev tagad, panjem  litru snabja un ej na huj. 
Un liidz magjistra graadam elektronikaa, labaak nekam citam kaa  LPT portam klaat nekjeries,  kameer nav ieguuts magjistrs kautvai sranajaa RTU.   
Bet paldies par interfeisu traktaatu, labi izsmeejaamies.

----------


## Epis

laikam problēma būs tajā stm32 cock inicializācijas kodos, jo es vakar salīdzināju tos projekta kodus, kas bīj pārtaisīti uz šito circle kitu un ST orģinālu un tur ir starpības, iemēģināt es kautko varēšu laikam ka tikai svētdien.




> ko lai iesaka tev tagad, panjem  litru snabja un ej na huj. 
> Un liidz magjistra graadam elektronikaa, labaak nekam citam kaa  LPT portam klaat nekjeries,  kameer nav ieguuts magjistrs kautvai sranajaa RTU.   
> Bet paldies par interfeisu traktaatu, labi izsmeejaamies.


 Baigi švaki ka maģistrs ir spējīgs tikai uz LPT porta komunikāciju, taj jau es esu maģistra līmeni sasniedzis par 2 gadiem, jo Rs232 ir vēl sarežītāks par LPT  ::  

Tajās vietās kur nav saistība ar datoru un saucamā "Plug and Play"nepieciešamība, neviens arī tādus protokolus netaisa, viss notiek pa taisno sūta un saņem datus tādos formātos kādos ir nepieciešams.
Plug and play manprāt radās nevis tādēļ ka kādam patiktu tur baigi kodēt smagos protokolus un tērēt pusi proča resursus uz to, bet gan otrā galā patērētāja pieprasījuma pēc un tad šie te visi radās izdabājot klientam, jo parasti patērētājs ir tups un viņam vaig "plug and Play"iekārtu kurai tad varētu spraust klāt visu kas vien ienāk prātā un protmas lai rezultātā nekas nenosviltu, un nesačakarētos, tādēļ arī neviens netaisa nekādus protokolus ja grib iekomunicēt starp 2 MCU uz 1 PCB plates caur SPI interfeisu. 

Vispār ethernets man liekās ka ir viens no tādiem tīrākajiem standratiem, kuram ir tīri atbilstoši protokoli tā funkcionalitātei, bet USB tā funkcionalitāte ir pārāk universāla, un to varētu nosaukt kā "overbuilded"protokolu jo reāli pie 1 vada labi ja kāds pieslēdz 1,max 2 ierīces nevis 64 un vēl vairāk kā tas ielikts standartos, internets tā ir cita tēma kur praktiskais pielietojums ir 100% pamats ar sarežīto komunikācīj sistēmu kur tīklā saslēgti miljardiem kompu, tagat saprotat kādēļ USB varētu mierīgi būt tik primitīvs kā RS232, LPT, vai ISA slots pēc protokoliem.
Ir linki kur arī kritizē to USB sarežītību un izstrādātāju pārcenšanos un pārāk trakās idejas, ka iedomājās ka kompim būs tikai 1 USB ports un tad tur klāt slēgs simtiem USB ierīču caur hubiem, reāli izrādījās ka kompims ir čupa USB portu, bet ierīču ir ļoti maz (klaviere,pele,flash un vēl kāda ierīce tas arī viss...) tākā USB ir "overbuilded".

----------


## Velko

> manā variantā ja pa USB vadu ietu pliki dati bez nekādiem standart protokoliem tam civlēkam vaidzētu pēc flashatmiņas iespraušanas palaist mapītes programmu kurā norādīt ka lūks šitajā portā ir pieslēgta flash atmiņa kuruas informāciju var dekodēt ar šo mapes softu un lieta darīta, vai tad tas ir tik grūti vai ?  proti katrai ierīcei savs softs kas viņu nolasa bez nekādiem tur tupiem standartiem lai var pieslēgt 1 ierīci pie 1 usb porta.
> ...
> bet pārējo kas ir lokāls un kompim piespraužams varēja uztaisīt bez standartiem.


 Tev jau tāpat nepietiek ar draiveru čupu, kas tagad jāinstalē? Gribi vēl katram mazākajam sūdiņam (USB Flash, piemēram) savu draiveri?

Ne vella. Es saku, ka standartprotokoli vēl joprojām nav pietiekoši attīstīti. Ideāls gadījums būtu - uzinstalē OS un pēc tam spraud klāt visu ko vien veikalā vari atrast un nekādu papildus draiveru. Un tikai, ja gribi pieslēgt kādu paštaisītu iekārtu, kura neierakstās nekādos standartprotokolos, tad nepieciešams arī paštaisīts draiveris.

Labi, piedzīt iekārtu kādam standarta protokolam ir grūtāk, kā uztaisīt pa savam. Toties pēc tam visas problēmas beidzas - iekārta prot sadarboties ar jebkuru datoru, jebkuru operētājsistēmu.

----------


## Vikings

> laikam problēma būs tajā stm32 cock inicializācijas kodos


 Sorry, es laikam esmu ļoti sabojāts, bet šitā rindiņa man lika skaļi smieties balsī.

----------


## jeecha

LOL, es ar kautkaa ar aciim paarskreeju paari postam un nepamaniiju  :: 

Epis, saku veelreiz - tas ka tu kautko nerubii nenoziimee ka tas viss ir stulbi utt utjp. Un nav nekas paardabiigs tajaa USB. Katraa zinjaa nav nekaa par kaartu sarezhgjiitaaka nekaa piemeeram Ethernet+IP (starp citu ja reiz tu ierunaajies par to cik "kruts" ir IP, tad varbuut papeeti kaadeelj tika izstraadaats IPv6). Vienkaarshi beidz iideet un fokuseejies uz to ko gribeeji panaakt nevis raksti shaadus palagus par to kaadi visi citi ir dumji un sataisiijushi tik tizlas programmeeshanas valodas, protokolus un izstraades softus.

----------


## vecteevs

> Baigi švaki ka maģistrs ir spējīgs tikai uz LPT porta komunikāciju, taj jau es esu maģistra līmeni sasniedzis par 2 gadiem, jo Rs232 ir vēl sarežītāks par LPT


 Tad jau sanaak ka driiz buusi ticis liidz doktora liimenim  :: .
Smagi paarprati, tas bija domaats kaa maajiens tev, ka nav veerts likt klaat pirkstu klaat tam no kaa ne vella nerubii, un peectam debiili iideet. Nez kas naakamais buus suudiigs ? ::   Man domaat ka vieniiigais suuds ir tava hernja ar kas 10 meeneshu laikaa taa arii 0 liimenii palikusi, toties spamu skaits aug vai ik dienas. 
Nav jeega tev ko staastiit, vieglaak  ir aiziet kjiegelju sienai ko iestaastiit.

----------


## Epis

> Nav jeega tev ko staastiit, vieglaak  ir aiziet kjiegelju sienai ko iestaastiit.


 pareizi labāk stāstīšanas vietā iedod man kādu gatavu,strādājošu USB paraug kodu, lai man te beidzot beigtos tas USB čakars.  ::  
Nupat debagoju kodu vēlreiz un pēc datasheeta sāku skatītes tos USB reģistrus kuriem itkā pašiem caur USb jākonfigurējās un tad šeit bildē ir USB endpoint 0 register (USB_EPnR) es itkā izlasīju stm32 dokumentā ko tie reģistra biti nozīmē, bet nekāda lielā skaidrība, apgaismība nepienāca, moš šeit kāds USB eksperts var kautko noderīgu pateikt ? 
Vispār es cik novēroju, tad nestrādā abi USB pārtrukuma vektori, proti es viņos ieliku brakepointus un ka palaidu progu tad nekas tā arī nenotika, un cik saprotu tad ja dati tiktu saņemti, vai nosūtīt, vai vispār kautkas inicializējies tad vaidzētu kautkam nostrādāt.
 USB_HP_CAN_TX_IRQHandler,
  USB_LP_CAN_RX0_IRQHandler,
[attachment=1:2oiu1owv]USB_neiet3.JPG[/attachment:2oiu1owv]
šeit viss USB projekts kurš nevella neiet ? moš kāds var iemēģināt (laikam izņemot Vinchi nevienam citam pieja pie circle kita nav) 
[attachment=0:2oiu1owv]USBum0424.rar[/attachment:2oiu1owv]

----------


## Vikings

Epi, sorry par tiešajiem vārdiem, bet kādēļ tu ar to kitu tā p1sies cenšoties uzreiz palaist ko sarežģītu? Davaj LEDu pamirkšķini, parādi kaut ko uz LCD, pieprogo pogas utt un tā jau tiksi līdz USB. Vari aju teikt, ka tā aiziet daudz laiks, jā, aiziet laiks, bet tā iemācies visus sīkumus kurus var būt tagad nezini un kas trūkst lai palaistu USB.

----------


## Epis

Es jau Ledus pamirkšķināju un iekšējos taimerus arī padarbināju, vienīgi nēsu izmēģinājis DMA kanālu, bet domāju ka ar paraug kodiem tā lieta varētu ātri aiziet, tākā ja nevaidzētu to USB es jau sāktu cept savu lineāro,apļa G-kod interpolātoru   ::  
USB visu progressu tagat ir noštopējis, un bīj doma izmantot to USB arī priekš koda debagošanas īstajā laikā apmēram tāpat kā es tai savai SMD krāsnīj kur man nebīj AVR debaggera izmantoju RS232 priekš koda pārbaudes un kļūdu ķeršanas, un šeit darīt tieši tāpat + arī koda performance testam, jo kā nekā man tā ir īstā laika sistēma kur katra mikroSekunde ir no svara !

----------


## Epis

Te viens gudrelis citā topikā iepostēja šo un tākā es tajā topikā neko vairs nepostēju tad lai atbils uz manu jautājumu šeit kas būs par tēmu.



> Uz kādu pus gadu,vai gadu es te vairāk neko nediskutēšu, jo nav jau par ko!
> 
> 
>  Ko gan tu vari tur diskutēt... ka pat nemāki usb gatavos "palagus" palaist uz tik ļoti lēta un jaudīga čipa.
> Tev pašam dažreiz smieklīgi/kauns nav ar/par sevi?


 Pastāsti pats cik laiku tev vaidzēja lai no 0 ar kādu MCU palaistu USB?  (nerunāsim par kādiem gataviem kodiem, vai dev.kitiem kuriem nāk 100% strādājošs USB test kods!!)
un cik liels laiks pagāja kamēr saprati visu USB darbību visos līmeņos no elektriskajiem signāliem līdz kompja softam ?? 

Vakar pirmo reizi izlasīju  Universal Serial Bus Specification Revision 2.0 195lpp "Chapter 8 Protocol Layer" 
pamatā tā lieta palika skaidra ar kādām komandām tas USB tur komunicējās, un tālāk jāskatās software līmenis par tiem devaicu tipiem, un kādi dati tad jāsūta tai Virtual COm port ierīcei.

----------


## Delfins

Kāds tam man sakars? Es runāju par tevi, kas paņem kitus - gatavos kodus un čakarējās, *un tai pat laikā* spriež par miljardiem vērtu projektu, kuru vada zinātniekiem, pēc taviem vārdien kuri ir sētas puikas, kuri neko nejēdz?!.. Mm?  [es protams neminēšu citus "super-projektus"]

----------


## Epis

Nu tad pamēģini pats palaist kādu "Gatavo projektu", 
ma pat laižot gatavos projektus ir čupa ar Erroriem, lai gan es tur nekādas citas operācijas kā projekta Build uzbūve neveicu, pārsvarā errori tādi kur rāda ka compileris nesaprot kas tie par definējumiem, un tad nākās include Direktorījā salikt tās pamat Library mapes atrašānās vietu, tad daļa eroru notie bet vienalga paliek čupu, un tad vēl tajos failos jāpieliek klāt kāds papildus #include fails no tiem pamat perifēriju header failiem, un ja tad vēl brēc tad man ir nācies arī cut,paste taisīt piemēram lai compileris atpazītu ko nozīmē TIM1 man nākās ielikt tajā projekta failā tā TIM1 definējumu: 
 #define TIM1                ((TIM_TypeDef *) TIM1_BASE)  kuru es izgriezu no stm32f10x_map.h faila, 
šitā man nācās darīt lai palaistu savu Performance counter taimeri, un tā pate kaite ir visos test kodos kurus es veru vaļā, tākā pate programma jau ir kautkāda gļukaina un kautko nevar.

un tagat ir viens circle projekts kuru es vispār nokompilēt nevaru jo atkal brēc ka man kautaks nēsot definēts: 
šeit defektnijs koda gabals:   TIM1_TimeBaseInitTypeDef  TIM1_TimeBaseStructure;  un tālāk errors:
Ride7_kodi\ECG-Primer-1.0\Contest_jingxizhang\Project\src\ECG_Acquisition.c:52: error: 'TIM1_TimeBaseInitTypeDef' undeclared (first use in this function)

Un es jau tur protams ka saliku visus papild include failus un nav ne jausmas ko vēl tam compilerim tur vaig ? 

un atrast tam projektam kautkādus strādājošus gatavus ielādējamos failus es tur atrast nevaru.

šeit tā projekta links: http://www.stm32circle.com/projects/project.php?id=31

----------


## zzz

Nezheeliigs paarsteigums. Kaa izraadaas nodeviigaa kaartaa saprogrammeet kaut ko ejoshu ir juutami sarezhgjiitaak kaa muldeet paladzinjus par superchipiem un visu apkaarteejo salikshanu. Aijaijai, stulbie pointeri un stulbais usb. Un tam visam pa vidu viens izcili "gudrs" epis, kuram, nabadzinjam, vienam ar to visu jaaciinaas.  ::

----------


## Delfins

tu tiešām esi vēl zābaks C++ ā (viena topikā gan bļāvi, ka esi jau specs...)

Kāpēc zābaks? re kāpēc...


```
#define TIM1 ((TIM_TypeDef *) TIM1_BASE) kuru es izgriezu no stm32f10x_map.h faila
```

 Pirmkārt, iemācies normāli kodēt, iestudē, kas ir kompilātors, kas ir linkeris, kas ir headeri, kas ir makrosi, galu galā pašas VS īpatnības un settingus.
uzraksti kaut kādu normālu dziņi mazai programmiņai, kura skaita kaut vai 2+2. Tas ko tu dari ir vnk vājprāts, tu visu dari čerez žo (resp. no otra gala), un to.. no gataviem sampļiem...

*Rezumē: kamēr nemāki apieties ar kompilēšanu, pie HARDWARES nemaz neķeries!!!*

----------


## Texx

Neesmu nekāds specs, bet avrfreaks forumā nesen lasīju, kā viens džeks raksta esot trīs mēnešus cīnijies, lai kaut kādu Atmel bāzētu brīnumu pieslēgtu pie datora ar USB palīdzību. Tā kā uzdevums nav triviāls. Ir ko pacīnīties.

----------


## Delfins

Texx, viena lieta ir zināt ko dari, cita lieta bezjēgā graizīt standarta inkludes (.h)
Protams, mēdz būt brāķi (celiņš nelaiž signālu un t.t.) un katrs gadījums ir individuāls, bet man liekas ka ne šis  ::

----------


## Texx

Nu šis laikam nav tas gadījums  ::

----------


## Epis

> tu tiešām esi vēl zābaks C++ ā (viena topikā gan bļāvi, ka esi jau specs...)
> 
> Kāpēc zābaks? re kāpēc...
> 
> 
> ```
> #define TIM1 ((TIM_TypeDef *) TIM1_BASE) kuru es izgriezu no stm32f10x_map.h faila
> ```
> 
> ...


 Priekš kam tad tavprāt ir domātas IDE ?? es domāju ka IDE galvenā sūtība ir lai nebūtu pašam jāčakarējaš ar tiem compileriem,linkeriem un make failiem. 

Un kā tad Tu Delfīn atrisinātu to TIM1 erroru ?? kurā vietā ko mainītu un liktu ? 
Es šo problēmu atrisināju kādas vairākas stundas rokoties par tām biblotekām, pievienojot, visādus papildus #include failus, baktstot Ride7 projekta uzstādijumus un vienīgais kas līdzēja ir tā copy,paste tehnika kas reāli strādā citi mehānismi nedarbojās manā gadījumā, ja tādi ir tad pasaki.

un tos 2+2 un Kvadrātsaknes kodus,Led spīdināšanas kodus esu taisījis pēc šīs tehnikas, krāmējot katrā faila čupu ar #include failiem, un ja tas nepalīdz tad kopējot tos definējumus, nekādos make,linker skriptos nēsu iekšā līdis.. 

un vispār es tagat nolēmu no tiem defektiem patīrīt to ECG_acqusition kodu un kad tiku galā ar to Timer1_typedef definējuma prlblēmu (kārtējo reizi pievienojot attiecīgo Include failu #include "stm32f10x_tim1.h" jāsaka tā ka šito bīj grūti atrast, jo ir 2 taimera heder faili viens universālais, un viens speciālā un to speciālo bīj grūti atrast, Pēctam ka tas errors noņēmās vietā nāca kārtējā erroru čupa un visi atkal tie tupi definējumu un nācās failam pievienot šādu jaunu kaudzi ar definējumiem:


```
 #define ADC1                ((ADC_TypeDef *) ADC1_BASE)
#define DMA1                ((DMA_TypeDef *) DMA1_BASE)
  #define DMA1_Channel1       ((DMA_Channel_TypeDef *) DMA1_Channel1_BASE)
#define TIM1                ((TIM_TypeDef *) TIM1_BASE)
```

 Bet ar to protams ka ir par maz, un errori tajā projektā nebūt nebeidzās un šitā ir tagat nākošā problēma:
 tmpreg = NVIC->Priority[(NVIC_InitStruct.NVIC_IRQChannel >> 0x02)];
 C:\Program Files\Raisonance\Ride\Examples\Contest_jingxizhang\Project\src\ECG_Acquisition.c:300: error: 'NVIC_TypeDef' has no member named 'Priority'   

Kā tad lai es šito Čuda_judu izlaboju ?  
Reku nu bīj jums gatavie paraug kodi,  ::   vienā vietā bīj reāla drukas kļūda kur trūka viens burts  ::  
,  rodās jautājums kā vispār tādu kodu var likt iekšā ar tādām bedrēm. 
visār jau stūlbi, lasot to circle forumu cilvēkiem tie projekti iet un viņi iemēģina visu pēc kārtas a es neko nevaru palaist un to vien daru kā cīnos ar kļūdām, besī jau ārā..

----------


## Epis

Atradu circle forumā vienu topiku kur vienam ir tieši tāda pate problēma kā man neiet tas virtual COm ports, un topiks tā arī beidzās bez nekāda rezultāta  :: , tur ir minētas visas iespējas, bet man galvenais liekās tas ka nestrādā tas pārtraukuma vektors, iespējams ka tas ir pašam jāparbauda vai vispār tas USB pārtraukuma vektors darbojās, jo pagaidām debageris man tajā iekšā nelec un līdz ar to neiet arī uz inicializēšanas stadīju  ::  

http://www.stm32circle.com/forum/viewtopic.php?id=239

----------


## Delfins

Nu paskatījos tos headerus...
Resp. problēma ir tāda, ka softs rakstīts ar fw 1.0... savukārt  Ride7 līdzi nāk fw 2.0
Lūk arī visas bēdas. bet tas ko tu dari - kopējot kodu no header failiem saucās "darīt huiņu bezjēgā" [uzreiz atvainojos foruma liet. un adminiem]

*Vispirms noskaidro, kas par iemeslu nekompilēšanai, tikai tad sāc labot failus.*

PS: netā ir arī PDF, kur aprakstīts kā nomigrēt no fw1 uz fw2 .. bet diez vai tev izdosies. Sāc vispirms ar vienkāršākām lietām.

----------


## Epis

Jā kas to būtu domājis ka pie tīem erroiem ir vainīgas biblotekas! 

Es pagājšnedēļ speciāli novilku jauno Ride7 versiju kur kā tagat apskatījos ir tā 2.0 firmware bibloteka a cik skatījos tam ECG_kardioaparātam bīj kāda 1.5 OS versija tātad vecā firmware bibloteka, laikam ka vienīgais veids kā dabūt to veco bibloteku atpakaļ (vismaz failus) ir uzinstalēt veco Ride7 softu kas nāca uz CD ar stm32 kitu, tad noteikti ka vaidzētu tiem erroriem pazust.

----------


## Delfins

> Jā kas to būtu domājis ka pie tīem erroiem ir vainīgas biblotekas!


 DOH!!! .. es tev visu laiku mēģinu to izskaidrot, ka tu VISU dari čerez žēēē... no otra gala...
Kas to būtu domājis, da jebkurš normāls koderis, kas +/- zin ko vēlas, kā dabūt gatavu un vai pa viņa spēkiem tas viss ir. Tev viss ir diametrāli pretēji.

Sēdi un brīnies...  ::

----------


## Epis

Sliktās ziņas tādas ka man tagat atkal jauns errors, labās tādas ka to izdevās novērst izmainot perifērij biblotekas C failā to error vietu vienkārši izkomentējot,izdzēšot proti man tā figņa naf-nav vajadzīga. 
šeit ir mans eksperimentālais pirmais kods (Led test, un performance counteriskurš protams ka iet, vismaz erroru nav. 


```
#include "stm32f10x_lib.h"
/*#include "stm32f10x_tim.h"
#include "stm32f10x_map.h"  */
#include "stm32f10x_tim.c"  

#include <math.h>




GPIO_InitTypeDef GPIO_InitStructure;
ErrorStatus HSEStartUpStatus;
// Taimera struktûras
TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;
TIM_ICInitTypeDef  TIM_ICInitStructure;

void RCC_Configuration(void);
void NVIC_Configuration(void);




int main(void)
{

 #define TIM2                ((TIM_TypeDef *) TIM2_BASE)
/* Configure the system clocks */
  RCC_Configuration();
    
  /* NVIC Configuration */
  NVIC_Configuration();
/* configure pin PA.0 as input*/
   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(GPIOA, &GPIO_InitStructure);
/* configuree PB.9 RedLED un PB.8 Green.Led par output push pull */
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(GPIOB, &GPIO_InitStructure);

// Taimera uzstâdîssana 
//TIM2_SMCR  SMS=000 (visi pârejie biti arî 0
//TIM2_CR1  CEN  bits uz 1 (aktivize taimeri
// TIM2_CR2 - MMS=001 (enable visus counterus kuriem Cen =1)
unsigned int Counter = 0;
TIM_SetCounter(TIM2, Counter);
//TIM2->CNT = Counter;

// konfigure TIM2_CR2 MMS bitus
 TIM_SelectOutputTrigger(TIM2, TIM_TRGOSource_Enable);

/* Enable the TIM Counter */
    TIM2->CR1 |= CR1_CEN_Set;
 



 // Âtruma formula ar Kvadrâtsakni
   int X1 = 250;
  int Xo = 2;
  int Vo = 1;
  int A = 5;

  
  s32 g= (Vo*Vo) -2 * A * (Xo - X1);
 s32 G2 = sqrtf((g));   // float G2 = sqrtf(g);
s32 T = (-Vo - G2)/A;

// SINa() tests
s32 Xkord = X1*sin(45);
float Alfa= 45;
float simts=100;
float FXkord = sinf _PARAMS((Alfa));
u32 Ykord = roundf _PARAMS((FXkord));

//Apstâdina Timeri un nolasa rezultâtu.
 /* Disable the TIM Counter */
    TIM2->CR1 &= CR1_CEN_Reset;
// Nolasa counteri--
u16 TimeCLK = TIM2->CNT;

//TIM_SetCounter(TIM2, T); // Tâpat lai compileris uztaisa âtruma kodu
//TIM_SetCounter(TIM2, Xkord); 
TIM_SetCounter(TIM2, Ykord); 

// GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0);
// Pârbauda vai pin PA.0 ir nospiests ? 
cikls: 
if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 0x00)   
{ //ja poga ir nospiesta (logiskais 1) tad notiek sîs darbibas.
//GPIO_WriteBit(GPIOB, GPIO_Pin_8, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_8)));
GPIOB->BRR = GPIO_Pin_8; // sitâ var rakstît pa tieso un BRR ir 0 un BSR ir 1 uz izejâm.
//GPIO_WriteBit(GPIOB, GPIO_Pin_9, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_9)));
GPIOB->BSRR = GPIO_Pin_9;
}
else
   {
   GPIOB->BSRR = GPIO_Pin_8; //Yello Led ON
   GPIOB->BRR = GPIO_Pin_9; //Red LED off

   }


goto cikls;
}

void EXTI0_IRQHandler(void) //external interupt0 handler
{
}

void RCC_Configuration(void)
{
  /* RCC system reset(for debug purpose) */
  RCC_DeInit();

  /* Enable HSE */
  RCC_HSEConfig(RCC_HSE_ON);

  /* Wait till HSE is ready */
  HSEStartUpStatus = RCC_WaitForHSEStartUp();

  if(HSEStartUpStatus == SUCCESS)
  {
    /* HCLK = SYSCLK */
    RCC_HCLKConfig(RCC_SYSCLK_Div1); 
  
    /* PCLK2 = HCLK */
    RCC_PCLK2Config(RCC_HCLK_Div1); 

    /* PCLK1 = HCLK/2 */
    RCC_PCLK1Config(RCC_HCLK_Div2);

    /* Flash 2 wait state */
    FLASH_SetLatency(FLASH_Latency_2);
    /* Enable Prefetch Buffer */
    FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

    /* PLLCLK = 8MHz * 9 = 72 MHz */
    RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);

    /* Enable PLL */ 
    RCC_PLLCmd(ENABLE);

    /* Wait till PLL is ready */
    while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
    {
    }

    /* Select PLL as system clock source */
    RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

    /* Wait till PLL is used as system clock source */
    while(RCC_GetSYSCLKSource() != 0x08)
    {
    }
  }
   
  /* Enable GPIOA, GPIOB and AFIO clocks */
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | 
                         RCC_APB2Periph_AFIO, ENABLE);
  /* TIM2 clock enable */
  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);

}

/*******************************************************************************
* Function Name  : NVIC_Configuration
* Description    : Configures Vector Table base location.
* Input          : None
* Output         : None
* Return         : None
*******************************************************************************/
void NVIC_Configuration(void)
{
#ifdef  VECT_TAB_RAM  
  /* Set the Vector Table base location at 0x20000000 */ 
  NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0); 
#else  /* VECT_TAB_FLASH  */
  /* Set the Vector Table base location at 0x08000000 */ 
  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);   
#endif
```

 Tas errors kuru pieminēju bīj    failā šajā kodā: 
assert_param(IS_TIM_ALL_PERIPH(TIMx));  // Izkomenteeju sitos

erros bīja tas assert_param kas itkā ir kautkāda speciālā fiča jaunajai biblotekai kas palīdzot debaggošanā , man protams ka nav vaidzīga.
Vai ir kāds veids kā to progu uzstādīt tā lai nav jākomentē ārā tas asert_param ???

----------


## G-man

Sveiki, es te vairāk palasu forumu intereses pēc, bet tā kā esmu saskāries ar STM32 tad mēģināšu palīdzēt. Ir pāris lietas, ko tu dari nepareizi.
1. STM32 bibliotēku vajag iekļaut caur vienu failu "stm32f10x_lib.h". Tos atsevišķos perifēriju header failus nebāz iekšā, jo viņi tāpat tiek iekļauti caur iepriekšminēto failu.
2. Lai pazustu tās kļūdas par nedefinētajiem simboliem, tad failā "stm32f10x_conf.h" vajag atkomentēt nepieciešamās perifērijas.
Tas laikam galvenais. Vēl ieteiktu apskatīties st lapā paraugus, ja nemaldos tur arī priekš RIDE viņi ir. Tas USB virtuālā porta paraugs ir ejošs tā ka atliek tik paņemties.

----------


## Epis

Paņēmu vēlreiz to um0424.zip  USB Vcom port paraug kodu tīru tāds kāds ir nokompilēju (kļūdu itkā nebīj) un tad ielādēju un nekas neiet, mēģināju debaggot un arī nekas neiet, proti debagojot procis apstājās pie šīs koda rindas: 


```
/* Wait until device is configured */
  while (pInformation->Current_Configuration == 0)
  {
    NOP_Process();  // veic šito NOP processu visu laiku tas nozīmē tikai to ka ierīce nav iekonfigurējusies
  }
```

 Apskatījos parraug koda Opcijās un tur settingos zem Processor stāv  stm32F103VCH6, bet man uz circle ir stm32F103RBT6 prociss un kad es šito Opciju nomainu uz savu proci nokompilēju un tāpat nekas neiet un sliktākais ka es uzliku brake point uz to USB interruptu un debagojot procis tajā iekšā nellec un līdz ar to viņš veci to NOP cikllu visu laiku kamēr devais nav iekonfigurējies, bet viņš nevar iekonfigurēties ja neparādās USB interrupts. 

G-man ir tev kādu strādājoš USB test kods ja ir tad iedod HEX failu priekš circle kita, lai varētu pārbaudīt vai man vispār tas stm32 proča USB perifērija strādā kā nākās, jo varbūt problēma ir pašā procī !

----------


## Delfins

Tu vismaz zini, kas ir NOP?  ::

----------


## Vikings

Tu viņu simulātorā laid vai reālajā hārdwārē skaties kas notiek? Ja simulātorā tad vai tu vispār kaut kā simulē uz USB notiekošo?

----------


## Epis

> Tu vismaz zini, kas ir NOP?


 Laikam ka nezinu kas ir NOP !  
tā nop funkcija nedara neko, un šī stāvokļa var iziet tikai tad kad ģenerējās tas USB interrupts un sākās inicializācija, bet tas nenotiek, un līdz šim vēl nevienureizi laikam ka nav noticis līdz ar to nekas arī neiet.



> Tu viņu simulātorā laid vai reālajā hārdwārē skaties kas notiek? Ja simulātorā tad vai tu vispār kaut kā simulē uz USB notiekošo?


 debagoju es hardwareī nevis simulātorā, vienīgi varētu parasto brakpoint vietā mēģinat uzlikt to Trace Opciju bet vai tā starpība tur vispār ir kāda starp parasto brakepoint un Trace brakepointu ?

----------


## Vinchi

Eu nu bet Epi lasi vairāk user manuāļus un eksperimentē, nevajag jau par katru štruntu kas nesanāk te metrīgas diskusijas taisī.
Kompilators taču vienmēr met kļūdas ja kaut kas neadrbojas tās ierakstot googlē arī var atrast risinājumu.

----------


## Epis

Tur jau ir tā problēma ka te daži baigi apgalvo ka vissam jāiet gludi un ka kompilātors ir ideāls un ka es pats vainīgs ka liekot klāt programmai #include failus +visādus definējumus, piemēram es tagat uztaisīju pirmo Pārtraukuma vekotra kodu circle kita pogai PA.0 pinam un galvenajā failā man vienalga nācās ielikt #include "stm32f10x_exti.h" un tiko šo failu izkomentē tā rāda čupu ar erroriem, un teorētiski kompilerim vaidzētu pašam atrast to failu jo tur ir arī galvenā perifērij faila #include "stm32f10x_lib.h" definējums kurā ir uzskaitīti vissi #include faili arī tas kuru man nācās ar rokām pašam pierakstīt. 
Tākā šitā ir tā dzīves realitēte un mani protams kaitina kā kāds te baigi apgalvo ka proga visu dara pareizi un vainīgs kā parasti  esu es.

Un to savu pārtraukum vekora kodu es ar debaggeri iztestēju un viss strādā, un tagat ir apmēram skaidra interrupta uzstādīšanas tehnoloģija un tad pēc šīs būs jāpamēģina uztaisīt kāds USB perifērij test kods kas ģenerētu to pārtraukumu, jo pagaidām man tas vēl nav izdevīes nevienā no tiem example kodiem.

----------


## G-man

Nu es šodien vakarā drusku paņēmos un man aizgāja USB, bet ir dažas īpatnības.
1. USB piemēri no ST saita ir citiem kitiem tāpēc arī citi kvarci tiek izmantoti. STM32-Primer izmanto 12MHz kvarcu nevis 8MHz. Tas nozīmē, ka failā "hw_config.h" jāveic attiecīgas izmaiņas, lai dabūtu pareizu sistēmas frekvenci un arī usb.
2. Vēl atšķirība ir tajā, ka usb pull-up ir uz PB12. Un funkcijā USB_Cable_Config jāveic izmaiņas.

USB draiveri es uzliku vecāku versiju un paraugus arī ņēmu vecos, bet domāju, ka vaina ir tajā, ko es minēju.
Pievienoju failus kuros veicu izmaiņas.

Epi, tie perifēriju faili nav jāliek iekšā. Vienīgais, kuru tev programmā ir jāiekļauj ir "stm3210x_lib.h".
Apskaties uz šīm rindiņās


```
#ifdef _NVIC
  #include "stm32f10x_nvic.h"
#endif /*_NVIC */
```

 Tie faili tiek iekļauti tikai, ja ir definēta to iekļaušana. Tas savukārt jau ir izdarīts tavā vietā tikai jāatkomentē rindiņa failā "stm32f10x_conf.h".
Neredzu nekādas problēmas šeit.

----------


## Epis

Ielādēju G-man tavu Hex kodu un nekas neiet, pat pārinstalējot to USB draiveri tas pats rezultāts kas agrāk rāda unknown device , tagat ir 2 varsijas vainu vainīgs ir kompis kas nevar atrast to USB, vai arī circle kits, un kita vainu varētu noskaidrot mēģinot to kodu ielādēt stm32 procī kas ir uzlodēts uz fpga plates un tad apskatītes kā tas procis strādās.

----------


## Epis

Tā šeit tagat var redzēt kas tad notiek ar to USB komunikāciju starp kompi un STm32prime caur kompja USB analizātor progu 
USBlyzer evaluation 30dien versiju  ::  
un izskatās tā ka 


šeit tās Get port status pilnā informācija ko saņem.


```
Get Port Status
This request returns the current port status and the current value of the port status change bits.
Offset Field Size Value Description 
0 bmRequestType 1 A3h  
 4..0: Recipient  ...00011  Port 
 6..5: Type  .01.....  Class 
 7: Direction  1.......  Device-to-Host 
1 bRequest 1 00h Get Port Status 
2 wValue 2 0000h  
4 wIndex 2 0001h Port 
6 wLength 2 0004h  

Port Status
Offset Field Size Value Description 
0 Status 2 0100h  
 0: Connect Status  ........ .......0   
 1: Enabled/Disabled  ........ ......0.   
 2: Suspend  ........ .....0..   
 3: Over-Current  ........ ....0...   
 4: Reset  ........ ...0....   
 7..5: Reserved  ........ 000.....   
 8: Power  .......1 ........  Not in powered-off state 
 9: LS Device Attached  ......0. ........   
 10: FS or HS Device Attached  .....0.. ........   
 11: Test Mode  ....0... ........   
 12: Indicator Control  ...0.... ........   
 15..13: Reserved  000..... ........   

Port Status Change
Offset Field Size Value Description 
0 Status 2 0000h  
 0: Connect Status Change  ........ .......0   
 1: Enable/Disable Change  ........ ......0.   
 2: Suspend Change  ........ .....0..   
 3: Over-Current Indicator Change  ........ ....0...   
 4: Reset Change  ........ ...0....   
 15..5: Reserved  00000000 000.....
```

 vispār proga ir baigi labā es salīdzinājummam pieslēdzu Pie USB savu veco fotoaparātoru un tas izrādās ka slēdzās klāt kā mass storage device un varēju redzēt vissu descriptoru  ::  


```
Get Descriptor 
This request returns the specified descriptor if the descriptor exists. 
 
Offset	Field	Size	Value	Description	   
0	bmRequestType	1	80h		   
	4..0: Recipient		...00000 	Device	   
	6..5: Type		.00..... 	Standard	   
	7: Direction		1....... 	Device-to-Host	   
1	bRequest	1	06h	Get Descriptor	   
2	wValue.LowByte	1	00h	Descriptor Index	   
3	wValue.HiByte	1	02h	Configuration Descriptor	   
4	wIndex	2	0000h		   
6	wLength	2	00FFh	Descriptor Length	 
Configuration Descriptor 1 Self Powered 
 
Offset	Field	Size	Value	Description	   
0	bLength	1	09h		   
1	bDescriptorType	1	02h	Configuration	   
2	wTotalLength	2	0020h		   
4	bNumInterfaces	1	01h		   
5	bConfigurationValue	1	01h		   
6	iConfiguration	1	00h		   
7	bmAttributes	1	C0h	Self Powered	   
	4..0: Reserved		...00000 		   
	5: Remote Wakeup		..0..... 	No	   
	6: Self Powered		.1...... 	Yes	   
	7: Reserved (set to one)
(bus-powered for 1.0)		1....... 		   
8	bMaxPower	1	00h	0 mA	 
Interface Descriptor 0/0 Mass Storage, 2 Endpoints 
 
Offset	Field	Size	Value	Description	   
0	bLength	1	09h		   
1	bDescriptorType	1	04h	Interface	   
2	bInterfaceNumber	1	00h		   
3	bAlternateSetting	1	00h		   
4	bNumEndpoints	1	02h		   
5	bInterfaceClass	1	08h	Mass Storage	   
6	bInterfaceSubClass	1	05h	SFF-8070i	   
7	bInterfaceProtocol	1	50h	Bulk-Only Transport	   
8	iInterface	1	04h		 
Endpoint Descriptor 82 2 In, Bulk, 64 bytes 
 
Offset	Field	Size	Value	Description	   
0	bLength	1	07h		   
1	bDescriptorType	1	05h	Endpoint	   
2	bEndpointAddress	1	82h	2 In	   
3	bmAttributes	1	02h	Bulk	   
	1..0: Transfer Type		......10 	Bulk	   
	7..2: Reserved		000000.. 		   
4	wMaxPacketSize	2	0040h	64 bytes	   
6	bInterval	1	00h		 
Endpoint Descriptor 02 2 Out, Bulk, 64 bytes 
 
Offset	Field	Size	Value	Description	   
0	bLength	1	07h		   
1	bDescriptorType	1	05h	Endpoint	   
2	bEndpointAddress	1	02h	2 Out	   
3	bmAttributes	1	02h	Bulk	   
	1..0: Transfer Type		......10 	Bulk	   
	7..2: Reserved		000000.. 		   
4	wMaxPacketSize	2	0040h	64 bytes	   
6	bInterval	1	00h
```

 Tāds ir fočika atbilde uz Get Descrioptor pieprasījumu, bet mans Stm32 kits nesūta nekādu atbildi un pēc 2 sekundēm pārtrauc komunikāciju.

Kur varētu būt problēma komī vai tomēr stm32 procī, man jau liekās ka atkal ir tāpate vecā kaite ka nestrādā pārtraukuma vektors. 
uztaisīšu vēlvienu testu kurā ielādēšu parasto Led spīdināšanas kodu, un ja parādīs to pašu bildi tad skaidrs ka vainīgs ir stm32.

----------


## Epis

Papētīju dziļāk tā USBlyzer softa savu prime kita Datu Analīzi un tur beigās 
Un tur pie Request tabulas komandas "USB Get Node Connection Information" lejā  Datu analīzē rakstīts:
Connection status 00000002h Enumeration of device Failed

Principā šitas ir tas ko es pats debaggojot reāli novēroju ka netika ierakstīta USB adreses reģistrā saņemtā adrese no Hosta pie sākotnējās inicialziācijas. tākā problēma noteikti ka ir tomēr tajā stm32 procī.

----------


## Epis

A nevar būt tā ka es esu kautko tiem USB IO piniem, vai tai analgajai daļai sačakarējis pats? man sākumā kad rakstīju Led mirgošanas kodu sanāca ar testeri pazvanīt tās STM32 mikrenes kājas lai atrastu kura ir pieslēgta pie diodes un tā es izbraukāju pa visām čipa kājām, šādi nevarēja izsist kādu iekšējo čipa USB loģiku ? it sevišķi to kas par interrutpiem atbild ? 
ja tā tad varētu nopirkt elfā jaunu stm32 čipu un pārlodēt, bet pirms to darīt jāpārliecinās ka vaina patiešām čipā.

----------


## Delfins

> es izbraukāju pa visām čipa kājām


 "jābraukā" ne vis pa čipa izvadiem, bet celiņiem (atrast drošu "measure point")

----------


## Epis

Tagat debagojot to USB kodu sanāca noķert ar Brakepointu to RX USB interuptu attiecigi informācija ko USB saņem un cik saprotu atnāk tas PID, bet neko vairāk par to PID es nesaņemu, vismaz redzēt es neko ko esu saņēmis tajā debbagerī nevaru  ::  
un protams tā adrešu nummerācija nenotiek.

Tagat man vispirms vaik kādu paraug kodu kas varētu ienumurēt tos Endpointus, un pēctam nākošo kodu kur varētu aizsūtīt kautvai to descriptoru.

----------


## Epis

Un vēl viena lieta kur domāju ka ir kautkāda problēma, vismaz debaggojot tur kautkā dīvaini tie kodi lēkā, proti kods kas atrodās tajā USB interrupt service rutīnā ir uzrakstīts šādā stillā ar #if ; #ifdef 
kods izskatās šāds 


> #if (IMR_MSK & ISTR_ERR)
>   if (wIstr & ISTR_ERR & wInterrupt_Mask)
>   {
>     _SetISTR((u16)CLR_ERR);
> #ifdef ERR_CALLBACK
>     ERR_Callback();
> #endif
>   }
> #endif


 problēma ir tur ka ejot caur C debuggeri tā programma lec pāri lielai daļai to #if līdz ar to reāli nedekodē visus USB ISR reģistra karogus un moš dēļ tā arī nevar noteikt kas kad ir noticis, bet dīvaini tas ka es pāris reizes debagoju asm kodu tajā ISR tad sanāca kautkadīgies ielīst tajās COM piorta inicializācijas rutīnās, kā tas sanāca es nezinu, jo ar C koda debagošanu nekas tamlīdzīgs nav sanācis, bet patar to nekas tālāk nenotiek un tā USB adrese neuzstādās.

----------


## G-man

Nu nezinu, ko lai iesaka. Tikko pamēģināju ielādēt to hex failu, man uzrādās pie hardware virtuālais ports. Kā tu taisi hex faila ielādi? Vēl ja vēlies vari pamēģināt sekojoši - atrodi savā projektā un pārkopē "hw_config.c" un  "stm32f10x_conf.h" ar manis dotajiem.

----------


## Epis

URĀĀ   ::  beidzot kautkas parādījās, paņēmu es to tavu G-man hex failu un tagat ieprogrammēju viņu caur RFlsher7 programmu pirmstam es viņu lādēju caur Ride7 -> Local Settings->Rlink configuration->Advanced options->Debugg options un tur  ir Wright target Flash NOW poga un tad caur to es lādēju to Hex failu un izrādās ka nekas tā neiet, bet dīvaini tas ka šādi lādējot savu Led test progu man viss gāja.

Tagat proglēma ir tāda ka man parādot ka atrasts tas Com USB met ārā Found New hardware Wizard itkā es nebūtu tos draiverus pietiekami labi uzinstalējis.

----------


## Delfins

> Tagat proglēma ir tāda ka man parādot ka atrasts tas Com USB met ārā Found New hardware Wizard itkā es nebūtu tos draiverus pietiekami labi uzinstalējis.


 nepietiek jau tikai failus uzlikt (pat pirms), janomapo devaiss ar konkrētiem draiveriem. nav jau linux, ielādē/iekompilē lib-u kernelī un devaiss pus-automātiski paņem.

Windowsā ir pat speciāli hardware profili... vari mainīt draiveru versijas, restorēt ja kaut kas notiek. palasi dokumentāciju.

----------


## Epis

Tā tagat piespraudu vēlreiz kitu pir USB un izgāju to setupHardware Wizardu un tagat viņš normāli uzinstalējās un nokonfigurējās, laikam iepriekš kad uzstādīju to draiveri windows īsti viņu neuzinstalēja, un secinājums tāds ka tos draiverus var uzstādīt tikai tad ja ir reāls hardware pieslēgts pie kompja  ::  

Nu ko tagat jāmēģina palaist kāds no tiem manējiem kodiem un tad jāuzraktsa pirmā aplikācija uz VisualC# kas kautko sūtīs COM6 portam un arī saņems no COM6 porta, no sākuma ko sūtīs to arī atpakaļ saņems lai var pārliecināties ka viss patiešām strādā.

----------


## Vikings

Ō nu tad ar to arī apsveicam. Šas pamēģināsu ar USBlyzeru saprast kādēļ mans USBasp nestrādā.

----------


## Epis

Izdevās palaist to ST USB demo kodu izdarot tās izmaiņas kuras pirmstam norādija G-man 
1. uzliku to PLL rēzinātāju uz 6 jo kristāls ir 12Mhz
2. ieliku to USB conect/disconect pinu B.12 un arī izmaiņas tajā USB_Cable_Config funkcijā.

un tad nokompilējot un šoreiz kodu flashā lādēju no Ride7 progas un pēctam vaidzēja atslēgt visus USB vadus no kita, uztaisīt viņam restart ar Jumperi, tad ieslēgt ar pogu un iespraust USB vadu tad viss aizgāja, bet nācās atkal to hardware wizard iziet un pajaunu draiveri ieinstalēt, kautkā viņš sudīgi ieinstalējās, un nupat iemēģināju atkal kitu pieslēgt pie USB un atkal prasa lai installē,uztāda to USB ierīci. 
nevaig gadījumā to USB instalācij failu kautkādā speciālā Windows draiveru mapē iekopēt, lai viņš pats automātiski atrod un ieinstallē to USB devaisu ?

----------


## Delfins

normālos gadījumos windows pārkopē failu iekš sava `driver cache`, pat ja mainās usb ports, šams atrod kā jaunu HW un ņem jau pazīstamu SW/DRV.
tas ka katru reizi prasa, nozīmē, ka install nav līdz galam, vai arī USB-ška ģenerē jaunus ID-us sev.. tik sīki es tur vairs nezinu.

----------


## Epis

Ir tā ka tagat mēģinu nosūtīt kautkādus datus caur to USB kompim un nekas nesanāk  ::  
cik saprotu tad datus sūta ieliekot tajā buffer_out[] arrayā kautkādus datus un to es izdaru ar šādu operāciju (vienkārši no 1- ::  


```
u32 i;
for(i=0; i<8; i++)
    {
   buffer_out[i] =i;
    }
```

 un tālāk nāk mūžīgais cikls kur ja es nospiežu circle kita pogu tad viņam vaidzētu tos datus sūtīt, bet cik skatos savā visual C# RS232_iet progā caur COM7 portu es nekādus datus nesaņemu  ::   (programma protams ka strādā tādēļ arī tur ir galā _iet  ::  


```
loop:
if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 0x01)   
{
  
    if ((count_out != 0) && (bDeviceState == CONFIGURED))
    {
       
      USB_To_USART_Send_Data(&buffer_out[0], count_out); 
      count_out = 0;
    }
 
}
goto loop;
```

 datu saņemšanu es vēl nēsu mēģinājis, bet vispirs gribās kautko kompim nosūtīt, un pēctam saņemt no kompa un pārstūtīt kompim. 
kāds zin kur varētu būt problēma ?

----------


## jeecha

Un ieliekot datus kursh uzstaadiis *count_out* mainiigaa veertiibu uz 8?

P.S. Iesaku izvairiities no *goto* lietoshanas ieksh C, tas ir slikts stils un parasti padara kodu gruuti uztveramu. Tas nav assamblers, ieksh C ir pietiekami daudz citu veidu kaa taisiit cikloshanos skaisti un uzskataami.

----------


## Epis

tascount_out ir definēts pēc main un tasir 8 un tas buffer_out definējums ir sāds:
extern u8 buffer_out[VIRTUAL_COM_PORT_DATA_SIZE]; un tas vietual_com_port_data_size itkā ir 40 tākā bufferī vieta itkā ir

itkā mēģināju noņemt parrity bitu (uz NONE) bet rezultāti joprojām nekādi, 
Dīvaina liekās šitā funkcija


```
LINE_CODING linecoding =
  {
    115200, /* baud rate*/
    0x00,   /* stop bits-1*/
    0x00,   /* parity - none*/
    0x08    /* no. of bits 8*/
  };
```

 itkā man tajā piemērā Baud rate ir 9600 un pārējais itkā sakrīt
un šeit ir viens koda gabals kur izmanto to Linecoding struktūras parametrus


```
* Function Name  :  UART0_Config.
* Description    :  Configure the UART 1 according to the linecoding structure.
* Input          :  None.
* Return         :  Configuration status
                    TRUE : configuration done with success
                    FALSE : configuration aborted.
*******************************************************************************/
bool USART_Config(void)
{

  /* set the Stop bit*/
  switch (linecoding.format)
  {
    case 0:
      USART_InitStructure.USART_StopBits = USART_StopBits_1;
      break;
    case 1:
      USART_InitStructure.USART_StopBits = USART_StopBits_1_5;
      break;
    case 2:
      USART_InitStructure.USART_StopBits = USART_StopBits_2;
      break;
    default :
    {
      USART_Config_Default();
      return (FALSE);
    }
  }
```

 sanāk ka UART perifēriju iekonfigurē uz baud rate 115200 bet USB perifērija uz 9600 kā to lai izskaidro ?

----------


## Epis

Laikam sapratu kādēļ nekas neiet, jo tas test kods ir domāts kā USB to UART(rs232) pārveidotāju starp 2 kompjiem kur vienā galā ir Com ports piesprausts pie plates un otrs kompis ar plati ir savienots caur USB un tad itkā var sūtīt info no kompja uz kompi, un līdz ar to tas kods ko es tur ieliku ir galīgi garām.
un tad lai kautko nosūtītu kompim caur USB man ir jāmaina šitā funkcija:


```
* Function Name  : UART_To_USB_Send_Data.
* Description    : send the received data from UART 0 to USB.
* Input          : None.
* Return         : none.
*******************************************************************************/
void USART_To_USB_Send_Data(void)
{
  if (linecoding.datatype == 7)
  {
    buffer_in[count_in] = USART_ReceiveData(USART1) & 0x7F;
  }
  else if (linecoding.datatype == 8)
  {
    buffer_in[count_in] = USART_ReceiveData(USART1);
  }
  count_in++;
  UserToPMABufferCopy(buffer_in, ENDP1_TXADDR, count_in);
  SetEPTxCount(ENDP1, count_in);
  SetEPTxValid(ENDP1);
}
```

 vienīgi man jāaizvieto tie UART0 saņemtie dati ar savējiem kad tiek nospiesta poga  ::  un tad kautkam vaidzētu strādāt  :: 

Es pārbaudīju caur to USBlyzer softu kā es caur VisualC# progu mēģināju nosūtīt datus uz stm32 kitu un kautkāds OUT datu transfers parādījās un bīj veiksmīgi saņemts tad sanāk ka programma tos datus paaraidīja uz UART1 portu, būs jāuztaisa lai sūta atpakaļ caur USB tos datus kurus es aizsūtu.

----------


## Epis

karoči sapratu kā sūtīt un kā saņemt (nolasīt datus) un sūta ar pēdējām 3 kodu rindām 
UserToPMABufferCopy(buffer_in, ENDP1_TXADDR, count_in);
  SetEPTxCount(ENDP1, count_in);
  SetEPTxValid(ENDP1);

un saņem datus automātiski tiko ir USB interupts ka dati tika saņemti tā tie dati tiek jau automātiski pārlādēti uz to buffer_out[40] datu lauku un skaits cik tad tur ir atnākuši dati atrodās count_out atmiņā, un tad arī paliek skaidrs kā strādā šitas USB to UART kods, proti tas kods skatās vai Count_out nav 0, ja nav tas nozīmē ka caur USB tika saņemti dati un tos tad nosūta caur UART0 (kurš man nav pieslēgts) uz kautkurieni, tādēļ es arī nekādus datus nesaņemu jo man vienkārši nav fiziska RS232 vada tam stm32kitam, un tagat jāpamēģina uztaisīt jauna USBsend() funkcija kura sūta USB datus un jāpalaiž lai sūta kautkādus manus pašizvēlētos ciparus pēc pogas nospiediena  ::

----------


## Epis

šitas ir jaunais test kods:


```
u16 skaits = 8;
u8 sutam[0];
u32 i;
for(i=0; i<8; i++)
    {
   sutam[i] =i;
    }

loop:
if (GPIO_ReadInputDataBit(GPIOA, GPIO_Pin_0) == 0x01)   
{

    if (bDeviceState == CONFIGURED)
    {
     USBsend_Data(sutam,skaits);
    }
 
}
goto loop;
```

 un jaunā hw_config funkcija


```
void USBsend_Data(u8 data_send[],u16 data_count)
{
UserToPMABufferCopy(data_send, ENDP1_TXADDR, data_count);
  SetEPTxCount(ENDP1, data_count);
  SetEPTxValid(ENDP1);
}
```

 vēl nēsu ietestējis bet vaidzētu tagat USB kautko sākt sūtīt  ::

----------


## Epis

Urāā viss beidzot strādā, un nospiežot pogu es ar savu RS232_iet softu saņemu veselu čupu ar 0,1,2,3,4,5,6,7 un tā tālāk ciparu rindu  ::  
un domāju ka datu aizsūtīšana  un pārsūtīšana notiks tādā pašā stilā tikai jānomaina tas suta[] uz buffer_in un cipars uz count_in.

Nu tā lai šito visu izprastu tomēr nācās līst iekšā un analizēt to kodu + rakties par datasheetu, bet labi vismaz kad kad paraug kods, ja tāda gatavā parauga nebūtu tad man būtu aizgājuši kādi 3 mēneši lai tādu no 0 uzceptu ! 

tagat sākšu beidzot cept tos īstos algoritmus un var topiku vērt ciet. 
vēl piebildīšu ka NXP izlaidusi jaunu MCU sēriju proti ātrākos cortex-M3 MCU 100 MHz, LPC1700 series   ::   tākā šitie cortex-M3 čipi ir kruta platforma ko ir vērts iemācītes un apgūt.

----------


## Delfins

> vēl piebildīšu ka NXP izlaidusi jaunu MCU sēriju proti ātrākos cortex-M3 MCU 100 MHz, LPC1700 series


 ... un sākās viss gala....

----------


## zzz

> vēl piebildīšu ka NXP izlaidusi jaunu MCU sēriju proti ātrākos cortex-M3 MCU 100 MHz, LPC1700 series    tākā šitie cortex-M3 čipi ir kruta platforma ko ir vērts iemācītes un apgūt.


 Nefigaa, tu vienkaarshi neapjeedz kaa pareizi vajag. Iistie vechi visu taisa uz fpga. Shite pat forumaa ir taads superspeciaalists epis, vinsh tevi pamaaciis. Vo skaties




> un šeit galvenā īpašiba ir tāda ka vari uzbūvēt savu procesora infrastruktūru ar konkrētu finkcionalitāti,perifērijām, un tici man perifērijas šādam procesoram ir simtiem sākot no PCIe-x1x4 beidzot ar SPI,UART parādi man kādu procesoru grupu kurai būtu tāds perifēriju klāsts kā fpga pročiem ??


 Karoch pilniigaakaa draza un muljkjiibas tavi corteksu slavinaajumi, fpga foreva!!!111!!!!!11!11!   ::  

=========

Disklaimeris: augstaak rakstiitais ir iznjirgaashanaas par epi, nevis korekta/objektiiva tehniskaa informaacija.

----------


## Epis

> Karoch pilniigaakaa draza un muljkjiibas tavi corteksu slavinaajumi, fpga foreva!!!111!!!!!11!11!   
> =========
> Disklaimeris: augstaak rakstiitais ir iznjirgaashanaas par epi, nevis korekta/objektiiva tehniskaa informaacija.


 Vinchi dzēs ārā šito ZZZ spamu. 

 ZZZ Tupumam nav robežu, viņš nezin ka priekš fpga ir cortex-M1

----------


## jeecha

Epis, tu laikam tomeer nesaprati ironiju... pirms 3 meeneshiem tu juusmoji par fpga un apgalvoji ka visi mikrokontrolieri un procesori ir suu prieksh uzdevumiem kurus tu taisies realizeet. Peec tam saaki juusmot par to kaa fpga soft kontrolieri rullee (neskatoties uz to ka veiktspeejas, straavas pateerinja un cenas zinjaa moderni kontrolieri vinjus vienkaarshi samalj miltos). Tad meties uz sho ARM Cortex-M3 kontrolieri un ilgi un dikti priecaajies kaads vinsh speeks. Tagad atkal paraadiijies jau naakamais favoriits - jaunie NXP Cortex-M3 kontrolieri... Ar shaadu pieeju un tempu diez vai savas dziives laikaa paspeesi pakustinaat kaadu motoru ar savu G-code interpretatoru un motoru kontrolieri  ::

----------


## Epis

stm32 USB topiku var slēgt ciets, jo problēma ir atrisināta, kods ir piejams, viss strādā  ::  

tālāk oftops:
Tas ka ir parādījusies jauna mikrene tirgū nenozīmē ka es tagat kā traks iešu un metīšos viņu pirkt, mani pilnībā apmierina šitie stm32 proči gan cena gan performance, bet tas nav tā ka es tagat esu pateicis ka redz stm32 ir labāks par to manu fpga, tās ir vispār 2 nesalīdzināmas lietas, un tad kad būs uzcepts tas pirmais Lineārās interpolācijas kods(drīz būs) uz C valodas tad varēs redzēt kas un kā.
Tākā labāk Jeecha pa fpga neko pārāk gudru nesaki savādāk nāksies man rakstīt veselu Traktātu   ::  un vēlam tos jautājumus tad uzdod FPGA sadaļā.

----------

