Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 77 odgovora
  • 24.997 pregleda

Najnovija ↓

Re: STM32F4 Inicijalizacija - startup code 03.03.2012. u 11:04 · pre 178 meseci #41
Biblioteke mogu imati gresaka (a najcesce i imaju), i dokumentacija za biblioteke takodje.
Prema_tome -> Datasheet;
Re: STM32F4 Inicijalizacija - startup code 04.03.2012. u 17:19 · pre 178 meseci #42
Citat:
Odin D.: Biblioteke mogu imati gresaka (a najcesce i imaju), i dokumentacija za biblioteke takodje.
Prema_tome -> Datasheet;

Lično sam pročitao stotine datasheet-ova, ali ovo počinje polako da me nervira.
Već dva dana pokušavam da upotrebim funkciju za debug: ITM_SendChar
Ona bi trebala da pošalje karakter na Port 0, koji se vidi u Atollic-u u Debug prozoru - dole desno, SWV Console.
Code:
static __INLINE uint32_t ITM_SendChar (uint32_t ch)
{
  if ((CoreDebug->DEMCR & CoreDebug_DEMCR_TRCENA_Msk)  &&      /* Trace enabled */
      (ITM->TCR & ITM_TCR_ITMENA_Msk)                  &&      /* ITM enabled */
      (ITM->TER & (1UL << 0)        )                    )     /* ITM Port #0 enabled */
  {
    while (ITM->PORT[0].u32 == 0);
    ITM->PORT[0].u8 = (uint8_t) ch;
  }
  return (ch);
}

Registri ITM->TCR i ITM->TER nisu dobro konfigurisani, pa ne prolazi gornji if.
Sve sam prelistao, ali objašnjenje pomenutih registara je prilično siromašno, da ne kažem nikakvo.
Pokušao sam da upisujem u njih, ali ni to ne prolazi.
PS
Mislim da je debug osnovna stvar i da ide u inicijalizaciju, odnosno ovu temu.
Re: STM32F4 Inicijalizacija - startup code 04.03.2012. u 18:11 · pre 178 meseci #43
Serial Wire Viewer je real time tracer i nije podrzan uopste u LITE verziji... Vidis da za oba podrzana interface-a ima samo SWD i JTAG u ponudi, nema SWV. Obrati takodje paznju da ST-Link v2 (koji je na STM32F4DISCOVERY ploci) podrzava SWV (dok ST-Link V1 koji je na starijim plocama ne podrzava SWV).

Dakle, u ovoj fraj verziji - nista od swv-a

Inace sto se samog koda tice, koliko se ja secam (a nemam neko extenzivno iskustvno sa SWV) je da ti ne setujes DEMCR i TRCENA rucno vec kada je jezgro u debug modu ono samo setuje te flegove, iliti flegovi su read only, ti samo proveravas dal je debager zakacen ili ne
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: STM32F4 Inicijalizacija - startup code 04.03.2012. u 19:00 · pre 178 meseci #44
Ja sam razumeo da nije podržan samo printf.
Ako debuger postavlja ove bitove, onda si u pravu da ne može sa Atollic lite.
Ostaju dve opcije, da sa UART-a vučemo na još jedan USB port ili čekamo Coocox (treba da bude za desetak dana).
Inače je zgodnije pratiti izvršavanje softvera preko printf, nego u debug-u gledati sadržaj registara i promenljivih.
Re: STM32F4 Inicijalizacija - startup code 21.08.2013. u 00:44 · pre 161 mesec #47
Malo samo da podignem temu sa dna posto ce biti tu verovatno jos nekih pitanja sa moje strane :)

Za pocetak da li moze neko da preporuci neku pouzdanu ready-for-use biblioteku/source za klasican 2x16 LCD, sa 8 ili 4 data linije?

Sto se mene tice ja bih se vratio da se igram sa onim TI Piccolo, al' ne vredi treba da pomognem kolegi da osposobi neku konkretnu spravu sa STM32F4 Discovery modulom ... Oboje smo pocetnici na toj platformi ... Za sad sam poterao osnovno, inicijalizaciju i tajmere pa ajd da pitam za ovaj 2x16 LCD, mora da ima to negde gotovo da ne pisem sad bas ceo drajver ispocetka.
Potpis
Site about Software Defined Radio – SDR
http://yu3ma.net/
https://github.com/yu3ma
On-line LM317 kalkulator
Re: STM32F4 Inicijalizacija - startup code 21.08.2013. u 00:51 · pre 161 mesec #48
ja koristim istu biblioteku za lcd vec 10 godina i radi super, lagano se
preradi za svaki mcu koji sam do sada probao..
(http://sourceforge.net/p/arhimed-sid/code/36/tree/SID/SID_GEN4.X/ lcd.c
i lcd.h)
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: STM32F4 Inicijalizacija - startup code 26.08.2013. u 10:16 · pre 160 meseci #49
Ovaj code za display jos nisam pokrenuo, cekam ostale neke HW komponente da to sklopim i probam ...

