Skocz do zawartości

Generator makr dla AVR - worklog


Pomocna odpowiedź

(edytowany)

Update:

Ile czasu zajęło by wam wypisanie potrzebnych makr dla nieco większego mikrokontrolera?

#define  SW1      PA0
#define  SW2      PA1
#define  SW3      PA2
#define  LED1      PD0
#define  LED2      PD1
#define  LED3      PD2
#define  X1      PD6
#define  X2      PD7
#define  T1      PF0
#define  T2      PF1
#define  T3      PF2
#define  SW1_LOW  !(PINA & (1<<SW1))  
#define  SW2_LOW  !(PINA & (1<<SW2))  
#define  SW3_LOW  !(PINA & (1<<SW3))  
#define  PD5_LOW  !(PIND & (1<<PD5))  
#define  PE1_LOW  !(PINE & (1<<PE1))  
#define  PE2_LOW  !(PINE & (1<<PE2))  
#define  PE3_LOW  !(PINE & (1<<PE3))  
#define  PE4_LOW  !(PINE & (1<<PE4))  
#define  PE5_LOW  !(PINE & (1<<PE5))  
#define  PE6_LOW  !(PINE & (1<<PE6))  
#define  PE7_LOW  !(PINE & (1<<PE7))  
#define  T1_LOW  !(PINF & (1<<T1))  
#define  T2_LOW  !(PINF & (1<<T2))  
#define  PF3_LOW  !(PINF & (1<<PF3))  
#define  PF6_LOW  !(PINF & (1<<PF6))  
#define  PG0_LOW  !(PING & (1<<PG0))  
#define  PG1_LOW  !(PING & (1<<PG1))  
#define  PG2_LOW  !(PING & (1<<PG2))  
#define  PG6_LOW  !(PING & (1<<PG6))  
#define  PG7_LOW  !(PING & (1<<PG7))  
#define  PH0_LOW  !(PINH & (1<<PH0))  
#define  PH1_LOW  !(PINH & (1<<PH1))  
#define  PH2_LOW  !(PINH & (1<<PH2))  
#define  SET_LED1  PORTD|=   (1<<LED1)  
#define  RST_LED1  PORTD&=  ~(1<<LED1)  
#define  TOG_LED1  PORTD^=   (1<<LED1)  
#define  SET_LED2  PORTD|=   (1<<LED2)  
#define  RST_LED2  PORTD&=  ~(1<<LED2)  
#define  TOG_LED2  PORTD^=   (1<<LED2)  
#define  SET_LED3  PORTD|=   (1<<LED3)  
#define  RST_LED3  PORTD&=  ~(1<<LED3)  
#define  TOG_LED3  PORTD^=   (1<<LED3)  
#define  SET_X1  PORTD|=   (1<<X1)  
#define  RST_X1  PORTD&=  ~(1<<X1)  
#define  TOG_X1  PORTD^=   (1<<X1)  
#define  SET_X2  PORTD|=   (1<<X2)  
#define  RST_X2  PORTD&=  ~(1<<X2)  
#define  TOG_X2  PORTD^=   (1<<X2)  
#define  SET_PE0  PORTE|=   (1<<PE0)  
#define  RST_PE0  PORTE&=  ~(1<<PE0)  
#define  TOG_PE0  PORTE^=   (1<<PE0)  
#define  SET_T1  PORTF|=   (1<<T1)  
#define  RST_T1  PORTF&=  ~(1<<T1)  
#define  TOG_T1  PORTF^=   (1<<T1)  
#define  SET_T2  PORTF|=   (1<<T2)  
#define  RST_T2  PORTF&=  ~(1<<T2)  
#define  TOG_T2  PORTF^=   (1<<T2)  
#define  SET_T3  PORTF|=   (1<<T3)  
#define  RST_T3  PORTF&=  ~(1<<T3)  
#define  TOG_T3  PORTF^=   (1<<T3)  
#define  SET_PF4  PORTF|=   (1<<PF4)  
#define  RST_PF4  PORTF&=  ~(1<<PF4)  
#define  TOG_PF4  PORTF^=   (1<<PF4)  
#define  SET_PF7  PORTF|=   (1<<PF7)  
#define  RST_PF7  PORTF&=  ~(1<<PF7)  
#define  TOG_PF7  PORTF^=   (1<<PF7)  
#define  SET_PG3  PORTG|=   (1<<PG3)  
#define  RST_PG3  PORTG&=  ~(1<<PG3)  
#define  TOG_PG3  PORTG^=   (1<<PG3)  
#define  SET_PG4  PORTG|=   (1<<PG4)  
#define  RST_PG4  PORTG&=  ~(1<<PG4)  
#define  TOG_PG4  PORTG^=   (1<<PG4)  
#define  SET_PG5  PORTG|=   (1<<PG5)  
#define  RST_PG5  PORTG&=  ~(1<<PG5)  
#define  TOG_PG5  PORTG^=   (1<<PG5)  
#define  SET_PH6  PORTH|=   (1<<PH6)  
#define  RST_PH6  PORTH&=  ~(1<<PH6)  
#define  TOG_PH6  PORTH^=   (1<<PH6)  
#define  SET_PH7  PORTH|=   (1<<PH7)  
#define  RST_PH7  PORTH&=  ~(1<<PH7)  
#define  TOG_PH7  PORTH^=   (1<<PH7)  


