logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Czy najnowszy ChatGPT umie korzystać z wyszukiwarki i czytać dokumentację? Czy napisze skrypt OBK?

p.kaczmarek2 17 Maj 2024 23:55 1659 9
  • Logo OpenAI z czarnymi liniami tworzącymi stylizowany wzór inspirowany ośmiokątem.
    Najnowszy GPT-4o ma dostęp do przeglądarki i może przeglądać sieć, nawet w wersji darmowej. W teorii może to oznaczać, że ten model powinien być w stanie chociażby znaleźć w Internecie informacje o moim projekcie firmware dla nieco mniej znanych modułów WiFi, ale czy na pewno? Czy GPT-4o napisze skrypt dla OBK? Sprawdźmy!

    Konto na OpenAI mam całkiem darmowe, ale i tak mam (ograniczony) dostęp do nowszego modelu. Standardowo na początek rozmowy zastosuję mały trik aby podejrzeć wewnętrzną instrukcję modelu, czyli poproszę go o powtórzenie promptu od OpenAI. Podkreślam, to jest początek mojego chatu z AI, nic wcześniej nie pisaliśmy:
    Zrzut ekranu z wewnętrzną instrukcją modelu ChatGPT dotyczącą użycia przeglądarki.
    Tekst z instrukcjami dotyczącymi korzystania z narzędzia przeglądarki w GPT-4o.
    Tak jest, ten model ma przeglądarkę internetową... i może z niej korzystać w podobny sposób jak korzystał z interfejsu kontroli świateł w domu w moim temacie: Asystent Domowy do kontroli świateł - prompt ChatGPT - OpenAI API w akcji
    Dodatkowo model ma podaną w prompt dzisiejszą datę oraz datę odcięcia jego wiedzy (dane do tej daty były w zbiorze uczącym).

    Zadajmy mu zatem jakieś pytanie wymagające przeglądarki. W celu urozmaicenia zabawy użyję do tego przykładu mojego projektu z Githuba, OpenBeken, czyli firmware dla różnych nieco mniej znanych modułów WiFi.
    Zrzut ekranu przedstawiający opis OpenBeken, open-source'owego firmware'u.
    Nie jest źle, ale czemu nie zalinkował do Elektrody? Do tego skąd te dziwne duże K w nazwie...
    Ale to tylko początek, spróbujmy go zapytać o przykładowy skrypt dla OBK. Mamy dużą bazę przykładów tutaj:
    https://github.com/openshwprojects/OpenBK7231T_App/blob/main/docs/autoexecExamples.md
    ale czy bot o tym wie?
    Zrzut ekranu przedstawiający przykłady konfiguracji autoexec.bat dla OpenBeken.
    Jest dobrze! Jest poprawnie. Komendy na LED są poprawne.
    Skąd on je wziął...
    Wyniki wyszukiwania dla
    Wziął je z mojego pliku autoexecExamples - czyli trafił do dokumentacji.
    Popatrzmy co dalej napisał:
    Interfejs konfiguracji OpenBeken z kodem do integracji TuyaMCU
    Bot wie nawet gdzie tworzy się autoexec.bat w OpenBeken - w Web Panel, w systemie LittleFS.
    Okej, to może co innego:
    Zrzut ekranu z przeglądarki, pokazujący wyniki wyszukiwania dla
    Przykładowy skrypt OpenBeken z opóźnieniem 1-sekundowym
    Nieźle, poprawnie sobie bot wyszukał moją komendę. Przykład ma sens. Sam bym taki przykład napisał.
    To może teraz pętla?
    Mam w przykładach użycie goto:
    https://github.com/openshwprojects/OpenBK7231T_App/blob/main/docs/autoexecExamples.md
    Przykład pętli w pliku autoexec.bat dla OpenBeken z użyciem komendy addRepeatingEvent do migania diodą LED.
    No i czar już lekko prysł...
    - to nie jest pętla, on zrobił powtarzalny event (ale powiedzmy, że ok)
    - do tego zrobił błąd w składni, ja nie zezwalam na ten moment na spację między ! a $CH4, chociaż może powinienem...

    Spróbujmy go popchnąć w stronę goto:
    Zrzut ekranu z przykładem skryptu dla OpenBeken. Przykład skryptu dla OpenBeken z warunkami if-then.
    Halucynacje, wszędzie halucynacje! Czemu on twierdzi, że OpenBeken nie ma goto? Nie mogę się z tym zgodzić. Dodatkowo składnia if jest niepoprawna, nie zezwalam na spacje w tym momencie... dodatkowo nie mam operatora ? rodem z C, którego bot próbuje mi wsadzić do komendy alias...
    Zwróćmy mu uwagę:
    Przykład skryptu z komendą 'goto' w OpenBeken
    Jest lepiej, ale... ale u mnie daje się dwukropek po labelu, a nie przed. Przecież są przykłady:
    https://github.com/openshwprojects/OpenBK7231T_App/blob/main/docs/autoexecExamples.md
    Coś słabo ten bot te przykłady czyta. Reszta natomiast jest ok...
    Ciąg dalszy jego wiadomości:
    Kod skryptu demonstracyjnego z komendą 'goto' w OpenBeken
    Tu pętle z odliczaniem zrobił prawie dobrze, tylko znów te dwukropki.
    A czy zrobi coś, czego nie ma w dokumentacji?
    Zrzut ekranu przedstawiający interakcję użytkownika z AI na temat skryptu OpenBeken.
    Odpowiedź:
    Fragment przykładowego skryptu dla OpenBeken wyświetlony w edytorze kodu
    No i znowu... nie jest źle, ale są błędy. Znów ten dwukropek. Dodatkowo też w if nie powinno być spacji w wyrażeniu logicznym. Jeszcze te jakieś set... nie ma wcale takiej komendy u mnie. Całkiem sobie to bot wymyślił. Zresztą po co? Może użyć bezpośrednio $CH10 w ifach...

    I to na razie tyle - osiągnąłem już limit zapytań do GPT-4o na tę chwilę:

    Komunikat o osiągnięciu limitu w GPT-4o z opcją subskrypcji Plus.

    Podsumowując... na początku jest efekt, imponuje to, ale jak się chwilkę dłużej korzysta to widać niedociągnięcia. Moim zdaniem wciąż widać (i pewnie będzie widać długo), że to jest jednak po prostu tylko LLM (Large Language Model - wielki model językowy), który statystycznie określa jaki będzie następny token, tu nie ma żadnego etapu bądź mechanizmu zrozumienia... pewnie w jakimś stopniu może zastąpić wyszukiwarkę, ale też jest jednocześnie zwodniczy i może bardziej namieszać.
    A jak Wy uważacie? Czy widzicie jakieś praktyczne zastosowanie dla tej odsłony ChatGPT w naszych projektach? Czy uważacie, że jego umiejętność czytania stron internetowych może sprawić, że pomoże on w tworzeniu projektów, czy jednak za zbyt dużo "zmyśla" i to go skreśla?

    Fajne? Ranking DIY
    Pomogłem? Kup mi kawę.
    O autorze
    p.kaczmarek2
    Moderator Smart Home
    Offline 
  • #2 21086551
    Konto nie istnieje
    Poziom 1  
  • #3 21086761
    p.kaczmarek2
    Moderator Smart Home
    Zgadzam się, choć nie zmienia to faktu, że im więcej przykładów uczących na dany temat tym LLM jest z tego tematu lepszy, przez co w wielu przypadkach LLM jest w stanie pomóc mi bardziej, skuteczniej i szybciej niż chociażby typowy koder-junior. AI jest w stanie mi szybciej podawać gotowe "klocki" z których można tworzyć system.
    Pomogłem? Kup mi kawę.
  • #4 21086955
    Konto nie istnieje
    Poziom 1  
  • #5 21088710
    krisRaba
    Poziom 31  
    Ja kiedyś po zasłyszanych ochach i achach próbowałem podprowadzić go do napisania biblioteki na S-rampy, ale w kółko wciskał mi pseudo-kod na rampy liniowe ;)
    W zapytaniach o rejestry konkretnego drivera też coś ściemniał...
    Natomiast jak zapytałem o problem, nad którym trochę siedziałem i już go rozwiązałem, to dał kilka propozycji, wśród których było też to, na co sam wpadłem, czyli z jego pomocą miałbym to szybciej.

    W sumie ciekawi mnie jak teraz pójdzie mu przy dostępie do wyszukiwarki. W wolnej chwili sprawdzę.
  • #6 21091172
    kapsel34
    Poziom 4  
    Żadna sztuczna inteligencja nie zastąpi przecież logicznego i WŁASNEGO myślenia,więc lepiej to zostawić by myśleć i nie być aż tak przyczepionym do tego AI
  • #7 21091572
    stellardrone90
    Poziom 20  
    chatGPT to system który jest cały czas udoskonalany i pewnie za jakiś czas wyprze zwykłe przeglądarki
  • #8 21096963
    krzbor
    Poziom 27  
    Testuję "inteligęcję" ChatGPT na piocence "Windą do nieba"
    ChatGPT 3.5:

    "Piosenka Windą do Nieba" to polska piosenka rockowa zespołu Dżem. Tekst utworu opowiada o marzeniach, tęsknotach i nadziejach człowieka oraz o dążeniu do czegoś wyższego, co można interpretować jako metaforę dążenia do doskonałości, szczęścia czy też pełni życia. Tytułowa winda symbolizuje tutaj możliwość podążania ku lepszym czasom czy też doskonaleniu samego siebie. Utwór jest jednym z najbardziej znanych i lubianych dzieł w dorobku zespołu Dżem, a jego tekst porusza wiele uniwersalnych tematów, które są bliskie każdemu człowiekowi.
    Kompletna bzdura

    A teraz chat4:

    Piosenka "Windą do nieba" to utwór zespołu 2+1, który został wydany w 1977 roku. Jest to jedna z najbardziej znanych piosenek tego polskiego zespołu popowego.

    Treść piosenki opowiada o młodej dziewczynie, która ma wyjść za mąż, ale nie jest pewna swojej decyzji. W dniu ślubu wspomina swoją pierwszą, prawdziwą miłość i zastanawia się, czy dokonała właściwego wyboru. Symbolicznie "winda do nieba" odnosi się do jej marzeń i tęsknot za czymś lepszym, za spełnieniem, które może nie nadejdzie w ramach zaaranżowanego małżeństwa.

    Piosenka porusza temat młodzieńczych marzeń, miłości i życiowych decyzji, które nie zawsze przynoszą oczekiwane szczęście. Jest to melancholijna opowieść o dylematach i emocjach towarzyszących ważnym życiowym momentom.

    To już znacznie lepiej

    Teraz kolejne moje pytanie "Czy do odpowiedzi użyłeś internetu"
    Nie, do odpowiedzi na Twoje pytanie nie użyłem internetu. Informacje zawarte w odpowiedzi opierają się na mojej wiedzy na temat piosenki "Windą do nieba" zespołu 2+1. Jeśli masz więcej pytań lub potrzebujesz dodatkowych informacji, chętnie pomogę!

    Moja prośba "Użyj internetu, bo odpowiedź nie jest do końca prawdziwa"
    Piosenka "Windą do nieba" zespołu 2+1 opowiada o młodej kobiecie, która przygotowuje się do ślubu, ale w rzeczywistości nie kocha swojego przyszłego męża. Tekst piosenki przedstawia jej rozterki i niespełnioną miłość do innego mężczyzny, co tworzy smutny kontrast z radosnym wydarzeniem, jakim jest ślub. Piosenka jest często grana na weselach, mimo że jej treść nie jest typowo weselna​ (Wikipedia, wolna encyklopedia)​​ (Teksciory)​.

    Kobieta wspomina o przygotowaniach do ceremonii, o fałszywej radości gości i o swoim żalu, że złoty krążek (obrączka) zostanie jej włożony na palec wbrew jej woli. Tekst piosenki ukazuje wewnętrzne zmagania bohaterki i jej tęsknotę za prawdziwą miłością, którą nie będzie mogła przeżywać z powodu zaaranżowanego małżeństwa​ (Onet Kultura)​.

    Więcej informacji znajdziesz na stronach poświęconych historii tej piosenki, takich jak Wikipedia czy artykuły w serwisach muzycznych​ (Wikipedia, wolna encyklopedia)​​ (Onet Kultura)​.

    Już bardzo ładnie. Jak widać jest postęp, a wyciąganie źródeł też idzie mu bardzo dobrze.
  • #9 21105442
    neverForce
    Poziom 11  
    Ja korzystam z Gemini Premium, jest na dwa miechy za darmo i odkąd wprowadzili możliwość dodawania plików to korzystam jak potrzebuję na szybko wyłuskać jakieś informacje z pliku. Np. ostatnio na szybko potrzebowałem znaleźć jak zmienia się długość działania zaczepu w domofonie cyfrowym, a potrzebowałem to dosłownie na już i dał bez problemu radę mi podać na tacy co po kolei mam wpisywać w domofonie. Jak chcecie porównać chatGPT vs Gemini to można zrobić porównanie. W sumie to używam go bardziej do celu „pomocy” gdy już mam zaćmienie i zaczyna brakować mi pomysłów. Google się chwali swoją 1M długością tokenu.
    Fajne jest w sumie to, że może ci zrobić szybką analizę co znajduje się w pliku / filmiku na youtube. Użyłem tego do prześledzenia, czy w godzinnym filmie jest to, co mnie interesuje. Plus wielki za to, że obsługuje język polski bez najmniejszego problemu i nawet obcojęzyczne materiały bez problemu wypluwa na polski, choć czasem trzeba go o to poprosić.
  • #10 21146748
    bobeer
    Poziom 28  
    Niedawno zrobiłem mały egzamin tej 'inteligencji', marnie wypadła ze znajomości avrów ;) (nie można zagnieździć bold w code, więc będzie rozlazłe)

    procesor avr ze stosem sprzetowym
    ChatGPT

    Procesory AVR, takie jak te z rodziny ATmega, są wyposażone w stos sprzętowy, który jest używany do zarządzania wywołaniami funkcji, przerwami oraz przechowywaniem adresów powrotu. Stos ten jest również używany do tymczasowego przechowywania danych. Oto kilka istotnych informacji na temat stosu w procesorach AVR:
    Stos sprzętowy w AVR

    Rejestr wskaźnika stosu (SP)
    Stos jest zarządzany przez rejestr wskaźnika stosu (SP - Stack Pointer), który przechowuje adres wierzchołka stosu. Jest to 16-bitowy rejestr, który wskazuje bieżącą pozycję w stosie.
    Wskaźnik stosu jest automatycznie aktualizowany przy każdej operacji związanej ze stosem (np. PUSH, POP, CALL, RET).

    Operacje na stosie
    PUSH: Umieszcza dane z rejestru roboczego na stosie.

    assembly

    PUSH Rr

    POP: Pobiera dane ze stosu do rejestru roboczego.

    assembly

    POP Rd

    CALL: Wywołuje podprogram, zapisując adres powrotu na stosie.

    assembly

    CALL addr

    RET: Powraca z podprogramu, pobierając adres powrotu ze stosu.

    assembly

    RET

    Przerwania

    Gdy wystąpi przerwanie, bieżący adres programu (PC - Program Counter) jest automatycznie zapisywany na stosie, aby umożliwić powrót do miejsca, w którym przerwanie zostało zgłoszone po jego obsłużeniu.
    Po zakończeniu obsługi przerwania, instrukcja RETI (Return from Interrupt) przywraca zapisany adres z powrotem do PC.

    assembly

    RETI

    Przykład użycia stosu

    Oto przykład prostego programu w asemblerze AVR, który pokazuje, jak używać stosu do wywoływania podprogramów i obsługi przerwań.
    Program główny

    assembly

    .org 0x0000 ; Adres początkowy programu
    rjmp main ; Skok do głównego programu

    .org 0x0020 ; Adres dla podprogramu
    subroutine:
    ; Podprogram dodający 1 do rejestru R16
    inc R16
    ret ; Powrót z podprogramu

    main:
    ldi R16, 0x00 ; Załadowanie wartości 0 do R16
    ldi R17, 0x05 ; Załadowanie wartości 5 do R17

    loop:
    call subroutine ; Wywołanie podprogramu
    dec R17 ; Dekrementacja R17
    brne loop ; Skok do 'loop', jeśli R17 nie jest zerem

    end:
    rjmp end ; Nieskończona pętla

    Przykład obsługi przerwań

    Załóżmy, że mamy przerwanie wywoływane przez timer. Obsługa przerwania mogłaby wyglądać tak:

    assembly

    .org 0x0000 ; Adres początkowy programu
    rjmp main ; Skok do głównego programu

    .org 0x0012 ; Adres wektora przerwań dla Timera1
    rjmp timer1_isr ; Skok do procedury obsługi przerwania Timera1

    main:
    sei ; Włączenie przerwań globalnych
    ; Inicjalizacja Timera1 i innych ustawień
    ; ...

    loop:
    nop ; Główna pętla programu (no operation)
    rjmp loop

    timer1_isr:
    ; Procedura obsługi przerwania Timera1
    ; ...
    reti ; Powrót z przerwania

    W powyższych przykładach:

    PUSH i POP nie są używane bezpośrednio, ponieważ instrukcje takie jak CALL, RET, INT i RETI automatycznie manipulują stosem.
    Stos jest kluczowym elementem zarządzania przepływem programu, szczególnie w kontekście wywoływania podprogramów i obsługi przerwań.

    Te przykłady ilustrują podstawowe użycie stosu w asemblerze AVR i pokazują, jak stos sprzętowy jest integralną częścią architektury AVR, ułatwiającą zarządzanie wywołaniami funkcji i obsługą przerwań.
    teraz opowiadasz o stosie softowym, a ja pytalem o stos sprzetowy. Zagladnij sobie do noty katalogowej AT90S1200 i zobacz jak tam dziala stos. Ten procesor nie ma rozkazow pop push a stos funkcjonuje
    ChatGPT

    Masz rację, mówiąc o stosie sprzętowym w kontekście starszych mikrokontrolerów AVR, takich jak AT90S1200. W tych procesorach stos działa w sposób specyficzny i różni się od nowszych modeli AVR, które posiadają dedykowane instrukcje PUSH i POP oraz rejestr wskaźnika stosu (SP).
    Stos sprzętowy w AT90S1200

    Procesor AT90S1200 wykorzystuje stos sprzętowy do zarządzania wywołaniami funkcji i przerwaniami, ale jego obsługa jest zrealizowana inaczej niż w nowszych modelach AVR.
    Charakterystyka stosu sprzętowego w AT90S1200

    Brak rejestru SP (Stack Pointer)
    W AT90S1200 nie ma dedykowanego rejestru wskaźnika stosu (SP). Zamiast tego stos jest realizowany sprzętowo, bezpośrednio w przestrzeni pamięci.

    Zarządzanie stosem
    Stos sprzętowy w AT90S1200 działa automatycznie przy wywołaniach podprogramów i obsłudze przerwań, ale nie można go bezpośrednio manipulować za pomocą instrukcji asemblera takich jak PUSH i POP.

    Instrukcje CALL i RET
    CALL: Instrukcja wywołania podprogramu zapisuje adres powrotu na stosie sprzętowym.

    assembly

    CALL addr

    RET: Instrukcja powrotu z podprogramu pobiera adres powrotu ze stosu sprzętowego.

    assembly

    RET

    Obsługa przerwań

    Gdy wystąpi przerwanie, aktualny adres programu (PC - Program Counter) jest automatycznie zapisywany na stosie sprzętowym.
    Po zakończeniu obsługi przerwania instrukcja RETI (Return from Interrupt) przywraca adres z powrotem do PC.

    assembly

    RETI

    Przykład programu dla AT90S1200

    Oto przykład programu, który pokazuje, jak używać stosu sprzętowego w mikrokontrolerze AT90S1200 do wywoływania podprogramów i obsługi przerwań.
    Program główny

    assembly

    .org 0x0000 ; Adres początkowy programu
    rjmp main ; Skok do głównego programu

    .org 0x0020 ; Adres dla podprogramu
    subroutine:
    ; Podprogram dodający 1 do rejestru R16
    inc R16
    ret ; Powrót z podprogramu

    main:
    ldi R16, 0x00 ; Załadowanie wartości 0 do R16
    ldi R17, 0x05 ; Załadowanie wartości 5 do R17

    loop:
    call subroutine ; Wywołanie podprogramu
    dec R17 ; Dekrementacja R17
    brne loop ; Skok do 'loop', jeśli R17 nie jest zerem

    end:
    rjmp end ; Nieskończona pętla

    Przykład obsługi przerwań

    Załóżmy, że mamy przerwanie wywoływane przez timer. Obsługa przerwania mogłaby wyglądać tak:

    assembly

    .org 0x0000 ; Adres początkowy programu
    rjmp main ; Skok do głównego programu

    .org 0x0012 ; Adres wektora przerwań dla Timera1
    rjmp timer1_isr ; Skok do procedury obsługi przerwania Timera1

    main:
    sei ; Włączenie przerwań globalnych
    ; Inicjalizacja Timera1 i innych ustawień
    ; ...

    loop:
    nop ; Główna pętla programu (no operation)
    rjmp loop

    timer1_isr:
    ; Procedura obsługi przerwania Timera1
    ; ...
    reti ; Powrót z przerwania

    W tych przykładach widzimy, że stos sprzętowy w AT90S1200 działa automatycznie podczas wywołań podprogramów (CALL) i obsługi przerwań (RETI), bez potrzeby ręcznego zarządzania wskaźnikiem stosu czy używania instrukcji PUSH i POP.

    Stos sprzętowy w AT90S1200 jest więc niewidoczny dla programisty na poziomie asemblera, a jego obsługa jest zrealizowana całkowicie sprzętowo przez procesor.
    ile zagniezdzen jest mozliwych w 90s1200 ?
    ChatGPT

    Mikrokontroler AT90S1200 ma ograniczoną pamięć RAM, co bezpośrednio wpływa na głębokość stosu sprzętowego i, w konsekwencji, na liczbę możliwych zagnieżdżeń wywołań podprogramów oraz obsług przerwań.
    Pamięć RAM w AT90S1200

    AT90S1200 posiada 64 bajty pamięci SRAM. Ponieważ stos sprzętowy używa tej samej przestrzeni pamięci co reszta programu, ilość dostępnej pamięci RAM ogranicza liczbę możliwych zagnieżdżeń.
    Wywołania podprogramów i obsługa przerwań

    Każde wywołanie podprogramu (CALL) i każda obsługa przerwania zapisuje na stosie dwa bajty (16-bitowy adres powrotu). Dlatego głębokość stosu jest ograniczona przez ilość dostępnej pamięci RAM.
    Obliczenie maksymalnej liczby zagnieżdżeń

    Liczba zagnieżdżeń wywołań podprogramów (CALL):
    Każde wywołanie CALL zajmuje 2 bajty na stosie.
    Maksymalna liczba możliwych wywołań podprogramów bez używania RAM do innych celów to:
    Maksymalna liczba wywołanˊ=Całkowita ilosˊcˊ RAMBajty na wywołanie=642=32
    Maksymalna liczba wywołanˊ=Bajty na wywołanieCałkowita ilosˊcˊ RAM​=264​=32

    Liczba zagnieżdzeń przerwań (INTERRUPT):
    Każde przerwanie również zapisuje 2 bajty na stosie.
    Podobnie jak wywołania podprogramów, maksymalna liczba możliwych przerwań bez używania RAM do innych celów to:
    Maksymalna liczba przerwanˊ=642=32
    Maksymalna liczba przerwanˊ=264​=32

    Kombinacja wywołań podprogramów i przerwań:
    Gdy program wykorzystuje zarówno wywołania podprogramów, jak i przerwania, maksymalna liczba zagnieżdżeń będzie mniejsza i zależy od kombinacji wywołań i przerwań.

    Praktyczne ograniczenia

    W praktyce, nie cała pamięć RAM będzie dostępna tylko dla stosu, ponieważ część pamięci będzie używana na dane programu i zmienne. Dlatego realna liczba możliwych zagnieżdżeń będzie mniejsza. Przykładowo, jeśli program zużywa 32 bajty na zmienne, to dla stosu pozostaje tylko 32 bajty, co ogranicza liczbę wywołań i przerwań do 16.
    Podsumowanie

    W procesorze AT90S1200, teoretyczna maksymalna liczba zagnieżdżeń wywołań podprogramów lub przerwań wynosi 32, zakładając, że cała pamięć RAM jest dostępna dla stosu. W praktyce, rzeczywista liczba zagnieżdżeń będzie mniejsza, zależnie od tego, ile pamięci RAM jest używane przez inne elementy programu.
    no i znowu brednie wypisujesz , sprawdz dokladnie ile mozna w tym procesorze zrobic skokow zagniezdzonych, bo napewno nie tyle na ile pozwala pamiec ram
    ChatGPT

    Przepraszam za poprzednie niedokładne informacje. Rzeczywiście, mikrokontroler AT90S1200 ma stos sprzętowy, który jest ograniczony w sposób sprzętowy, a nie tylko przez dostępną pamięć RAM.
    Stos sprzętowy w AT90S1200

    AT90S1200 ma 3-bitowy wskaźnik stosu sprzętowego, co oznacza, że może on pomieścić do 8 poziomów zagnieżdżenia. Wskaźnik stosu sprzętowego działa niezależnie od pamięci RAM i jest ograniczony do 8 poziomów wywołań.
    Wywołania podprogramów i przerwań

    Każdy skok (CALL) i każda obsługa przerwania (INTERRUPT) zapisują adres powrotu na stosie sprzętowym. Ponieważ wskaźnik stosu jest 3-bitowy, maksymalna liczba zagnieżdżeń wywołań lub przerwań jest ograniczona do 8.
    Podsumowanie

    W mikrokontrolerze AT90S1200 maksymalna liczba zagnieżdżeń wywołań podprogramów lub przerwań wynosi 8, niezależnie od dostępnej pamięci RAM. Wynika to z architektury stosu sprzętowego, który ma 3-bitowy wskaźnik, pozwalający na maksymalnie 8 poziomów głębokości.

    Dziękuję za poprawienie i przepraszam za wcześniejsze błędne informacje.
    nadal jestes w bledzie "During interrupts and subroutine calls, the return address Program Counter (PC) is
    stored on the stack. The stack is a 3-level-deep hardware stack dedicated for subrou-
    tines and interrupts."
    ChatGPT

    Przepraszam za wcześniejsze niejasności. Rozumiem teraz, że stos sprzętowy w mikrokontrolerze AT90S1200 jest dedykowanym, sprzętowym stosu trójpoziomowym, który obsługuje wywołania podprogramów i przerwania. Oznacza to, że procesor może obsłużyć do 3 poziomów zagnieżdżonych wywołań podprogramów lub przerwań.
    Stos sprzętowy w AT90S1200

    Trójpoziomowy sprzętowy stos:
    Stos sprzętowy w AT90S1200 jest ograniczony do 3 poziomów głębokości. Oznacza to, że można zagnieżdżać do 3 poziomów wywołań podprogramów lub przerwań.

    Obsługa stosu:
    Podczas wywołania podprogramu za pomocą instrukcji CALL lub obsługi przerwania, adres powrotu (Program Counter - PC) jest automatycznie zapisywany na stosie sprzętowym.
    Stos ten działa niezależnie od dostępnej pamięci RAM i jest ograniczony do 3 poziomów zagnieżdżenia.

    Przykład użycia

    Oto przykładowy kod, który pokazuje wykorzystanie stosu sprzętowego w AT90S1200:

    assembly

    .org 0x0000 ; Adres początkowy programu

    main:
    ldi R16, 0x00 ; Inicjalizacja rejestru R16

    call subroutine1 ; Wywołanie pierwszego podprogramu
    rjmp $ ; Nieskończona pętla

    subroutine1:
    push R16 ; Zapisanie R16 na stosie
    ldi R16, 0x01 ; Ustawienie R16 na nową wartość

    call subroutine2 ; Wywołanie drugiego podprogramu

    pop R16 ; Odtworzenie poprzedniej wartości R16
    ret ; Powrót z podprogramu

    subroutine2:
    push R16 ; Zapisanie R16 na stosie
    ldi R16, 0x02 ; Ustawienie R16 na inną wartość

    ; Wykonywanie operacji w podprogramie 2

    pop R16 ; Odtworzenie poprzedniej wartości R16
    ret ; Powrót z podprogramu

    W tym przykładzie, stos sprzętowy jest wykorzystywany do przechowywania adresów powrotu z podprogramów (subroutine1 i subroutine2). Każde wywołanie podprogramu zapisuje aktualny stan rejestru na stosie (push R16) i przywraca go po powrocie (pop R16).
    Podsumowanie

    Mikrokontroler AT90S1200 posiada trójpoziomowy sprzętowy stos, który umożliwia zagnieżdżanie do 3 poziomów wywołań podprogramów lub przerwań. Jest to ograniczenie sprzętowe, które nie jest związane z dostępną pamięcią RAM, ale z dedykowanym sprzętowym mechanizmem stosu w architekturze mikrokontrolera.
    przykladowy kod jest bledny 90s1200 nie ma rozkazow pop push
    ChatGPT

    Przepraszam za zamieszanie. Faktycznie, mikrokontroler AT90S1200 nie ma dedykowanych instrukcji PUSH i POP do obsługi stosu sprzętowego jak nowsze mikrokontrolery AVR. W takim razie, stosowanie sprzętowego stosu w AT90S1200 odbywa się w sposób zautomatyzowany przez sam procesor, a nie przez bezpośrednie manipulowanie za pomocą instrukcji asemblerowych.
    Stos sprzętowy w AT90S1200

    AT90S1200 ma ograniczony sprzętowy stos, który obsługuje wywołania podprogramów i przerwania, ale jego mechanizm jest bardziej prosty i nie ma dedykowanych instrukcji PUSH i POP do ręcznego zarządzania.

    Mechanizm stosu:
    Podczas wywołania podprogramu za pomocą instrukcji CALL lub obsługi przerwania, adres powrotu (Program Counter - PC) jest automatycznie zapisywany na stosie sprzętowym.
    Podobnie, po zakończeniu obsługi przerwania, procesor automatycznie przywraca adres powrotu z stosu.

    Ograniczenia stosu:
    AT90S1200 ma stos sprzętowy, który jest ograniczony do kilku poziomów zagnieżdżenia (typowo 3 poziomy), co oznacza, że można zagnieżdżać do tego poziomu wywołań podprogramów lub przerwań.

    Brak instrukcji PUSH i POP:
    W przeciwieństwie do nowszych mikrokontrolerów AVR, takich jak ATmega, które mają dedykowane instrukcje PUSH i POP do ręcznego zarządzania stosami, AT90S1200 nie posiada tych instrukcji.

    Przykład użycia

    Poniżej przedstawiony jest przykładowy kod, który ilustruje sposób wykorzystania stosu sprzętowego w AT90S1200 bez bezpośrednich instrukcji PUSH i POP:

    assembly

    .org 0x0000 ; Adres początkowy programu

    main:
    ldi R16, 0x00 ; Inicjalizacja rejestru R16

    call subroutine1 ; Wywołanie pierwszego podprogramu
    rjmp $ ; Nieskończona pętla

    subroutine1:
    ; Procedura pierwszego podprogramu
    ; ...

    call subroutine2 ; Wywołanie drugiego podprogramu

    ret ; Powrót z podprogramu

    subroutine2:
    ; Procedura drugiego podprogramu
    ; ...

    ret ; Powrót z podprogramu

    W tym przykładzie, procesor AT90S1200 automatycznie zarządza stosami podczas wywołań i powrotów z podprogramów za pomocą instrukcji CALL i RET. Nie ma potrzeby manualnego zarządzania stosami przez instrukcje PUSH i POP, jak w nowszych mikrokontrolerach AVR.
    Podsumowanie

    Stos sprzętowy w mikrokontrolerze AT90S1200 jest prostym, automatycznie zarządzanym mechanizmem, który obsługuje wywołania podprogramów i przerwania. Nie ma dedykowanych instrukcji PUSH i POP, a zarządzanie stosami odbywa się w sposób wbudowany przez procesor. Ograniczenie głębokości stosu jest określone przez sprzętowy mechanizm stosu, który jest zazwyczaj trójpoziomowy.
REKLAMA