Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki

KURS HOME ASSISTANT

Chcesz zautomatyzować swój dom bez skomplikowanego kodowania?
Zastanawiasz się nad wyborem sprzętu, oprogramowania i aplikacji?
Od czego zacząć przygodę z HA w 2025? Co będzie najlepsze na start?

Nasz kurs Home Assistant nauczy Cię krok po kroku, jak łatwo zautomatyzować swój dom i oszczędzić na rachunkach za prąd i ogrzewanie. Bez chmur, bez zbędnych abonamentów. Twoja przygoda z Home Assistant zaczyna się tutaj!

↓↓↓

    Szanujemy Twoją prywatność. Możesz wypisać się w dowolnym momencie.




    Teraz jest 12 kwi 2025, o 12:14


    Strefa czasowa: UTC + 1





    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 
    Autor Wiadomość
    PostNapisane: 16 lut 2016, o 01:53 
    Offline
    Nowy

    Dołączył(a): 19 sty 2016
    Posty: 8
    Pomógł: 0

    Cześć, lata temu pisałem sporo w Assemblerze (6502,80286+), przez następne lata(nie pytajcie ile) ..prawie zapomniałem jak to było.
    Dziś dłubię sobie trochę takich użytecznych w domu projekcików (i chyba nakupię attiny13a i attiny24 bo tanie są <2,5zł a ja mam 1000 pomysłów - tylko żona wściekła chodzi.
    Mam takie pytanko:
    Jak wymusić na C określony sposób przekazywania parametrów do asm, kiedyś trochę hakowałem małe programy w C na intelu to raczej zawsze szło przez stos z C (C raczej znałem tylko po łebkach wtedy).

    Tutaj widzę (zaglądałem do .dump w asm) że wszystko jest pchane przez rejestry, głównie r24 i r25, a ja bym chciał tak prościutko wołać w C np. RS232_wyslij(12); zamiast ładować r24 i wołać - tak, oczywiście, to w asm czytam r24, ale czy zawsze to będzie r24? - o to chodzi, można chyba przekazać adres zmiennej z C do ASM, no ale - ale co z tym stosem? - to mnie ciekawi.
    Ogólnie ten r24 mi nie przeszkadza, ale chciałbym by to (kompilacja) działało na więcej niż jednym kompie (i kompilatorze).
    Ale może od początku (tak sobie to kompiluję (linux, avrdude,avr-gcc,avr-libc)
    UWAGA! - wersje "mocno robocze", takie "tysiąc razy" poprawiane/testowane :
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język bash
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    no i mam sobie w asm takie wysyłanie przez RS232 (sciągniete z noty ATMELA i prrzerobione na AVR-GCC) "ladowarka-ctc2.S" (duże ".S" !):
    Składnia: [ Pobierz ] [ Ukryj ] [ Zaznacz wszystko ]
    język asm
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Przepraszam - wersja robocza ze śmieciami, działa na Attiny13A (przynajmnie jeszcze niedawno hehe) - transmisja 9600n bodów, 8N1.

    Tutaj mam kawałek funkcji w C:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    No a teraz dump (asm):\
    Składnia: [ Pobierz ] [ Ukryj ]
    język asm
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    (EDIT 18.02.2016) Taka jeszcze uwaga do powyższego (akurat nie złapałem zapisu ze zmiennych 16 bit, te widoczne są uint8_t).
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

    Daje to mniejszy kod wynikowy w ASM względem RS_putchar( zmienna16t ) - to ładuje r24 i r25; RS_putchar( zmienna16t>>8 ) - to ładuje r24 i r25 + przepisuje r25 do r24; RS_putchar( lo8(zmienna16t) ) daje tylko ładowanie r24 (lds r24, 0xadres-zmienna16t-pierwszy-bajt).
    Choc nie wiem czy dałoby się to zapisać ładniej (w C programuję mało i okazjonalnie = słabo pamiętam).
    (END)


    Mam jeszcze w C takie coś:
    Składnia: [ Pobierz ] [ Ukryj ]
    język c
    Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


    Jeżeli "zarejestrowałem" w C rejest r24 to podczas kompilacji dostaję ostrzeżenia o wykorzystywaniu R24 przez C - całkiem nieźle - ale dla wiedzącego o co kaman.
    A jak wymusić przekazanie przez stos?
    .. przez zdefiniowanie czegoś w C inline asm? (przyznam nawet nie próbowałem tego tykać).
    Czy może jest inny sposób? - zasada np. taka, zrzuca mi na stos, ja zrzucam na stos jeszcze robocze, przestawiam wskaźnik SP -(+) X bajtów parametrów, odczytuje do roboczych parametry ze stosu, robię, pobieram ze stosu wart. roboczych i wracam z procedury.
    Tylko stos trochę mały :) 64 RAM uff.
    Przepraszam za chaotyczność wypowiedzi. Ciut późno skończyłem.



    Ostatnio edytowano 27 lut 2016, o 23:16 przez kenubi, łącznie edytowano 2 razy

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 lut 2016, o 12:30 
    Offline
    Użytkownik

    Dołączył(a): 13 lut 2015
    Posty: 99
    Pomógł: 6

    Sprzętowy uart i hardcodowane delay'e to niezbyt dobry pomysł.Jednak jest to sw

    A tu coś więcej o przekazywanych argumentach
    http://www.elektroda.pl/rtvforum/topic1091583.html

    _________________
    AVR-UART-lib
    AVR-FAST-ENCODER
    RFM7x-lib



    Ostatnio edytowano 16 lut 2016, o 17:10 przez jnk0le, łącznie edytowano 1 raz

    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    PostNapisane: 16 lut 2016, o 13:50 
    Offline
    Nowy

    Dołączył(a): 19 sty 2016
    Posty: 8
    Pomógł: 0

    dzięki za linka, byłem na tych stronach (http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_reg_usage) i zapomniałem że tam jest co poczytać. Ten RS służy mi raczej jako podglądacz, bo do t13 co ma 8 nóg raczej ciężko doczepić wyświetlacz itp., coś 30 bajtów a spore możliwości przesłania danych (mam taki USB pl2303 TTL za kilka zł -dobra i szybka sprawa).

    No to już chyba wszystko [w zakresie pytania] będę wiedział.

    [OT] A projekt to taka ładowarka Li-ion z własnym trafo i chińskim modułem TP4056 (takie z alle po 3 zł), dodałem do tego P-MOSFET (TCP8103 bodaj) i procka by to było takie włóż i zapomnij, podlutowałem się pod otwarte kolektory TP4056 Ledów. MOSFET pilnuje biegunowości (moduł się pali choć w nocie coś tam było że niby odporny), odłącza ładowanie po np. 3h definitywnie, itd. Po prostu trochę boję ogniw z laptopów, to ma dodatkowo czuwać nad przebiegiem ładowania. I tylko jeszcze zachciało mi się rozbudowywać o "diagnostykę" ładowania.



    Góra
     Zobacz profil  
    cytowanie selektywne  Cytuj  
    Wyświetl posty nie starsze niż:  Sortuj wg  
    Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 3 ] 

    Strefa czasowa: UTC + 1


    Kto przegląda forum

    Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość


    Nie możesz rozpoczynać nowych wątków
    Nie możesz odpowiadać w wątkach
    Nie możesz edytować swoich postów
    Nie możesz usuwać swoich postów
    Nie możesz dodawać załączników

    Szukaj:
    Skocz do:  
    cron
    Sitemap
    Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
    phpBB SEO