DDRD|=(1<<LED1)|(1<<LED2)|(1<<LED3)|(1<<X1)|(1<<X2);
DDRE|=(1<<PE0);
DDRF|=(1<<T1)|(1<<T2)|(1<<T3)|(1<<PF4)|(1<<PF7);
DDRG|=(1<<PG3)|(1<<PG4)|(1<<PG5);
DDRH|=(1<<PH6)|(1<<PH7);
PORTA|=(1<<SW1)|(1<<SW2)|(1<<SW3);
PORTD|=(1<<PD5);
PORTE|=(1<<PE1)|(1<<PE2)|(1<<PE5)|(1<<PE6)|(1<<PE7);
PORTF|=(1<<T1)|(1<<PF6);
PORTG|=(1<<PG1)|(1<<PG2);
PORTH|=(1<<PH3)|(1<<PH4)|(1<<PH5);

Zanim wrzucę pierwszą wersję, muszę się uporać z małym bugiem: daje się ustawiać makra od znaku początkowego jako cyfra, czego robić nie wolno.

A! i zapisuję sobie że przydałoby się pole komentarza jaką funkcję pełni zaznaczony pin, oraz możliwość wyboru które funkcje portu mają być obsługiwane.

Edytowano przez _LM_
Link do komentarza
Share on other sites

On progress: Poprawiłem błąd z makrami teraz nie można jako pierwszego znaku użyć innego niż zakres a.....Z,

uw.thumb.JPG.c632701bb90714754656559dee3911cf.JPG

dodałem automatyczne ustawianie dużych liter w nazwach makr oraz możliwość dodania komentarza(póki pamiętam co i po co ustawiałem) 

Px.thumb.JPG.5523e8ea4b29c77ae5a85c3bc05fdd3e.JPG

/*********** Makra ***********/

#define  SW1      PA0	//przycisk
#define  LED1      PA1	//dioda

#define  SW1_LOW  !(PINA & (1<<SW1))  
#define  LED1_SET  PORTA|=   (1<<LED1)  
#define  LED1_RST  PORTA&=  ~(1<<LED1)  
#define  LED1_TOG  PORTA^=   (1<<LED1)  
/*********** Koniec makr autoamtycznych ***********/

Pracuję nad szatą graficzną programu 🙂

 

Link do komentarza
Share on other sites

(edytowany)

No to jest wersja pierwsza aplikacji, myślę że wcześniejsze opisy są wystarczające i każdy chętny szybko załapie jak to działa. Wiele muszę się jeszcze nauczyć więc być może nie wszystko działa idealnie, mimo to jestem zadowolony ze swoich postępów.

build.rar

Sorki, źle wkleiłem za pierwszym razem, teraz powinno być ok

 

 

 

Edytowano przez _LM_
  • Pomogłeś! 1
Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

(edytowany)
41 minut temu, pmochocki napisał:

Dlatego, że znasz Basic czy może B4X chcesz potem wykorzystać do innych celów? 

Czy znam, to za dużo powiedziane, uczę się go w wolnych chwilach. B4x dlatego że za jednym podejściem mogę mieć aplikację na PC iOS Android i to mnie ujęło, tak jak całe wsparcie i masę ciekawych bibliotek*. Ten program już teraz inaczej bym napisał bo wciąż poznaję całe to środowisko, jednak zostaje to odłożone w czasie ze względu na inne zajęcia jak i to że chcę dokończyć logger do Sanwy. Na dzień dzisiejszy zostało poprawienie kilku drobnych błędów, uruchomienie przejściówki na attiny13 (do tej pory do testów była Atmega32) no i najważniejsze: przeportowanie tego programu na androida. Będzie się to wiązało z dostosowaniem layoutu reszta praktycznie zostanie bez zmian i to właśnie uważam za siłę tego środowiska. W późniejszych planach jest przepisanie aplikacji które kiedyś męczyłem w MIT app inventor a że mam trochę sterowników które korzystają z bluetooth albo iOT więc będzie co robić.

 

*Ostatnim hitem jak dla mnie jest biblioteka speech to text która pozwoli na sterowanie głosowe offline. No pomysłów na wykorzystanie tego narzędzia mam mnóstwo 🙂

 

 

Edytowano przez _LM_
  • Lubię! 1
Link do komentarza
Share on other sites

1 godzinę temu, _LM_ napisał:

B4x dlatego że za jednym podejściem mogę mieć aplikację na PC iOS Android i to mnie ujęło, tak jak całe wsparcie i masę ciekawych bibliotek*

Tak wygląda bardzo ciekawe. Szkoda, że na wejściu jest Basic, ale pewnie prostota języka pozwala na łatwiejszą translacje na inne języki.

 