Nego, kako moze da se koristi kod SMT32F4 flash memorija za smestanje i citanje korisnickih podataka?
Dakle slican princip kao sto je bio kod PIC sa korisnickim EEPROM, nesto gledajuci dokumentaciju mislim da je moguce ali ne znam kako konkretno to uraditi u SW. Treba mi recimo 64 x 8 bajtova ili 32 reci da cuvam.
Potpis
Site about Software Defined Radio – SDR
http://yu3ma.net/
https://github.com/yu3ma
On-line LM317 kalkulator
Re: STM32F4 Inicijalizacija - startup code 26.08.2013. u 10:23 · pre 160 meseci #50
jeste moguce ali ne tako jednostavno kao eeprom :D
moras prvo da odvojis taj deo flash-a linker skriptom (da ne bi tamo
slucajno kompajler smestio neki kod), dakle napravis neki data segment u
linker skriptu, tu oznacis pocetak i duzinu segmenta i to je to. onda po
tom delu pises i isti citas kao klasican flash (imas u datasheet-u kako,
nije bas preterano jednostavno, ja sam kopirao kod iz nekog bootloadera
to kako pise i cita flash)

btw mogli bi za F4 da pravimo seriju topic-a sa imenom "STM32F4 - stagod" na primer "STM32F4 - 16x2 lcd drajver", "STM32F4 - citanje i pisanje po flash-u" i slicno kako bi lakse nalazi stvari kada nam sutra zafale, ovako vec imamo u "inicijalizaciji" brdo stvari koje sa inicijalizacijom nemaju veze
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: STM32F4 Inicijalizacija - startup code 26.08.2013. u 10:28 · pre 160 meseci #51
Super, znaci moze ...

Jel imas neki primer za citanje i pisanje jedne lokacije?

Aha, vidim tvoj update ... Pa ok, ajd startovacu temu za ovaj Flash ...
http://www.elitesecurity.org/t...-STMF-citanje-pisanje-po-flash
Potpis
Site about Software Defined Radio – SDR
http://yu3ma.net/
https://github.com/yu3ma
On-line LM317 kalkulator
Re: STM32F4 Inicijalizacija - startup code 26.08.2013. u 10:51 · pre 160 meseci
izmenjeno 1 put, poslednji put mikikg 26.08.2013. u 11:07
  1. mikikg26.08.2013. u 11:07zapis iz teksta poruke
#52
A jos jedno pitanje, i pored silnih izlaza za Discovery plocici meni fale izlazi :), jel moze da se skinu onih nekoliko "kockica" (codec, mems, mic) i da se oslobodi jos pinova?
Treba mi po mogucstvu vezanih 32 izlaza (dva cela porta) + jos jedno 10-ak I/O za druge neke periferije. Sve ce da budu klasicni I/O nema seriskih port ili slicno, dakle staticni 32bitni izlaz i ostalo za LCD/KB.

Pitam samo da nema neka "kvaka" oko toga slucajno ili mozda moze nekako elegantnije da se odkace ove periferije bez skidanja IC-ova :)

Malo mi je gusto sa vremenom izvrsavanja nekih interupt rutina pa gledam da mi izlazni port bude ono sto se kaze "native", da upisem dva bajta direktno i sto je brze moguce. Nekakva djunta od masine je u pitanju, barata sa cca 30kW i mora da mi bude sinhronizovana sa mrezom pa mi je taj interapt bas knap (10us) jer treba da "gadjam" poluperiodu u hiljaditi deo ugla/vremena.
Potpis
Site about Software Defined Radio – SDR
http://yu3ma.net/
https://github.com/yu3ma
On-line LM317 kalkulator
Re: STM32F4 Inicijalizacija - startup code 29.08.2013. u 05:15 · pre 160 meseci
izmenjeno 1 put, poslednji put mikikg 29.08.2013. u 07:12
  1. mikikg29.08.2013. u 07:12zapis iz teksta poruke
#54
Jedno pitanje u vezi klokovanja sporih periferija, radim na drajveru za LCD 2x16, odprilike sam sve napravio ali tu imam jedan mali problemcic, mislim nije toliko to ni bitno ali da pitam generalno kako to moze inace da se resi.

Dakle stari problem, MCU je brebrz za periferiju koju sam vezao, tamo se barata sa milisekundama. Medutim moj program ima interapte. Ja sam ustelovao sa praznim petljama vremena potrebna za ovaj LCD ali naravno kada sam ukljucio interapte ta sva vremena su se razdesila tj postala su dosta duza sto je naravno za ocekivati jer se trosi vreme u interaptu a ovo oko LCD je u glavnoj petlji.

Kako da osmislim logiku da ipak nekako zadrzim konstantne pauze (ili potreban clock) za tu sporu periferiju?
Kao sto rekoh nije mi to strasno, radice sporije LCD ali me ipak interesuje kako to moze da se resi jer ce mi zatrebati sigurno za neku X periferiju kada budem vezivao.
Olaksavajuca okolnost mi je sto mi je interapt rutina fiksne vremenske duzine (uvek isti broj ciklusa/komandi se izvrsava) ali sta ako se to menja, ne mogu onda da prostim tamo nekim faktorom korekcije te pauze resim.

Da stavim nekako (kako) LCD rutine u neki drugi sporiji interapt?

