Aktyw Forum

Zarejestruj się na forum.ep.com.pl i zgłoś swój akces do Aktywu Forum. Jeśli jesteś już zarejestrowany wystarczy, że się zalogujesz.

Sprawdź punkty Zarejestruj się

Assembler na C

Ania30
-
-
Posty: 115
Rejestracja: 31 lip 2018, o 07:57

Re: Assembler na C

Postautor: Ania30 » 14 paź 2018, o 23:19

Jak przerobić,zmienić ten kod, aby miał 64/64 sek.
Jak by się udało to by był kod na liczniku w asm.
Kod na liczniku w j.C , na preskalerze 1024 ,juz mam, ma 15 linijek , przerobiłam 2 dni temu z innego kodu.

kod:

.nolist
.include "m8adef.inc"
. main:
; ldi r16, high(RAMEND) ; init stack pointer
; out SPH, r16
ldi r16, low (RAMEND) ; init stack pointer
out SPL, r16
out TCCR1B,r16 ; Set prescaler to 1024
loop:
in r17, TCNT0 ; If the counter is >= 64000,
cpi r17, 128 ; branch to dim
brsh dim ; otherwise continue to light
light:
sbi PORTB, 0
rjmp loop
dim:
cbi PORTB,0
rjmp loop
-----------------------------------

https://electronics.stackexchange.com/q ... e-not-work

https://www.google.pl/search?q=Atmega8+ ... 00&bih=471

https://www.google.pl/search?q=Atmega+a ... rt=90&sa=N

Ania30
-
-
Posty: 115
Rejestracja: 31 lip 2018, o 07:57

Re: Assembler na C

Postautor: Ania30 » 17 paź 2018, o 11:58

Największe rzeczy osiągają ludzie, którzy służą innym.

Więcej sentencji na:

https://www.sentencje.com.pl/

AVR Assembler Tutorial 3