1 godzinę temu, _LM_ napisał:

Na dzień dzisiejszy zostało poprawienie kilku drobnych błędów, uruchomienie przejściówki na attiny13 (do tej pory do testów była Atmega32)

Chciałem napisać: porzuć starocie i użyj ATTiny202 lub ATTiny212. Są tańsze i mają core XMega, ale jak chciałem kupić to okazały się niedostępne. W tym tygodniu zamówiłem ATTiny414, może w wolnej chwili napisze coś o nim - jakiś artykuł. 

 

1 godzinę temu, _LM_ napisał:

W późniejszych planach jest przepisanie aplikacji które kiedyś męczyłem w MIT app inventor a że mam trochę sterowników które korzystają z bluetooth albo iOT więc będzie co robić.

Przy bardziej skomplikowanych aplikacjach B4x wydaje się o wiele łatwiejszy w utrzymaniu. Dobry plan!

Link do komentarza
Share on other sites

11 minut temu, pmochocki napisał:
2 godziny temu, _LM_ napisał:

B4x dlatego że za jednym podejściem mogę mieć aplikację na PC iOS Android i to mnie ujęło, tak jak całe wsparcie i masę ciekawych bibliotek*

Tak wygląda bardzo ciekawe. Szkoda, że na wejściu jest Basic, ale pewnie prostota języka pozwala na łatwiejszą translacje na inne języki.

Miałem w pewnym momencie wątpliwości czy wchodzić w to, od dawna programuję w C. No i czy nie lepiej było by doszkalać się w jednym języku? W końcu jednak stwierdziłem, że skoro i tak nie robię tego zawodowo a nieraz trzeba jakoś przedstawić dane z mikrokontrolera na telefonie lub PC, to czemu nie skorzystać z tych narzędzi, zwłaszcza że krzywa uczenia dość szybko i ostro pnie się w górę. Pierwsze spotkanie z b4x miałem około kwietnia tego roku, a pierwsza aplikacja której nie musiałbym się wstydzić była gotowa w okolicach połowy czerwca - jest nieźle.

 

23 minuty temu, pmochocki napisał:

Chciałem napisać: porzuć starocie i użyj ATTiny202 lub ATTiny212. Są tańsze i mają core XMega, ale jak chciałem kupić to okazały się niedostępne. W tym tygodniu zamówiłem ATTiny414, może w wolnej chwili napisze coś o nim - jakiś artykuł. 

No niestety jest kryzys na rynku półprzewodników, pytanie jest które z naszych ulubionych układów wróci kiedy to wszystko się skończy. Akurat t13 mam mały zapas dlatego go zastosowałem, w sumie poszło dobrze, t13 obsługuje komunikację do multimetru oraz soft uart na 115200. 626 bajtów zajęcia flasch i 10 ram a dałoby się coś jeszcze z tego uszczknąć. 

29 minut temu, pmochocki napisał:

Przy bardziej skomplikowanych aplikacjach B4x wydaje się o wiele łatwiejszy w utrzymaniu. Dobry plan!

Co kto lubi 😉 wiem że tych narzędzi jest mnóstwo, wszystkiego nie sposób ogarnąć

Link do komentarza
Share on other sites

To chyba normalne, że używa się tego co leży w szufladzie? Do swojego czytaka musiałem dokupić WROVERa, gniazdko jack i akumulator - reszta po prostu leżała i czekała na wykorzystanie... a jeśli mały attiny wystarcza to po co się pchać w inne...

Link do komentarza
Share on other sites

Ja myślę że jest to kwestia skali: ktoś kto projektuje urządzenia zawodowo i w dużych ilościach będzie szukał nowocześniejszych podzespołów i to dostępnych w setkach sztuk. A ten logger na który zszedł temat? Jak ktoś powieli tę konstrukcję to już będę happy zwłaszcza że do brymena już dawno temu były takie opracowania, do Sanwy nie znalazłem, ale dość szybko się okazało że oba mierniki mają ten sam protokół (co nie dziwi gdyż sanwa jest produkowana na tym samym chipsecie) jedyną moją innowacją będzie dodanie modułu BT i wysłanie danych do APki w telefonie. Resztę robię dla funu - bo lubię 🙂

Link do komentarza
Share on other sites

Ze względu na: 

2 minuty temu, ethanak napisał:

Potrzebuję względnie taniego multimetru

nie sposób prawidłowo odpowiedzieć na to pytanie 🤑 Nie wiem co dla ciebie znaczy "tani", natomiast na pewno trzeba szukać czegoś z czym można się jakkolwiek skomunikować. Tu już różnie bywa może nawet znalazłby się jakiś UNIT z portem r232?

Link do komentarza
Share on other sites

Tani: poniżej 500 PLN - może być?

Ten który podlinkowałeś byłby idealny, tylko muszę sobie poczytać dokumentację - nie chciałbym wywalać czterech stów na miernik, który pozwala mi dokładnie na to, co mój noname za 20 zeta 🙂

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.