PIC12F509 - w czym napisać program? początkujący

gargamel pisze:

Niby które? Bo AFAIR zwykłe PICe (8-bitowe) wykonują nawet najprostsze instrukcje w 4 takty zegara. Pomyliło Ci się z AVRami śmigającymi rzeczywiście instrukcje przy 1 MIPS/MHz (1 cykl = 1 takt zegara).

formatting link
"most instructions are single cycle execution (4 clock cycles)"

Reply to
Adam Dybkowski
Loading thread data ...

Adam Jurkiewicz pisze:

Jasne. Na pewno przy programowaniu w C całe to manglowanie bankami pamięci jest sprytnie ukryte i nie ma się co przejmować. W C na PICe nigdy nie pisałem (czy gcc jest już zportowane?).

Reply to
Adam Dybkowski

Fiat sprzedaje duzo wiecej samochodow niz Ferrari, czy to dowod ze Fiat jest duzo lepszy?

Tomek

Reply to
Tom

Użytkownik "Adam Dybkowski" napisał:

oj, no faktycznie, mój błąd, wykonują instrukcję w 4 takty zegarowe:O(

nie wiem nic o AVRach, więc jak one to robią że wykonują instrukcję w jednym rakice zegarowym? (zwłaszcza że podobno moają tą samą przestrzeń programu i danych)

Reply to
gargamel

Adam Dybkowski przemówił ludzkim głosem:

Oczywiście, że jest. Jak myślisz jaki kompilator microchip sprzedaje swoim klientom? :-)

Reply to
Zbych

Tom snipped-for-privacy@nospam.com napisał(a):

A to Ferrari i Fiat to nie jest jedna i ta sama firma?

Reply to
krytykk.WYTNIJ

Użytkownik "Adam Jurkiewicz" snipped-for-privacy@ajpic.tegoniema.zonk.pl> napisał w wiadomości news:gfschg$csb$ snipped-for-privacy@node1.news.atman.pl...

O na pewno się przydadzą.

Trzeba jeszcze te seminaria odwiedzać...

Dziękuję za pomoc i pozdrawiam.

Reply to
Irokez

Trochę Ci się pomyliło z przyrównaniem. Zauważ, że Atmel jest średnio tańszy od Microchipa...

Reply to
Adam Jurkiewicz

Zbych pisze:

Pisałem o gcc mając na myśli kompilator _darmowy_ (a nie sprzedawany). Na '51 jest sdcc, na AVRy jest avr-gcc, na ARMy jest arm-elf-gcc. Czy gcc jest też przeniesione na PICe?

Reply to
Adam Dybkowski

gargamel pisze:

AVRy mają potok 2-cyklowy - jednocześnie wykonują jedną instrukcję i pobierają kolejną. Dlatego co takt zegara AVR kończy wykonywanie kolejnej instrukcji (większości). Instrukcje zajmujące w pamięci Flash dwa słowa 16bit (a nie standardowo jedno słowo) wymagają jednak 2 taktów zegara do wykonania, podobnie jak skoki (konieczność opróżnienia pipeline'a) oraz pobrania bezpośrednie z pamięci (z podaniem pełnego

16-bitowego adresu przekazywanego w drugim słowie rozkazu).

Wszystkie AVRy mają rozdzielone przestrzenie programu i danych. Program leży we Flashu (i tylko stamtąd może być wykonywany). A na obszar danych (licząc od adresu 0 przestrzeni danych) składają się: rejestry procesora, rejestry specjalne I/O, pamięć wewnętrzna RAM oraz ew. pamięć RAM doczepiona na zewnątrz (do większych procesorów - które mają magistralę pamięci wypuszczoną na zewnątrz).

Reply to
Adam Dybkowski

Użytkownik "Adam Dybkowski" napisał:

dokładnie tak mają też PICe, potok 2-cyklowy, ale rozkazy zajmują w pamięci jedno słowo (wiec operacje na nim powinny być szybsze niz rozkazy 2słowowe)

w PICu są 4 takty na pobranie rozkazu (coś długo się ten rozkaz pobiera), i

4 takty na wykonanie czyli: 1-dekodowanie 2-pobranie argumentu z pamieci danych 3-wykonanie 4-zapianie wyniku do pamięci danych (ponieważ działą dwupotokowo to wychodzi średnio 4 takty na rozkaz) więc jakie sztuczki zastosował AVR że wykonuje cały rozkaz w jednym takcie? (mimo 2 słownego rozkazu)
Reply to
gargamel

Adam Dybkowski przemówił ludzkim głosem:

Sorry, ale jeszcze nie potrafię czytać w czyichś myślach. Co do darmowości, to możesz pobrać wersję źródłową ze strony microchipa i ją sobie skompilować - będziesz miał za darmo. Niestety w ten sposób będziesz miał goły kompilator bez libc i ostatniego etapu optymalizacji, który został celowo przez microchipa umieszczony poza gcc.

Reply to
Zbych

gargamel pisze:

Nie wiem i pewnie Atmel też się tym nie pochwali. Ale faktem jest, że 1000 NOPów (albo innych prostych operacji - dodawań, przesłań między rejestrami, operacji logicznych itd) trwa 1000 taktów zegara czyli 1 MIPS/MHz.

