| Author |
Message
|
kraver1981 Poziom 6

Joined: 24 Jul 2006 Posts: 16 Location: Koszalin
|
#1
16 Oct 2007 13:54 prosty program w C dla mikrokontrolera ST7FLIT19BF1Mb... |
|
|
|
Witam wszystkich zainteresowanych moim problemem. Muszę napisać prościutki program na ST7FLIT19BF1Mb. Dysponuję zestawem REVA STARTER KIT firmy RAISONANCE (z programatorem R-LINK), oraz środowiskiem RIDE. Chodzi o prościutki programik (ot, parę przekaźników, parę mikrostyków, jeden timer), który w CCs-ie na PIC'a napisałbym w jakieś pół godziny. Mikrokontrolery ST7, oraz wspomniany komplilator to dla mnie całkowita nowość. W helpie nie znalazłem nic w stylu "built-in C functions", ani nic na temat szkieletu programu, czy składni. Wygenerowany przez RBuilder'a fragment kodu też niewiele zawiera, a znane mi funkcje z CCS'a nie są rozumiane przez kompilator.
Czy ktoś z Was dysponuje może listą funkcji C wraz z opisem, dla wspomnianego kompilatora?
Wszelkie sugestie, linki są bardzo mile widziane. Zainteresowanym pomocą chętnie opisze mój problem dokładniej.
Załączam pozdrowienia...
|
|
| Back to top |
|
 |
Google

|
#
16 Oct 2007 13:54 |
|
|
|
|
|
| Back to top |
|
 |
Pituś Bajtuś Poziom 20

Joined: 11 Feb 2005 Posts: 841 Location: Żabieniec
|
#2
16 Oct 2007 15:57 Re: prosty program w C dla mikrokontrolera ST7FLIT19BF1Mb... |
|
|
|
| kraver1981 wrote: |
| Czy ktoś z Was dysponuje może listą funkcji C wraz z opisem, dla wspomnianego kompilatora? |
C to C, wszędzie taki sam. Różnice mogą występować w bibliotekach funkcji, ale znajomość paru podstawowych zagadnień języka C i architektury mikrokontrolera (tu niestety potrzebna jest dokumentacja mikrokontrolera). Dokumentacja kompilatora Ride jest bardzo obszerna i można tam znaleźć wszystko - wystarczy poszukać.
I jeszcze taka moja jedna uwaga : nie korzystaj z RBuildera tylko zacznij od pustego pliku. Inaczej się niczego nie nauczysz.
|
|
| Back to top |
|
 |
Google

|
#
16 Oct 2007 15:57 |
|
|
|
|
|
| Back to top |
|
 |
kraver1981 Poziom 6

Joined: 24 Jul 2006 Posts: 16 Location: Koszalin
|
#3
16 Oct 2007 17:25 Re: prosty program w C dla mikrokontrolera ST7FLIT19BF1Mb... |
|
|
|
Zgadzam się z Tobą w kwestii, że dla różnych MCU język jest taki sam. Ja jednak przywykłem do PICów i środowiska CCS (na którym uczę się programowania MCU), gdzie np. na "dzień dobry" nie deklaruje się czy dany port jest wejściem, czy wyjściem... a to już różnica. Wystarczy funkcja "output_high(pin_XX)", lub sprawdzenie "if(!input(pin_XX))", żeby kompilator "wiedział co jest co". To wprawdzie szczegóły, ale jak wiadomo, diabeł tkwi... :) A tych szczegółów jest pewnie więcej.
Jak wspomniałem, help do RIDE'a jest moim zdaniem ubogi, a wyszukanie dokumentacji z "built-in C functions" dla tego kompilatora idzie mi na razie dość mizernie. Jeśli pisałeś kiedyś jakieś programiki pod jakieś ST7, to byłbym wdzięczny za wklejenie do postu kawałka kodu z paroma komentarzami (najbardziej zależałoby mi na tych liniach od konfiguracji MCU, które są nad main'em).
Tymczasem tak jak mówisz, powęszę jeszcze gdzieś po necie i może znajdę. Apropos: znasz jakieś przyjemne linki, gdzie mógłbym rzucić okiem na jakieś listingi, lub funkcje z C dla RIDE'a ?
|
|
| Back to top |
|
 |
Google