https://www.instructables.com/id/Comman ... for-Ard-2/
------------------------------------------------------------------------------
Jak w kodzie asm będzie wyglądał taki zapis:
main ()
{
DDRB = (1<<PB1)|(1<<PB2);
PORTB = PORTB | (1 << PB1);
oraz
PORTB ^= (1<<PB1)|(1<<PB2);
[/quote]

Awatar użytkownika
r-mik
-
-
Posty: 343
Rejestracja: 14 cze 2005, o 19:18
Lokalizacja: Wawa
Kontaktowanie:

Re: Assembler na C

Postautor: r-mik » 17 paź 2018, o 12:50

Największe rzeczy osiągają ludzie, którzy służą innym.
Jak o. Tadeusz :-)
Jak w kodzie asm będzie wyglądał taki zapis:
main ()
{
DDRB = (1<<PB1)|(1<<PB2);
PORTB = PORTB | (1 << PB1);
oraz
PORTB ^= (1<<PB1)|(1<<PB2);
Skompiluj i obejrzyj plik *lss.

Ania30
-
-
Posty: 115
Rejestracja: 31 lip 2018, o 07:57

Re: Assembler na C

Postautor: Ania30 » 17 paź 2018, o 15:50

r-mik napisał:
"Skompiluj i obejrzyj plik *lss."

Jakim programem to zrobić ,spróbuję,jeśli nie dam rady,spytam jak to zrobić tym programem.

https://www.elektroda.pl/rtvforum/topic612705.html

https://www.elektroda.pl/rtvforum/topic612705-30.html

Ania30
-
-
Posty: 115
Rejestracja: 31 lip 2018, o 07:57

Re: Assembler na C

Postautor: Ania30 » 18 paź 2018, o 14:18

Już się nauczyłam jak mieć rozwinięcie asm,ale ciekawa jestem w jakim to programie jest ten plik *lss,czy jest w Eclipse ?.
Udało mi się pprzerobić kod C na ASM.
Działa jest zmiana polaryzacji co 64 sekund.
Teraz spróbuję przerobić kod C na liczniku i preskalerze 1024 na ASM.

W symlatorze w kodzie C pokazuje Cycle Couter 11 us i Stop Watch 11us.
W kodzie ASM pokazuje 0 (zero).
Czy to znaczy,że ten sam kod w C , jest bardziej idealny w ASM ,
jeśli chodzi o duty 50%?.

#include <avr/io.h>
#include <util/delay.h>

int main (void)
{

unsigned int licznik1 = 0;
DDRB = (1<<PB1)|(1<<PB2);
PORTB = PORTB | (1 << PB1);

while(1)

{

PORTB ^= (1<<PB1)|(1<<PB2);
_delay_us(64000000);

}
}

-------------------------------------------------------
Przerobiony kod ASM z kodu C powyżej.
Działa jest zmiana polaryzacji co 64 sekund.
Teraz sprubóję przerobic kod C na liczniku i preskalerze 1024 na ASM.

Kod ASM

.nolist
.include "m8adef.inc"
. main:
LDI R24,0x06
OUT 0x17,R24
SBI 0x18,1
LDI R25,0x06
IN R24,0x18
EOR R24,R25
OUT 0x18,R24
SER R18
LDI R19,0x4F
LDI R20,0xC3
SUBI R18,0x01
SBCI R19,0x00
SBCI R20,0x00
BRNE PC-0x03
RJMP PC+0x0001
NOP
RJMP PC-0x000C
CLI
RJMP PC-0x0000
Ostatnio zmieniony 18 paź 2018, o 23:35 przez Ania30, łącznie zmieniany 1 raz.

Ania30
-
-
Posty: 115
Rejestracja: 31 lip 2018, o 07:57

Re: Assembler na C

Postautor: Ania30 » 18 paź 2018, o 16:45

Mam już kod w ASM na liczniku i preskalerze1024,zrobiony z kodu C.
Zajmuje 23 linijki i działa 64/64 sekund.
Brakuje mi jeszcze abym w ostatnim kodzie ACeKa mogła mieć 64/64 sek przy wew.1MHz.
Co trzeba napisać aby zmienić parametry w rejestrach ldi r20, 0xa1 ldi r21, 0x07.
Teraz przydało by mi się coś co zmieni kod ASM na kod C.

AT_tiny13A
-
-
Posty: 1
Rejestracja: 19 paź 2018, o 23:12

Re: Assembler na C

Postautor: AT_tiny13A » 20 paź 2018, o 01:34

Wybaczcie źe wam flircik psuję ale kiedy czytam takie offtopowe wstawki ass_emblerowe z o. Rydzykiem w tle to mi słabo... Zastanawiam się po cóż Ani takie flip-flopy interjęzykowe, nie lepiej skupić się na c i dopiero po ukończeniu apki skupić się na dalszej optymalizacji w asm w tych miejscach gdzie zachodzi taka potrzeba? Napisz na jakim uC ma ten program jeździć to może będę mògł zrobić coś dla innych a w tym przypadku dla Ciebie :) choć mam wrazenie że sobie poradzisz jak trochę poćwiczysz z tymi przerwaniami. Wstėpnie napiszę tylko - nie zniechęcaj się SKYNET CIĘ POTRZEBUJE! Poważnie rzecz ujmując wysoką dokładność zapewnia tylko stosowanie kwarcu więc zapomnij o wewnętrznym oscylatorze o ile można mówić o wysokiej precyzji w tego typu konstrukcjach. Nie rozumiem po co konwerować žródło asm na c w tym przypadku, po prostu zrób jak radzę - naucz się porządnie c, w obecnych czasach asembler to smutna konieczność w tych nielicznych przypadkach kiedy nie da się inaczej. Gwoli ścisłości kompilator automatycznie zamienia źródło w c na asm za pomocą algrytmów optymalizacji, które najczęściej zrobią to lepiej od Ciebie a już na pewno dużo szybciej. Pozwólmy ich twórcom byč uzytecznymi.
Uogólniając wywód: najpierw c, optymalizacja pod względem prędkości (kosztem użycia pamięci) i ewentualne wstawki asm tam gdzie trzeba. Plik ssl w tym celu się przydaje, jak również do policzenia ilości taktów wyknywania poszczególnych operacji - w ds od uC jest tabela instrukcji z podaną liczbą potrzebnych taktów. Chcąc osiągnąć precyzję względem częstotliwości: kwarc, timery i przerwania kiedy tylk można.

