Teade

Collapse

Foorumi reeglid.

Foorumi reeglistik on uuendatud. Palume tutvuda ja arvesse võtta.
See more
See less

stm32F101T8

Collapse
X
 
  • Filter
  • Kellaaeg
  • Show
Clear All
new posts

    stm32F101T8

    On keegi ehk selle looma käima ajanud, endal vaja 1 käima ajada.
    anuarm tooriistad ei kõlvanud, tirisin Codesourcery's GCC ja sain ka selle keili külge keevitatud, kasutasin näidet http://www.siwawi.arubi.uni-kl.de/av...ml#lm_example1
    saidi lõpus olevalt lingilt. Peale mõningast juramist compileeris ära, HJTAG flashis ära ka, aga asi ei funga, debugeriga vaadates hüppab esimese käsu peale kuskile keset adre ruumi ja jookseb kokku. Proovisin ka katse koodi, et 2 rida ja siis while(1);
    2 rida sisaldasid IO registrite confimist ja siis väljundi 1 seada et PORTA.1 väljundis ledi põlema läheks aga samuti hüppab puuse ja jookseb kokku.
    samuti ei leia kuskilt lihtsalt header faili kus registrid defineeritud, kõik käib läib mingi AND/OR/XOR.. porno. Somuti pole kindel kas compiler ültse õieti toimetab. Teooreas oleks vaja asi veel see aasta ära lõpetada aga ....
    Modelleerimises ja tootmises kehtivad:
    1. Avariikindel vooluring lühistab kõik teised.
    2. Transistor, millel on kiiresti toimiv kaitse, säästab kaitset, sulades kõigepealt ise.

    #2
    Vs: stm32F101T8

    ise küsisin, ise vastan, nüüd siis asi töötab(ledi vilgub) compiler on winarm.
    Viga oli selles et lisasin projekti ainult osad failid(millest ta puudust tundis.
    Lisades kõik hakkas asi toimima, ainuke et ledi vilgutamiseks majaminev kood on 35k suur ja prosel on nii 64k mälu ültse, töökaaslane arvas et 2 ledi saab vilkuma panna:P
    EDIT: Peale optimiseerimise suruse peale seadmist vähenes 15k peale, aga seda on LIIGA palju ledi vilgutamiseks:S
    Modelleerimises ja tootmises kehtivad:
    1. Avariikindel vooluring lühistab kõik teised.
    2. Transistor, millel on kiiresti toimiv kaitse, säästab kaitset, sulades kõigepealt ise.

    Comment


      #3
      Vs: stm32F101T8

      Lisan veel et selle seeria kividel on miski maagia I2C-ga, raud külmab ära lihtsalt. http://62.193.238.133/forums-cat-6552-23.html
      osad väidevada et tööle saanud, mina ei saanud kuigi kõik varjandid läbi proovitud alates uue libi kasutamisest seega on prose kus HW I2C aga kasutama peab SW I2C-d
      Modelleerimises ja tootmises kehtivad:
      1. Avariikindel vooluring lühistab kõik teised.
      2. Transistor, millel on kiiresti toimiv kaitse, säästab kaitset, sulades kõigepealt ise.

      Comment


        #4
        Vs: stm32F101T8

        Ühe 18-seeria PICil ei saanud ka HW I2C-d tööle kuigi proovisin 100 erineval moel. Errratad nagu ei rääkinud midagi. Aitas, nagu sinugi puhul, koduvillane softiline bit-bang I2C.
        Mitte et see teadmine sind kuidagi edasi aitaks aga siiski....
        - Vend Hieronymus tunneb Motorola toodete nimekirja kõige paremini, las tema ütleb.
        - Motorola poolt loodud kiipide hulgas ei ole teda üles tähendatud. - Tähendab: ta on Intelist!

        Comment


          #5
          Vs: stm32F101T8

          ega see juhtumisi 18F2520 pole? Endal on sellised SPI slave modes LCD juhtimise taga. Mõtlesin et võiks I2C slave modes tööle ajada aga kui nendega ka jama siis ei hakka pead vaevama. I2C taga mul miski 5 tk PCA9555 kivi. Seega katkestused tulevad nagunii sealt. Hea oli vähemalt see et sel prosel on väljundi puhul open drain mode ja saab luged väljund olekus pordi tegelikku olekut, mis tegi S_I2C väga lihtsaks.


          postiks siia oma S_I2C koodi kah, ehk kellelgi vaja.

          Kood:
          /****************************************
          * File Name          : S_I2C.c
          * Author             : Aivar Saar
          * Version            : V1.0
          * Date               : 10/08/2008
          * Description        : Software I2C
          ********************************************************************************
          ********************************************************************************/
          
          /* Private typedef -----------------------------------------------------------*/
          /* Private define ------------------------------------------------------------*/
          #define SDA1 GPIO_SetBits(GPIOB,GPIO_Pin_7) 
          #define SDA0 GPIO_ResetBits(GPIOB,GPIO_Pin_7) 
          #define SCL1 GPIO_SetBits(GPIOB,GPIO_Pin_6) 
          #define SCL0 GPIO_ResetBits(GPIOB,GPIO_Pin_6) 
          #define SDAi GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_7)
          /* Private variables ---------------------------------------------------------*/
          /* Private function prototypes -----------------------------------------------*/
          void Viivitus(void);
          void S_I2C_Init(void);
          void S_I2C_Start (void);
          void S_I2C_Stop(void);
          char S_I2C_Read(unsigned short ack);
          char S_I2C_Write(char data);
          char S_I2C_Write_Address7(char address, unsigned char read);
          /* Private functions ---------------------------------------------------------*/
          
          
          /*******************************************************************************
          * Function Name  : Viivitus
          * Description    : Generate delay
          * Input          : None
          * Output         : None
          * Return         : None
          *******************************************************************************/
          void Viivitus(void){
          Delay(0xAFF);
          }
          /*******************************************************************************
          * Function Name  : S_I2C_Init
          * Description    : Init software I2C
          * Input          : None
          * Output         : None
          * Return         : None
          *******************************************************************************/
          void S_I2C_Init(void){
            GPIO_InitTypeDef  GPIO_InitStructure; 
            /* Configure I2C1 pins: SCL and SDA */
            GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_7 | GPIO_Pin_6;
            GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
            GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD;
            GPIO_Init(GPIOB, &GPIO_InitStructure);
            GPIO_SetBits(GPIOB,GPIO_Pin_7);
            GPIO_SetBits(GPIOB,GPIO_Pin_6);
          }
          /*******************************************************************************
          * Function Name  : S_I2C_Start
          * Description    : Generate start condition
          * Input          : None
          * Output         : None
          * Return         : None
          *******************************************************************************/
          void S_I2C_Start (void) {
          SDA1;
          SCL1;
          Viivitus();
          SDA0;
          Viivitus();
          }
          /*******************************************************************************
          * Function Name  : S_I2C_Stop
          * Description    : Generate stop condition
          * Input          : None
          * Output         : None
          * Return         : None
          *******************************************************************************/
          void S_I2C_Stop(void){
          Viivitus();
          SDA0;
          Viivitus();
          SCL1;
          Viivitus();
          SDA1;
          Viivitus();
          }
          /*******************************************************************************
          * Function Name  : S_I2C_Read
          * Description    : Read one byte
          * Input          : Acknowledge
          * Output         : None
          * Return         : byte read
          *******************************************************************************/
          char S_I2C_Read(unsigned short ack){
          char i, temp = 0;
          SCL0;
          Viivitus();
          SDA1;
          for (i=0 ;i<8;i++){
          SCL0;
          Viivitus();
          SCL1;
          Viivitus();
          temp <<= 1;
          temp += SDAi;
          }
          SCL0;
          Viivitus();
          SCL1;
          Viivitus();
          if(ack){SDA0;} else {SDA1;} 
          Viivitus();
          SCL0;
          return temp ;
          }
          /*******************************************************************************
          * Function Name  : S_I2C_Write
          * Description    : Write one byte
          * Input          : byte to write
          * Output         : None
          * Return         : Acknowledge recived
          *******************************************************************************/
          char S_I2C_Write(char data) {
          char i ;
          for (i=0 ;i<8;i++){
          SCL0;
          Viivitus();
          if (data & 0x80) {SDA1;} else {SDA0;}
          Viivitus();
          SCL1;
          Viivitus();
          data<<=1;
          }
          SCL0;
          Viivitus();
          SDA1;
          Viivitus();
          SCL1;
          i = SDAi;
          SCL0;
          return i;
          }
          /*******************************************************************************
          * Function Name  : S_I2C_Write_Address7
          * Description    : Write 7 bit addres and read write bit
          * Input          : address to write    , operation(read/write)
          * Output         : None
          * Return         : Acknowledge recived
          *******************************************************************************/
          char S_I2C_Write_Address7(char address, unsigned char read) {
           char i,temp ;
           temp=address<<1;
           temp+= read ? 1:0;
           for (i=0 ;i<8;i++){
            SCL0;
            Viivitus();
            if (temp & 0x80) {SDA1;} else {SDA0;}
            Viivitus();
            SCL1;
            Viivitus();
            temp<<=1;
           }
           SCL0;
           Viivitus();
           SDA1;
           Viivitus();
           SCL1;
           i = SDAi;
           SCL0;
           return i;
          }

          Ja Näide(PCA9555) kiviga suhtlemisel.
          Kood:
          void PCA9555_Write(unsigned char address, unsigned char command, unsigned char data){
           S_I2C_Start();
           S_I2C_Write_Address7(address+0x20,FALSE);
           S_I2C_Write(command);
           S_I2C_Write(data);
           S_I2C_Stop();
          }
          Modelleerimises ja tootmises kehtivad:
          1. Avariikindel vooluring lühistab kõik teised.
          2. Transistor, millel on kiiresti toimiv kaitse, säästab kaitset, sulades kõigepealt ise.

          Comment


            #6
            Vs: stm32F101T8

            Esmalt postitatud murphy poolt
            On keegi ehk selle looma käima ajanud, endal vaja 1 käima ajada.
            ....
            kahju et varem ei marganud

            mul on selle kivi jaoks PCB plaate, pooleldi kaima aetud
            oleks saanud monele huvilise ara anda

            ise kasutan selle progemiseks www.devkitpro.org
            compilerit, polnud mingit probleeme

            Antti
            aga kui keegi tahab selle STM32 mangida, siis oleks see too
            mille eest saaksin natuke maksta ka

            st too oleks uhel plaadil koik funktsioonid ara testida
            SD kaart/LCD/pwm sound..

            Comment


              #7
              Vs: stm32F101T8

              lisan nüüd et see prose sobib ainult ledi vilgutama,
              kui ma käsen ledi põlema panna üle com pordi @256K baud siis töötab ja loeb õige väärtuse tagasi ka. Kui ma nüüd teha sama 128K baudi siis ledi ei panda põlema aga pinni reaalne väärtus saadakse küll tagasi, nagu ajuvaba prose.
              see üks paljudest maagilistest omadustest mis välja tulnud.
              Tüübid võiksid vähemalt oma sample koode katsetada.
              Tundub et ST kraam oli enne saast ja on seda edasi, kurb aga tõsi.
              Põhi teema ongi et vahe väärtused pannakse tasku. Võib ka compileri kala olla aga kahtlen.
              Modelleerimises ja tootmises kehtivad:
              1. Avariikindel vooluring lühistab kõik teised.
              2. Transistor, millel on kiiresti toimiv kaitse, säästab kaitset, sulades kõigepealt ise.

              Comment


                #8
                Vs: stm32F101T8

                Äkki liigne "optimeerimine"? Errata'des pole probleemist juttu?

                Sattusin luminarymicro nimelise tootja veebilehele. Varem ainult PICi ja natuke AVR-iga tegelenud. Seal meelitavad 8 ja 16bitiste (eriti PICi ) pealt kohe üle kolima nende 32bit Stellarise (ARM Cortex-m3) peale. Oomis hindu vaadeldes tunduvad luminary omad veidi odavamad kui stm32. Kahju et nende väikseimat lm3s101 ja 102 oomis/farnellis ei ole - hobielektroonikule kohasem (Ei tea kas midagi pistmist Microchipi (kummalise) kohtukaebusega nende kahe micro vastu - nimelt kõik kelle microl on vähem jalgu kui ALU databus laius - on rikkunud patendi seadust. LM3S10x ongi 28 koiba aga 32bitti. ). Eriti paistab silma luminary dokumentatsiooni juures loogilisus - lühendid, tootekoodid, datasheet'id kõik väga läbimõeldult ja loogiliselt tehtud, erinevalt kohati microchipist. Vahelduseks siis ARMi kallele.

                Comment


                  #9
                  Vs: stm32F101T8

                  koodi on 35k ilmselt seepärast et jätsid C++ libid külge, vaheta C omade vastu ja tekib max 12k ja ka see vaid kui printf jm stdio.h funktsioone kasutad. teine asi et GCC all ei saa max optimiseerimise korral kasutada viiteid mis tehtud stiilis:
                  void viide ( long ww ) { while (ww--); } ,
                  need visatakse välja.

                  Comment


                    #10
                    Vs: stm32F101T8

                    Oleks ST datasheet siis microchipi moodi tehtud. Lolli juttu täis, konkereetseid registri tabalitest pole haisugi. Samuti pakuvad nad ühe korraliku registrite header faili asemel mingit sodi. See lib tundus algul meeldiv aga kui see 16K koodi startupiks kasutab on maagai, see 16k siis optimeerijaga ilma tolleta miski 38k (64k ültse mälu on) , ma hakkan suht veenduma et see viga nende lib-ites.
                    Praega selline seis. Tegin katseks ühe asja mis lihtsalt uart data spi porti paneb. Kui saadan suure hulga (~2M) datat siis SPI port hangub, data jookseb aga clk jääb seisma. Saadan alla 100 suuruste juppidena ja iga nende vahel vähemalt 100ms delay siis töötab ja võtab ka siga kaua aega. Muide pici kohta niipalju et mul sama seadmes 18F2520 ka QFN korpus, töötab SPI slave modes. Ja siga hästi töötab. Progemine oli enam vähem sama mahukas mis cortexil aga aega võttis 2 päeva. Cortexiga jupitan juba mõnda aega.
                    Lõpuks selgub et see selline prose kus lisa rauda peale IO pinnide pole, ledi vilgutajaks ainult?
                    Eks siis peab SPI ka tarkvaraliseks tegema.(I2C juba on) Rohkem neid kive igal juhul ei muretse ja uutes asjades kasutan PIC või ARM7.
                    Kahju et tänapäeval asju ei testita, kohe kiirelt massidesse täiesti suva mis sodi.
                    Aga no mida ma virisen odav ta on ju.
                    Modelleerimises ja tootmises kehtivad:
                    1. Avariikindel vooluring lühistab kõik teised.
                    2. Transistor, millel on kiiresti toimiv kaitse, säästab kaitset, sulades kõigepealt ise.

                    Comment


                      #11
                      Vs: stm32F101T8

                      ära nüüd üle dramatiseeri, pole sel STM32 suurt häda midagi, üsna paljud nikerdvad miskit sellega. ma ise küll mitte. aga oli mõni aeg tagasi jupp aega mängida nii STM32-Circle kui STM3210E-Eval:
                      http://www.st.com/mcu/contentid-100-...210B_EVAL.html
                      ja mis tegelt mul karbi lahti võttis: plaadil on 128MB NOR, 512MB NAND ja 1GB SD kaart, kõik on konfitud kui USB HDD-d, kuid absoluutselt tühjad ! isegi formaatimata ! heaks tavaks on lisatud mälu inffi, näiteid või kasvõi reklaami täis.
                      Ja veel, CD-d pole ka komplektis.

                      Comment


                        #12
                        Vs: stm32F101T8

                        Point on selles et kui ma ostan prose siis eeldan et seal sees olev raud töötab,
                        prose valin ju sees oleva raua järgi. Nüüd aga tundub et peab veenduma kas raud ültse töötab. Kuigi see pole esimene juhus, LPC2110ga oli sama asi.
                        Seevastu aga sharp kivi , seal töötas kõik nagu specis perfecto. Specis oli kõik registrid ja siis seal all biti kirjeldused. Hea oli näpuga järge ajada. ST specis aga jutu sees kuskil miskid bitid, kus registris aga need asuvad on speci lõpus või kuskil x lehel mingi lühike tabel.
                        Modelleerimises ja tootmises kehtivad:
                        1. Avariikindel vooluring lühistab kõik teised.
                        2. Transistor, millel on kiiresti toimiv kaitse, säästab kaitset, sulades kõigepealt ise.

                        Comment


                          #13
                          Vs: stm32F101T8

                          Kas siin ongi põhjus, miks pooljuhitööstuses on kõigepealt usa, jaapan, korea ja siis alles esimene kolmest euroopa firmast
                          If you think education is expensive, try ignorance.

                          Comment


                            #14
                            Vs: stm32F101T8

                            NXP puhul ei imesta, kuulujutt et sealt kompetents laiali jooksnud, liigub ammu, keda huvitab, lugegu mannerisme ( Manner - elektroonika blogija ).
                            märkuse korras, väga paljud USA või Jaapani jupid on hoopis euroopas disainitud, AVRi Norra päritolu teab igaüks, aga et Texas Instrumentsi kõik mikrokontrollerid ( s,h MSP430) on saksamaal disainitud või et Toshiba mitmed prosed samuti saksamaal. EUle kahjuks omane et 8-lisel süstal on 7 tüürimeest ja 1 sõudja , firmades sama värk.

                            Comment


                              #15
                              Vs: stm32F101T8

                              Kas see stm32F101T8 käitub mõlemas, UART ja USART reziimis pahasti?

                              Ja kas ja kuidas seda sünkrot PC-sse saab või see on ainult mikrode omavaheline asi.
                              Contact & general Information for CAMI Research - manufacturer of the CableEye brand of continuity & hipot, Cable & Harness Testers

                              räägib et peab olema 25 pistik aga sellest nagu ei aita kui jalad on
                              maas.

                              Comment

                              Working...
                              X