Reply to
Adam Dybkowski

Użytkownik "Adam Dybkowski" napisał:

jak to nie wiesz, nie znasz architektóry tych procków? bo taka sztuczka musi mieć żródło w specyficznych rozwiazaniach architektóry, czy może jest to jakaś tajemnica firmy a programisci znają jedynie instrukcje a nie znają budowy?:O)

ok, czyli jednak widzę że warto sie zainteresować architekturą tych AVRów:O)

Reply to
gargamel

gargamel pisze:

To nie tak. Przypuszczenie o dwutaktowym potoku w AVRach wyszło w Internecie dopiero po pewnym czasie od wypuszczenia pierwszego AVRa na rynek (to był model AT90S1200, wprowadzony do sprzedaży prawie równolegle z AT90S2313). Oficjalnie nie widziałem nigdy, aby Atmel tak o tym pisał. W dokumentacji po prostu dają informacje, które instrukcje zajmują 1 takt zegara, a które 2 takty. Podobnie robi to atmelowy symulator (AVR Studio), umożliwiający zliczanie taktów zegara w wykonywanym kodzie (trzeba najpierw ustawić częstotliwość taktowania symulowanego procesora i takty zegara są przeliczane potem dodatkowo na mikrosekundy).

Według mnie właściwie nie ma przeciwwskazań, aby niektóre bloki procesora pracowały asynchronicznie - tzn. po pierwszym zboczu zegara następuje pobranie rozkazu, potem przekazanie sterowania (po zakończeniu pobrania) asynchronicznie do jednostki dekodującej, następnie do wykonującej np. dodawanie 2 rejestrów itd. A na samym końcu procesor czeka bezczynnie do kolejnego aktywnego zbocza zegara. Atmel publikuje wykresy korelacji zegara procesora ze strobami dostępu do pamięci, momentami wystawienia adresu itd. tylko dla przypadków dostępu do zewnętrznej pamięci RAM oraz momentów zmian przy sterowaniu pinami I/O. Nie wiadomo dokładnie, co i w jakim momencie dzieje się gdy procesor ma do wykonania rozkaz "w środku", nie korzystający z zewn. magistrali ani nie zmieniający stanu pinów I/O.

To zależy od wymaganej wydajności. Dla minipotrzeb wystarczą AVRy, PICe czy MSP430. Co wybierzesz to tylko kwestia ceny (tu chyba wygrywa AVR), poboru prądu (wygrywa MSP430) czy czasu implementacji rozwiązania (PICe jeżeli już coś na nich robiłeś).

Do nieco większych potrzeb polecam architekturę ARM. Program wykonywany z wewnętrznego RAMu również potrafi szybko działać, przy zachowanym małym poborze mocy (w przeliczeniu mW/MHz). Jeżeli nie wystarcza już Ci

64KB pamięci danych (i/lub 256KB pamięci programu) - czas spojrzeć na ARMa. Do tego jeżeli Microchip kupi Atmela (i zamknie dział AVR) albo jeszcze ktoś inny kupi Microchipa (i zamknie dział PIC), ARMy wciąż będą produkowane przez co najmniej kilkadziesiąt różnych firm.
Reply to
Adam Dybkowski

Użytkownik "Adam Dybkowski" napisał:

eee... mam rozumieć że architektura AVRów jest tajna?:O( a programista zna jedsynie listę rozkazów?

bo jeśli tak, to nawet nie ma sobie co zawracać głowy tymi prockami.

Reply to
gargamel

A masz schemat do jakiegokolwiek procesora ktorego uzywasz ?

ze wszystkimi jest niestety podobnie - wiesz tyle ile producent napisal, a jak zaczniesz zadawac zaawansowane pytania to sie okaze ze nie napisal. W dodatku moga zajsc zmiany przy zmianie technologii.

Np - czy mozna zegar zatrzymac ? czy zapis do eepromu sie powiedzie jesli zegar zatrzymamy gdzies w trakcie.

J.

Reply to
J.F.

Użytkownik "J.F." napisał:

do PICa w każdej ksiażce, praz w dokuimentacji procjka jest schemat blokowy (rejestry, pamieci, liczniki i takie tam, magistrale i tym podobne, dodatkowo są schematy elektroniczne wyjść/wejsć i podobne pierdoły, wszystko co trzeba zeby coś zacząć projektować:O)

więc ponawiam pytanie, czy producent tego zachwalanego AVRa ukrywa przed klientami architekturę procka?

Reply to
gargamel

gargamel pisze:

czy mógłbyś w takim razie sam zerknąć do dokumentacji AVR-ów i nas oświecić? Bo jak widzę, to tutaj chyba tylko Ty na podstawie schematu blokowego jesteś w stanie dokładnie określić zależności czasowe wykonywania rozkazów procesora..

Reply to
Michał Baszyński

Użytkownik "gargamel" snipped-for-privacy@doli.na napisał w wiadomości news:ggcbto$faj$ snipped-for-privacy@news.wp.pl...

To na tym samym stopniu ogólności jest dokumentacja do AVR. Wystarczająca w zupełnosci do projektu i oprogramowania ale niewystarczająca do zklonowania mikrokontrolera.

Reply to
William

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.