FAQ | Points | Add... | Recent posts | Search | Register | Log in


ARM: pamięć i spi kilka pytań.


Post new topic  Reply to topic      Main Page -> Forum Index -> Microcontrollers Generally -> ARM: pamięć i spi kilka pytań.
Author
Message
murphy33
Poziom 2
Poziom 2


Joined: 09 Dec 2010
Posts: 3

Post#1 Post from the author of the topic 09 Dec 2010 16:17   

ARM: pamięć i spi kilka pytań.


Witam
Od jakiegoś czasu bawię się programowaniem ARM7 (programuje w C w WINARM) i zastanawiają mnie różne dziwne anomalie…
Moje pierwsze pytanie odnosi się do przydziału pamięci dla tablic deklarowanych jako static i normalnie – z tego co wiem static mówi nam tylko o tym czy dana tablica będzie widoczna w innych plikach – jednak nie tylko…Może przykład:

Code:

uint8_t tab[1000];

main()
{…
   tab[0]=0;
   tab[1]=1;
   uint16_t aaa=(*((int16_t*) &tab[0]));
...
}


I tak gdy tab jest zadeklarowane normalnie – czasem w aaa jest jaką dziwna liczna nawet większa niż zakres uint16, gdy natomiast zadeklaruje tab jako static wszystko jest ok, czasem w innych przypadkach jest odwrotnie – usunięcie słowa static pomaga…
Dlatego moje pytanie – jak się powinno deklarować tablice wewnątrz i na zewnątrz funkcji i skąd te anomalie?

Natomiast moje drugi pytanie odnosi się do interfejsu SPI – a raczej jego podatności na zakłócenia. Mam podłączona na kablach ok. 8cm kartę SD oraz interfejs Ethernet – co się okazuje oba układy są bardzo podatne na zakłócenia – wystarczy że w pobliżu włączę zwykłą lampkę(halogen 24V) a już układ się zawiesza. Zmieniłem nawet zasilanie układu na bateryjne – dalej to samo. Stąd pytanie czy taka już specyfika SPI (i wszystko powinno być montowane na tej samej płytce bez kabli) czy jednak z moim układem jest coś nie tak?

[color=red]Proszę poprawić temat oraz dodać znaczniki code.
Robak[/code]
Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 09 Dec 2010 16:17   





Back to top
   
Freddie Chopin
Poziom 25
Poziom 25


Joined: 12 Dec 2005
Posts: 7300
Location: Zawiercie

Post#2 09 Dec 2010 16:26   

Re: ARM: pamięć i spi – kilka pytań.


Tablica uint8_t może nie być wyrównana (jej pierwszy adres może być równy np 1 albo 3, a ARM7 nie obsługuje niewyrównanego dostępu. Jeśli odczytasz uint16_t z niewyrównanego (niepodzielnego przez 2) adresu rezultat jest nieprzewidywalny, włącznie z zawieszeniem układu. Sam dodatkowo wprowadzasz zamieszanie, bo adres rzutujesz na wskaźnik ze znakiem, a zmienna jest bez znaku. Dopisywanie lub kasowanie "static" jedynie przypadkowo powoduje przestawienie tablicy przez zmianę sekcji w której ona się znajduje tak że adresy raz są wyrównane a raz nie. Przy innej konfiguracji zmiennych statycznych już by np nic nie dało.

4\/3!!
Back to top
   
Google

Google Adsense


Post# 09 Dec 2010 16:26   





Back to top
   
murphy33
Poziom 2
Poziom 2


Joined: 09 Dec 2010
Posts: 3

Post#3 Post from the author of the topic 09 Dec 2010 16:42   

Re: ARM: pamięć i spi – kilka pytań.


Dzięki za odpowiesz Freddie, ale czy w takim razie konstrukcja typu: uint16_t aaa=(*((int16_t*) &tab[0])); jest całkiem niedozwolona w arm7?
Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 09 Dec 2010 16:42   





Back to top
   
Freddie Chopin
Poziom 25
Poziom 25


Joined: 12 Dec 2005
Posts: 7300
Location: Zawiercie

Post#4 09 Dec 2010 16:51helpful post - solution   

Re: ARM: pamięć i spi – kilka pytań.


Taka konstrukcja jest niedozwolona na każdym układzie i myślę, że kompilator poinformował Cię stosownym warningiem o tym fakcie. Na 8-bitowych układach działałoby dlatego, że tak czy siak byłyby potrzebne dwa osobne dostępy. Na niektórych układach - obsługujących niewyrównany dostęp do pamięci - również zadziała. Zasadniczo jednak to co pokazałeś jest błędne z samego założenia i wynik jest nieprzewidywalny.

4\/3!!
Back to top
   
murphy33
Poziom 2
Poziom 2


Joined: 09 Dec 2010
Posts: 3

Post#5 Post from the author of the topic 09 Dec 2010 17:02   

Re: ARM: pamięć i spi – kilka pytań.


OK trochę mi się wyjaśniło, dzięki Freddie. Czekam jeszcze na informacje jak to jest z tym SPI
Back to top
   
Google

Google Adsense


Post# Post from the author of the topic 09 Dec 2010 17:02   





Back to top
   
_Robak_
Poziom 22
Poziom 22


Joined: 16 Apr 2006
Posts: 2197
Location: Bytom

Post#6 09 Dec 2010 19:10   

Re: ARM: pamięć i spi – kilka pytań.


SPI jest interfejsem który stosuje się w obrębie jednej płytki, bez kabli itp. Także spróbuj zmniejszyć prędkość może pomoże, mi karta SD działała na kilkunastocentymetrowych kablach ale przy dość wolnej komunikacji. Ale rozwiązanie to nie jest zgodne ze sztuką:)
Back to top
   
Post new topic  Reply to topic      Main Page -> Forum Index -> Microcontrollers Generally -> ARM: pamięć i spi kilka pytań.
Page 1 of 1
Similar topics
ARM (Linux, SD, SPI, LAN) - bardzo początkujący (8)
Termopara K, przeliczanie V - T, + SPI z max6675 arm i AVR8 (12)
ARM philipsa prosba o pomoc przy SPI (9)
transmisja SPI AVR(5V)-ARM(3.3V) co z napięciami?? (2)
[ATmega32][SPI] Kilka urządzeń na SPI - problem (2)
[LCD TFT] [AVR/ARM] [C] kilka pytań (45)
[ARM] LPC1754 + LCD2x16 + DS18B20 - kilka pytań (4)
[ARM][LPC2138] częstotliwość taktowanie procesora oraz SPI (23)
[STM32][C] ARM Cortex - SPI dane dluzsze niz 16b (7)
ARM i pamięć (2)

Page generation time: 0.114 seconds


FAQ || Administrator || Moderators || Widgets and banners || Contact
elektroda.pl topic RSS feed