RTV forum PL | NewsGroups PL

Jak szybko napisać program na PIC12F509 do monitorowania wejść i generowania impulsów?

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

NOWY TEMAT

elektroda NewsGroups Forum Index - Elektronika Polska - Jak szybko napisać program na PIC12F509 do monitorowania wejść i generowania impulsów?

Goto page Previous  1, 2, 3, 4, 5  Next

Dus
Guest

Mon Nov 17, 2008 8:26 pm   



Quote:
Stronicowanie jest co 2K, a to jest kosmiczna ilość pamięci jak na program
w asmie więc przeskakiwanie tej granicy to rzadkość. Bankowanie RAMu jest
kijowe to wiadomo ale też da się jakoś żyć. Fajnie by było mieć całą
przestrzeń adresowa liniową... tymczasem adresowanie pośrednie obejmuje
dwa banki, a więcej pamięci danych jest rzadko potrzebne - jeśli natomiast
jest to się bierze inną rodzinę.
Dokładnie. Mi raz zdarzyło się wyjść na drugą stronę (w asm) - ale lepiej to

wcześniej przewidzieć, bo potem jest gnój.

Quote:
A propos ciekawostek to powstaje nowa rodzina procków PIC16F1XXX, która
będzie pozbawiona większości tych wad.

A dsPIC nie ma już jednolitej pamięci?
Czy to stronicowanie miało jakieś uzasadnienie?
-
Dus

Adam Jurkiewicz
Guest

Mon Nov 17, 2008 8:34 pm   



Dus wrote:

Quote:
A propos ciekawostek to powstaje nowa rodzina procków PIC16F1XXX, która
będzie pozbawiona większości tych wad.

A dsPIC nie ma już jednolitej pamięci?

Tak, ma w pełni liniową przestrzeń adresową zarówno FLASH jak i RAM, tylko
to już procesory 16 bitowe z 24 bitową instrukcją.

Quote:
Czy to stronicowanie miało jakieś uzasadnienie?

To wynika z szerokości słowa programu (12 lub 14 bitów - 10F, 12F, 16F),
nie da się tam pomieścić wszystkiego, szczególnie, że każda instrukcja
jest wykonywana w jednym cyklu (oprócz zmiany PC, skoki wywołania).

Pozdrawiam,
sword

--
e-mail: ajpic@ajpic.tegoniema.zonk.pl
www: http://ajpic.zonk.pl/
gg#: 1781804

Adam Jurkiewicz
Guest

Mon Nov 17, 2008 8:57 pm   



Irokez wrote:

Quote:
No da się, siedzę na pętelce i czekam na zmianę stanu rejestru.

Tak, ale czekasz jak jak jest blisko do przepełnienia, wcześniej
możesz poukładać procedury, które wykonają wszystko co trzeba.

Quote:
Przy czasach o jakich piszesz to w ogóle nie ma o czym rozmawiać i da się
to zrobić z palcem w nosie. Ustaw jakiś duży podział na prescalerze
i dodatkowo zliczaj czas na programowym liczniku.

4MHz przez 256 i licznik do 256 daje mi przy 2 sekundach 61 przeładowań
timera do zliczenia czyli dwie pętle DECFSZ.. dobrze liczę?

Częstotliwość zegara dzielisz najpierw przez 4 (tyle trwa cykl maszynowy),
a potem tak jak piszesz przez prescaler i timer. To wyjdzie ~15 przepełnień
na sekundę przy maksymalnych podziałach, poślizg wynikający z dzielenia
w tym wypadku nie będzie miał żadnego znaczenia.

W kodzie wartości możesz obliczyć automatycznie:

#define _XTAL 4000000 ;XTAL connected [Hz]
#define _PRE0 111b ;prescaler value
#define _TIMER0 256 ;TIMER0 capacity

OSC4 set (_XTAL / 4) ;MIPS
PRE_VAL set (1 << (_PRE0 + 1)) ;prescaler transformation
INT_VAL set ((OSC4 / PRE_VAL) / _TIMER0)

Potem w kodzie tylko trzeba jeszcze wpisać wartość tego prescalera do rejestru:

movlw 11000000b
iorlw _PRE0
option

czekanie na przepełnienie:

movf TMR0, W
jnz main

a tu tutaj masz makra, które pewnie Ci się przydadzą jak się przesiadasz z '51

http://ajpic.zonk.pl/asm/makra.inc

wystarczy je wciągnąć w kodzie i można się bawić ;)

#include <makra.inc>

Quote:
Czyli miałbym ponad 65ms w kodzie programu na sprawdzenie stanu
przeładowania timera.
Czyli można wklepać w to jeszcze jakiś kod, który pozwoli mi wyskoczyć z
pętli jeśli wcześniej zostanie spełniony warunek na wejściach
Może się udać?

Dokładnie, wykonać wszystko co trzeba i dopiero czekać na przepełnienie.

Quote:
Teraz zakupić PIC18F2550 na aledrogo i zrobić klona PICKIT2 czy też
PIC-Brenner8 i będzie na przyszłość.

Czasem można zaatakować zniżki, które otrzymuje się na seminariach MC
i kupić oryginalne narzędzie od 20% do 60% taniej (w zależności na
co trafisz).

Pozdrawiam,
sword

--
e-mail: ajpic@ajpic.tegoniema.zonk.pl
www: http://ajpic.zonk.pl/
gg#: 1781804

Adam Dybkowski
Guest

Tue Nov 18, 2008 12:31 am   



Adam Jurkiewicz pisze:

Quote:
Asembler może tak. Ale adresowanie od początku było źle przemyślane i
przy programowaniu w ASM większego PICa (16F8cośtam) wychodziła mi co
chwilę potrzeba przełączania się między 4 bankami danych oraz
wydziwionych skoków pomiędzy 4 bankami kodu. Kompletna tragedia. Na
szczęście teraz PICów w firmie nie muszę się dotykać.

Stronicowanie jest co 2K, a to jest kosmiczna ilość pamięci jak na program
w asmie więc przeskakiwanie tej granicy to rzadkość. Bankowanie RAMu jest
kijowe to wiadomo ale też da się jakoś żyć.

Program, którym musiałem zajmować się w firmie był napisany w 100% w ASM
i z czasem rozrósł się do kilkunastu KB pliku binarnego (czyli z 6-7K
rozkazów). PIC sux.

--
Adam Dybkowski
http://dybkowski.net/

Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.

Adam Dybkowski
Guest

Tue Nov 18, 2008 12:32 am   



EM pisze:

Quote:
Ja jak stanąłem przed potrzbą użycia bardzo małego procka to zainteresowąłem
się właśnie PIC10F200.
W związku z tym musiałem kupić programator (nie tani) oraz przejściówkę do
programowania SOT23.

AFAIK algorytm programowania PICów 10Fxx jest dokładnie opisany i
programator (super tanio) można sobie wydziergać samemu. O ile ktoś jest
na tyle zdesperowany - zamiast wydać 100-200 zł i zaoszczędzić kupę czasu.

--
Adam Dybkowski
http://dybkowski.net/

Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.

Adam Dybkowski
Guest

Tue Nov 18, 2008 12:37 am   



Adam Jurkiewicz pisze:

Quote:
Jak Atmel zrobi AVRy miniaturki 6-pinowe w obudowie SOT23 to będzie o
czym pogadać. Na razie tylko Microchip wypuścił takie cudeńka.

Chyba nie wypuści bo była jakaś akcja MC z opatentowaniem ilości pinów
mniejszej od szerokości magistrali. Ch0oć już nie pamiętam jak się to
skończyło.

Ale jakiej niby magistrali? AVRki 8-pinowe mają conajwyżej 6 nóg I/O. Że
niby nie mogą zejść poniżej 8 pinów? Niby co to ma do rzeczy...

No to zrobią wersję 4-bitową i zakasują PICa procesorem 4-nóżkowym. ;-)

--
Adam Dybkowski
http://dybkowski.net/

Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.

Adam Jurkiewicz
Guest

Tue Nov 18, 2008 9:59 am   



Adam Dybkowski wrote:

Quote:
Ale jakiej niby magistrali? AVRki 8-pinowe mają conajwyżej 6 nóg I/O. Że
niby nie mogą zejść poniżej 8 pinów? Niby co to ma do rzeczy...

W stanach wymyślają różne dziwne patenty więc nie ma się czemu dziwić.

Quote:
No to zrobią wersję 4-bitową i zakasują PICa procesorem 4-nóżkowym. Wink

Dlaczego nie, w drewnie zawsze można rzeźbić ;)

--
e-mail: ajpic@ajpic.tegoniema.zonk.pl
www: http://ajpic.zonk.pl/
gg#: 1781804

Adam Jurkiewicz
Guest

Tue Nov 18, 2008 10:09 am   



Adam Dybkowski wrote:

Quote:
Program, którym musiałem zajmować się w firmie był napisany w 100% w ASM
i z czasem rozrósł się do kilkunastu KB pliku binarnego (czyli z 6-7K
rozkazów).

Program, który od początku nie jest napisany pod takie stronicowe rozwiązanie
nigdy nie zostanie optymalnie napisany. Jeśli taka sytuacja wystąpi to trzeba
albo przepisać od nowa albo przejść na wyższy procesor (w sensie architektury).

Quote:
PIC sux.

Jak na razie MC jest na pierwszym miejscu w sprzedaży uC 8 bitowych więc
o czymś to również świadczy. Wyciąganie samych minusów architektury nie
ma za bardzo sensu.

--
e-mail: ajpic@ajpic.tegoniema.zonk.pl
www: http://ajpic.zonk.pl/
gg#: 1781804