|
#
16 Oct 2007 17:25 |
|
|
|
|
|
| Back to top |
|
 |
Pituś Bajtuś Poziom 20

Joined: 11 Feb 2005 Posts: 841 Location: Żabieniec
|
#4
16 Oct 2007 17:40 Re: prosty program w C dla mikrokontrolera ST7FLIT19BF1Mb... |
|
|
|
| kraver1981 wrote: |
| Wystarczy funkcja "output_high(pin_XX)", lub sprawdzenie "if(!input(pin_XX))", żeby kompilator "wiedział co jest co". To wprawdzie szczegóły, ale jak wiadomo, diabeł tkwi... :) A tych szczegółów jest pewnie więcej. |
Ale te funkcje nie są przewidzianie w standardzie języka C i należy ich unikać! Właśnie ze względu na kłopoty w przenoszeniu się na inny kompilator. Każdy rejestr procesora czy port I/O należy traktować jak komórkę pamięci i na tej komórce wykonywać operacje. Stosowanie funkcji których przykład podałeś stwarza same problemy. Tak samo było z sbi i cbi w avr-gcc. Każde zboczenie od standardu C jest niepożądane i prędzej czy później spowoduje poważne problemy.
| kraver1981 wrote: |
| Jak wspomniałem, help do RIDE'a jest moim zdaniem ubogi |
Bo sam "help" (czyli F1 albo Help->Index) dotyczy tylko edytora. Natomiast cała dokumentacja kompilatora bibliotek itp itd jest ukryta w menu Help->PDF->ST7 Tools
| kraver1981 wrote: |
| (najbardziej zależałoby mi na tych liniach od konfiguracji MCU, które są nad main'em). |
Chyba masz złe przyzwyczajenia z poprzedniego kompilatora...
| kraver1981 wrote: |
| Apropos: znasz jakieś przyjemne linki, gdzie mógłbym rzucić okiem na jakieś listingi, lub funkcje z C dla RIDE'a ? |
Podkatalog "Examples" w katalogu Ride?
Przykładowy program w C dla RIDE (działający) :
| Code: |
#include <st7lite1.h>
#define S1 (1 << 0)
#define S2 (1 << 2)
#define LED (1 << 7)
void main(void)
{
PADDR |= LED; // skonfigurowanie PA7 jako wyjście
PADR |= LED; // ustawienie na PA7 stanu wysokiego
while(1){ // pętla nieskończona
if((PADR & S1)==0) // jeśli wciśnięto S1
PADR &= ~LED; // włączenie diody LED
if((PADR & S2)==0) // jeśli wciśnięto S2
PADR |= LED; // wyłączenie diody LED
}
} |
|
|
| Back to top |
|
 |
kraver1981 Poziom 6

Joined: 24 Jul 2006 Posts: 16 Location: Koszalin
|
#5
17 Oct 2007 11:54 Re: prosty program w C dla mikrokontrolera ST7FLIT19BF1Mb... |
|
|
|
Dzięki za ten krótki programik. Za sprawą tego coś u mnie ruszyło "z kopyta". Moją naukę programowania MCU zacząłem od CCS'a dla PIC i może wydać Ci się to dość egzotyczne, ale konfiguracja I/O za sprawą operacji na rejestrach i sama konieczność tego zabiegu to dla mnie praktycznie nowość (choć faktycznie otarłem się o ten temat przed laty). Poważnie :) Wydaje mi się w tym przypadku , jesli mogę tak powiedzieć, że "zszedłem do niższego poziomu programowania" i czuję tu assembler:). No, ale nie będę usprawiedliwiać mojej niewiedzy:)
Czy możesz mi powiedzieć które rejestry, poza wspomnianymi, muszę skonfigurować na "dzień dobry" programu, aby moja aplikacja (własny PCB, nie kit) ruszyła bezproblemowo - chodzi o wewn. RC, I/O itp...
I jescze dobiazg: jak byś zaproponował obsługę timera, który powiedzmy co 20min. zmieni stan jednego z bitów portu? Przy okazji pomógłbyś mi jednocześnie przećwiczyć przerwanie czasowe:)
Będę wdzięczny, jeśli będę mógł spytać jeszcze o jakieś drobiazgi w trakcie programowania.
I jeszcze raz dzięki, służę rewanżem, niekoniecznie w technice uP:)
|
|
| Back to top |
|
 |