Apropo o. Rydzyka, uważam że zrobił więcej dobrego dla kraju niż po i .n razem wzięci z sld... trzymałem kciuki za teperaturę wody w jego geotermii bo chciał zrobić coś bez precedensu, dać nam wszystkim darmową energię czyli coś co dawno mogliśmy mieć ale niektórym się to nie opłacało bo żerowali na uzależnianiu innych od siebie. Nieważne nawet, że nie udało się tak jak zakładano - ważne że próbował i za to go szanuję. Zamiast kpić poczytaj sobie o Tesli on też chciał uniezależnić ludzi od monopolistów i dac światu wolną energię i za to go wkończyli i okradli.. smutne.

Ania30
-
-
Posty: 115
Rejestracja: 31 lip 2018, o 07:57

Re: Assembler na C

Postautor: Ania30 » 20 paź 2018, o 09:20

Potrzebuję na procesor Attiny 2313A i Atmega8A,Atmega328P.
Ostatni kod ACeKA jest mi potrzebny na Attiny 13A,a do niej kwarcu nie podłączy się.
Elektronika Praktyczna i inne polskie czasopisma i fora, z założenia,mają być dla czytelnika ,a nie odwrotnie, powinny propagować i uczyć elektroniki,a jak jest w praktyce ,to widać,odwrócono kota ogonem,jak to mają w zwyczaju źli ludzie.
Porady tzw. etatowych"fachowców",administratorów, z tych forów,są na niskim poziomie fachowym i moralnym,ratują te fora czytelnicy np.tacy jak ACeK , którzy dają porady o niebo lepsze od administratorów,mało tego, administratorzy blokują takich pomagających zamykając wątek.
Potrzebne mi informacje znalazłam na zagranicznych forach,gdzie fachowość i poziom moralny ,kultura odpowiedzi ,jest o wiele na wyższym poziomie.
Jeśli coś jest na polskich forach ,to są to przetłumaczenia z zagranicznych for i czasopism,które administratorzy podają jakie swoje .
Tutaj wszystko jest tajemnicą nawet to ,z jakiego programu jest plik lss,jak zrobić rozwinięcie asm.
Porady są błędne i nie fachowe,niepomocne, to nie jest flirt,ale użeranie się,jednym słowem kompromitacja, obciach i żenada w wykonaniu odpowiadającego,mordęga,a nie flirt dla pytającego.

Awatar użytkownika
r-mik
-
-
Posty: 343
Rejestracja: 14 cze 2005, o 19:18
Lokalizacja: Wawa
Kontaktowanie:

Re: Assembler na C

Postautor: r-mik » 20 paź 2018, o 10:25

poczytaj sobie o Tesli on też chciał uniezależnić ludzi od monopolistów i dac światu wolną energię i za to go wkończyli i okradli.. smutne.
O perpetuum mobile jest osobny wątek.
Potrzebuję na procesor Attiny 2313A i Atmega8A,Atmega328P.
Ostatni kod ACeKA jest mi potrzebny na Attiny 13A,a do niej kwarcu nie podłączy się.
NIEPRAWDA!
Przeczytaj notę katalogową układu zanim napiszesz głupotę.
Porady są błędne i nie fachowe,niepomocne,
Mamy właśnie tego przykład. Błędna informacja napisana przez użytkownika.
Potrzebne mi informacje znalazłam na zagranicznych forach,gdzie fachowość i poziom moralny ,kultura odpowiedzi ,jest o wiele na wyższym poziomie.
Oto kolejny przykład niszczenia forum przez użytkownika. Rozwiązał problem ale nie podzielił się rozwiązaniem z innymi. Jaki jest więc sens pomagać? Forum ma służyć więcej niż jednemu wybranemu.
Jeśli coś jest na polskich forach ,to są to przetłumaczenia z zagranicznych for i czasopism,które administratorzy podają jakie swoje .
Konkretne przykłady takich przypadków na forum EP proszę podać.
Tutaj wszystko jest tajemnicą nawet to ,z jakiego programu jest plik lss,jak zrobić rozwinięcie asm.
Wszystko jest napisane w dokumentacji. Bez dokumentacji wystarczy przejrzeć katalog, w którym znajdują się pliki wynikowe.
obciach i żenada w wykonaniu odpowiadającego
Obciach i żenada to wszystkie wątki związane z tym super precyzyjnym generatorem, który ma służyć do magicznych operacji na wodzie.

Problem rozwiązany, autorka nie chce się podzielić rozwiązaniem,czym przyczynia się do niszczenia forum, temat zamykam.

Wróć do „AVR/AVR32”

Kto jest online

Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 6 gości