Nadam se da razumete sta pitam jer ste se sigurno susretali sa tim problemima :)

@bodan.kecman Iskoristio sam onu tvoju LCD rutinu, prepakovao malo u ovaj STM32 fazon i evo je radi :)
Kada je malo budem uoblicio i skocako, postavicu ovde, zatrebace nekome. Napisao sam je tako da pinovi mogu da se vezu na bilo koje pinove / portove, mogu da budu razbacani po portovima ...

Potpis
Site about Software Defined Radio – SDR
http://yu3ma.net/
https://github.com/yu3ma
On-line LM317 kalkulator
Re: STM32F4 Inicijalizacija - startup code 29.08.2013. u 08:27 · pre 160 meseci #55
Možda da pogledaš Sys Tick primer. Tu su Delay funkcije odrađene preko SysTick prekida. On se definiše na recimo 1ms pa preko njega ide sve ostalo što zavisi od vremena.
Potpis
gorankg
Re: STM32F4 Inicijalizacija - startup code 29.08.2013. u 10:30 · pre 160 meseci #56
samo tako sto ces tajmig da resis preko interapta, svi drugi nacini ne
garantuju ... ja npr imam u glavnom systick nesto tipa

if (globalna_volatile_delay_varijabla) globalna_volatile_delay_varijabla--;

i onda gde mi treba delay imam nesto tipa

globalna_volatile_delay_varijabla = 100; while
(globalna_volatile_delay_varijabla);

tako ti je uvek delay isto dugacak
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Re: STM32F4 Inicijalizacija - startup code 31.08.2013. u 12:41 · pre 160 meseci
izmenjeno 1 put, poslednji put mikikg 31.08.2013. u 12:51
  1. mikikg31.08.2013. u 12:51zapis iz teksta poruke
#57
U vezi tajmera, ne zavrsava mi posao taj tajmer od 1ms, presporo mi to. U LCD rutinama imam potrebe za dosta manjim deley od toga, tako da nema veze, icicu sa prostim praznim petljama.

Nego napravio sam ove sve bitne funkcije za LCD:

void LCD_Init_pins (void);
void LCD_Display_init (void);
void LCD_send_nibble( unsigned char n );
void LCD_send_byte( unsigned char address, unsigned char n );
void LCD_send_string (volatile char *s);
void LCD_goto_home (void);
void LCD_clear_all (void);
void LCD_cursor_control (int cursor_on_off, int blinking_on_off);
void LCD_cursor_left(int no);
void LCD_cursor_right(int no);
void LCD_goto_home_line1 (void);
void LCD_goto_home_line2 (void);

To radi bas fino i brzo. Recimo 5 karaktera (npr neki brojac) moze skoro 1000 puta u sekundi da osvezi, sto mu dodje negde oko 100 puta u sekundi za ceo 2x16 niz. To je extra, moze VU metar da se napravi ;)

Evo u prilogu biblioteka. Bacite pogled i dajte sugestije ako vidite nesto sto moze da se unapredi ili koriguje ...

Koristi se dakle vrlo prosto, npr:

Code:
    LCD_Init_pins();
    LCD_Display_init();
    
    LCD_cursor_control (1, 0);

    LCD_send_string("Init complete!");

    LCD_goto_home_line2();

        int yy;
        char dizi[10];
        
        for (yy=10000; yy<=99999; yy++) {
            
            sprintf(dizi,"%d",yy);
            
            LCD_send_string(dizi);
            
            LCD_cursor_left(5);
        }
Potpis
Site about Software Defined Radio – SDR
http://yu3ma.net/
https://github.com/yu3ma
On-line LM317 kalkulator
Re: STM32F4 Inicijalizacija - startup code 31.08.2013. u 13:08 · pre 160 meseci #59
Ahaaa, nisam znao to.
Pa ok, i onako sam ove delay funkcije napravio "diskretno" pa mogu da se lako preprave (predpostavio sam da ce u nekom trenutku da se pojavi resenje ;).
Potpis
Site about Software Defined Radio – SDR
http://yu3ma.net/
https://github.com/yu3ma
On-line LM317 kalkulator
Re: STM32F4 Inicijalizacija - startup code 31.08.2013. u 13:50 · pre 160 meseci #60
nisam stigao da pogledam lib ali ako se ja secam jedini delay je za
strobe EN-a a to je tipa nekoliko nop-ova tako da ne znam uopste cemu
delay tu :D osim ako si implementirao bez busy flag-a ...

systick se konfigurise sa "na koliko taktova", moze da koristi system
klok a moze da koristi neki drugi zavisi od mcu-a do mcu-a (negde ne
mzoes da biras i uvek je sistemski) tako da ako stavis
configure_systick(1) imaces interapt na 100+MHz tj na koliko ti vec radi
mcu, neces doduse moci da radis nista drugo ali :D tako da namestis mcu
da systick radi koliko cesto ti treba, idealan je za task switching i
slcne fore kada koristis rtos na primer.. ako ne koristis rtos, nema
nista bolje za delay od njega :D
Potpis
arhimed
http://www.mysql.rs/ | http://elco.crsndoo.com/
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme