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

Nov 16, 2008 69 Replies

Witam.



Pytanie może głupie, ale mam doświadczenie jakieś tam tylko z Asm dla '51 i troszkę Bascoma.



Potrzebuję wykonać układ robiący bardzo skomplikowaną czynność ;) Ma sprawdzać stany dwóch wejść. Jeżeli na pierwszym wejściu pojawi się stan wysoki, ma wygenerować impuls na wyjściu trwający 500ms. Po tym impulsie sprawdza stan na drugim wejściu czy też jest wysoki, jak nie to czeka jeszcze 2sek i jak nie pojawi się to znowu generuje impuls 500ms. I tak w kóło i tak też w drugą stronę, jak na pierwszym wejściu będzie Low podaje impuls i czeka na stan Low na drugim.



Zamiast posiadanego dużego AT89C2051 znalazłem maleństwo PIC12F509 i... jak szybko i sprawnie napisać taki program? Czasy nie muszę mieć takie dokładnie, za to musi to pracować pewnie i nie zawieszać się.



Pozdrawiam.


Użytkownik "Irokez" snipped-for-privacy@op.pl napisał w wiadomości news:gfpck6$git$ snipped-for-privacy@atlantis.news.neostrada.pl...

Napisać najlepiej w darmowym środowisku microchipa. - MPLAB.

Maleństwo? Zainteresuj się serią 10F2xx - np. 10F202

- Dus

Użytkownik "Dus" snipped-for-privacy@plusnet.pl napisał w wiadomości news:gfpcuk$2hfn$ snipped-for-privacy@opal.icpnet.pl...

No to ciągnę, potem zobaczę czy się uda :)

Ale 12F509 mam 3 sztuki w szufladzie, a 10F musiałbym gdzieś po necie kupować.

Dzięki i pozdrawiam.

Użytkownik "Irokez" snipped-for-privacy@op.pl napisał w wiadomości news:gfpdd9$id9$ snipped-for-privacy@atlantis.news.neostrada.pl...

Napisać i skompilować możesz w MPLAB. Jeśli nie masz narzędzi, które współpracują z MPLAB - możesz czymś innym spróbować wrzucić plik .hex, który MPLAB Ci wygeneruje. Czym to wrzucić - nie wiem, bo korzystam z ICD2.

Aaa, jeśli w szufladzie to inna sprawa.

- Dus

Użytkownik "Dus" snipped-for-privacy@plusnet.pl napisał w wiadomości news:gfpdod$2j18$ snipped-for-privacy@opal.icpnet.pl...

aaa.. no właśnie zajrzałem że go nie ma w moim programatorze PS32, Willem też nie ma. no to piknie... Chyba że 12F509 pójdzie programowanie jako 12C509.

Użytkownik "Irokez" snipped-for-privacy@op.pl napisał w wiadomości news:gfpck6$git$ snipped-for-privacy@atlantis.news.neostrada.pl... Jeśli to nie jednorazowa sprawa, a działałeś na 8051, sprawdź, czy nie byłoby Ci łatwiej programować procesory Atmel. Nie chcę rozpętywać kolejnej świętej wojny, ale mi bardziej pasują. pozdrawiam, Andrzej

Warto spróbować. Z tego co pamiętam to 16F84 programuje się jako wersja C. Wersja F (Flash) umożliwia wielokrotne programowanie - sprawdź pozostałe różnice między tymi prockami. Porty i peryferia raczej się nie zmieniły. Ew. nowsza wersja obsługuje szybsze kwarce.

- Dus

Użytkownik "Andrzej" snipped-for-privacy@op.pl napisał w wiadomości news:gfpgid$s56$ snipped-for-privacy@news.onet.pl...

Jednorazówka i nie mam Atmela 8-pin a mam PIC. A jak widać potrzebuję 2 wejścia i 1 wyjście. Wojna mnie nie interesuje, bo jak widać każdy proc jest fajny do konkretnego zastosowania.

Mam 12F509 i chcę go zastosować do podanego celu i już, choćbym miał się w tydzień szybkiego kursu PIC-ASM naumieć.

PS. kurcze, jeden timerek jest ale jak tu zrobić czasówki? ;)

MikroBasic f-my Mikroelektronika -darmowy do 2k kodu.

formatting link

Użytkownik "Lukasz Spychalski" snipped-for-privacy@spamfe.polbox.com> napisał w wiadomości news:1508159.oTXKnU4YUb@wieszak...

Fajowe, ale nie ma PIC12F509 :( są tylko z serii 12F6xx

Widzę że Asembler pozostaje.

Faktycznie... sam poniżej f675 nie schodziłem i zdawało mi się, że jest wszystkomający.

Jest jeszcze pascalopodobny Jal i Jalv2 na licencji GPL. Sam pisałem tylko w starym Jalu na f84, ale wśród plików Jalv2 jest definicja f509.

Irokez pisze:

Asembler PICów jest bardzo przyjemny - to tylko 35 instrukcji, można się błyskawicznie nauczyć. Dla początkujących są też sympatyczne książeczki (np. te z BTC - może gdzieś w bibliotece pożyczysz).

Użytkownik "Lukasz Spychalski" snipped-for-privacy@spamfe.polbox.com> napisał w wiadomości news:5656584.lylK3q0WOS@wieszak...

Tak sobie oglądam datasheeta 12F509 i program jest 12 bitowy? To znaczy operuje się cały czas 12 bitowym słowem? Rejestry "normalnie" już 8 bitowe. Czyli wpisując coś do rejestru trzeba najstarsze 4 bity słowa ustawić na 0? Timer też 8 bitowy... Nie zauważyłem słowa "interrupt" - nie ma przerwań tylko trzeba czytać rejestry?

Szukam czegoś podstawowego po polsku, aby zakumać o co biega w tych procesorach :) Asembler fajowy, 33 komendy.

Pozdrawiam.

Irokez pisze:

Instrukcje kodu są 12-bitowe, natomiast operujesz na danych 8-bitowych. Rozmiaru instrukcji przy pisaniu nie widzisz.

Na początek pomogło mi to:

formatting link

Użytkownik "Obserwator" snipped-for-privacy@tego-nie-powinno-byc.o.pl.invalid> napisał w wiadomości news:gfq54o$q4f$ snipped-for-privacy@news2.ipartners.pl...

Spróbuję gdzieś to w bibliotece dorwać, mimo wszystko trochę jest na wyrost w stosunku do mojego 12F509, bo tam opisali serię Mid-Range a ja mam Base-Line w której nie ma przerwań. Ale jazda... jak odliczyć czas bez przerwań? odpytywać się ciągle ile już timer naliczył?

Dziękuję za pomoc i pozdrawiam.

Użytkownik "Obserwator" napisał:

można by sie zgodzić że jest prosty, ale jako jedną z zalet ma rozdzielenie pamięci programu i danych:O) a operowanie na nich jest juz troszkę namotane i wymaga ciagłej kontroli i ustawiania znaczników w rejestrach, przynajmniej ja odniosłem takie wrazenie po lekturze, nie programowałem PICa więc z praktyki nie wiem, ale takie odniosłem wrażenie

Irokez pisze:

Jedna instrukcja jest kodowana do jednego 12 bitowego słowa. Operujesz na danych 8 bitowych.

Nie. Nie ma nic ponad 8 bitów jeśli chodzi o rejestry danych. Do pamięci programu (która jest zbiorem słów 12 bitowych) nie masz możliwości się odwoływać.

Nie ma przerwań :((((( ...poza resetem. (mowa o rodzinie "baseline")

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.

pzdr mk

Andrzej pisze:

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.

A i tak przyszłość Atmela wisi na włosku, bo Microchip pewnie kupi jego dział procków. Myślicie, że będą dalej produkować AVRy - tyle że z logo Microchipa? :-(

formatting link

Obserwator pisze:

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

Adam Dybkowski pisze:

Uszy do góry, może nie będzie tak źle:

formatting link
pzdr mk

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required