gargamel
Guest

Tue Nov 18, 2008 11:18 am   



Użytkownik "mk" napisał:
Quote:
Nie ma przerwań Sad(((( ...poza resetem. (mowa o rodzinie "baseline")

jak to nie ma przerwań?!!!

są przerwania zewnętrzne, wewnętrzne i od pamięci EPROM, przynajmniej w
serii 16Fxx (a 12Fxx prawdopodobnie architektórą się nie rózni, tylko
długościa słowa rozkazowego?:O)
tylko nie ma priorytetów, wszystkie przerwania mają tą samą wagę:O)


Quote:
Ja mam zupełnie inne odczucia. Asembler może i prosty, ale lista
instrukcji wcale nie taka ortogonalna jak ją reklamują. Do tego różniaste
bankowania, pewne fragmenty kodu muszą się znaleźć w określonych miejscach
w pamięci (podprogramy) i wiele innych. IMHO taki mały potworek - łatwy do
opanowania bo prymitywny, ale jednak potworek.

nie widziałem architektury AVRów (moze jest lepsza, nie wiem) ale jak dla
mnei PICe to super procesorki wielkości paznokcia, mają wszystko co trzeba,
pamięci RAM, EPROM, liczniki przetworniki i takie tam, jedyną wadą w
programowaniu jest rozdzielenie pamięci programu od danych, ale dzięki temu
można w tym samym czsie korzystać z obu pamięci, co pewnie się przekłada na
szybkość działania, w końcu te maleństwa wykonują jedną insttrukcję w takcie
zegarowym, pewnie śmigają szybciej od peceta?:O)

czy może powinienem się zainteresować AVRami?

Adam Jurkiewicz
Guest

Tue Nov 18, 2008 9:18 pm   



gargamel wrote:
Quote:
Użytkownik "mk" napisał:
Nie ma przerwań Sad(((( ...poza resetem. (mowa o rodzinie "baseline")

jak to nie ma przerwań?!!!

są przerwania zewnętrzne, wewnętrzne i od pamięci EPROM, przynajmniej w
serii 16Fxx (a 12Fxx prawdopodobnie architektórą się nie rózni, tylko
długościa słowa rozkazowego?:O)
tylko nie ma priorytetów, wszystkie przerwania mają tą samą wagę:O)

....prawdopodobnie to najlepiej będzie jak doczytasz dokumentację
o rodzinie baseline :P

--
e-mail: ajpic@ajpic.tegoniema.zonk.pl
www: http://ajpic.zonk.pl/
gg#: 1781804

Adam Dybkowski
Guest

Wed Nov 19, 2008 11:24 pm   



gargamel pisze:

Quote:
nie widziałem architektury AVRów (moze jest lepsza, nie wiem) ale jak
dla mnei PICe to super procesorki wielkości paznokcia, mają wszystko co
trzeba, pamięci RAM, EPROM, liczniki przetworniki i takie tam, jedyną
wadą w programowaniu jest rozdzielenie pamięci programu od danych, ale
dzięki temu można w tym samym czsie korzystać z obu pamięci, co pewnie
się przekłada na szybkość działania, w końcu te maleństwa wykonują jedną
insttrukcję w takcie zegarowym

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).

http://en.wikipedia.org/wiki/PIC_microcontroller
"most instructions are single cycle execution (4 clock cycles)"

--
Adam Dybkowski
http://dybkowski.net/

Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.

Adam Dybkowski
Guest

Wed Nov 19, 2008 11:27 pm   



Adam Jurkiewicz pisze:

Quote:
Jak na razie MC jest na pierwszym miejscu w sprzedaży uC 8 bitowych więc
o czymś to również świadczy. Wyciąganie samych minusów architektury nie
ma za bardzo sensu.

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?).

--
Adam Dybkowski
http://dybkowski.net/

Uwaga: przed wysłaniem do mnie maila usuń cyfry z adresu.

Tom
Guest

Thu Nov 20, 2008 11:43 am   



Adam Jurkiewicz wrote:

Quote:
Jak na razie MC jest na pierwszym miejscu w sprzedaży uC 8 bitowych więc
o czymś to również świadczy. Wyciąganie samych minusów architektury nie
ma za bardzo sensu.

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


Tomek

gargamel
Guest

Thu Nov 20, 2008 12:35 pm   



Użytkownik "Adam Dybkowski" napisał:
Quote:
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).

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)

Zbych
Guest

Thu Nov 20, 2008 5:53 pm   



Adam Dybkowski przemówił ludzkim głosem:

Quote:
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?).

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

Goto page Previous  1, 2, 3, 4, 5  Next

elektroda NewsGroups Forum Index - Elektronika Polska - Jak szybko napisać program na PIC12F509 do monitorowania wejść i generowania impulsów?

NOWY TEMAT

Regulamin - Zasady uzytkowania Polityka prywatnosci Kontakt RTV map News map