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ęAttiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Moderatorzy: Jacek Bogusz, procesorowiec, r-mik, Moderatorzy
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
r-mik robi wszystko na nie ,nie potrafi, nie chce dać konstruktywnych rozwiązań.
A jeśli daje to takie aby zrezygnować z rozwiązania..Drugie forum elektrody tu się robi.
A jeśli daje to takie aby zrezygnować z rozwiązania..Drugie forum elektrody tu się robi.
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Szanse na to, że ma on 1ppm są jak 1:10. Temat wielokrotnie poruszany na forach. Te "Arduinowe" elementy to odrzut produkcyjny. W przypadku np DS3231 z deklarowanych 2ppm robi sie 20ppm. Nie ma co oczekiwać cudów, DS3231 kosztuje ok 20z. Czego można oczekiwać za płytkę z DS3231+24C64+bateria za 6zł? Szkoda pieniędzy i nerwów na takie zakup tym bardziej, jak nie ma sie sposobu na zweryfikowanie parametrów zakupionego elementu.Ja znalazłam na Allegro kwarc zegarkowy( 32.768kHz)z 1ppm, za 4.29 zł
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Jak pisalem w czesniej procedura main: sklada sie z dwoch tak samo dzialajacych blokow ktore trwaja po dwa cykle plus opoznienie Oprocz tego na koncu jest skok do poczatku ktory tez trwa 2 cykle. Zalezy Ci na symetri dlatego nalezy dodac dwa cykle. W poprzedniej wersji dodalem rozkazy nop na poczatku i to byl blad Bo pierwszy blok wykonywal sie tylko 2 cykle + opoznienie, za to drugi 6 + opoznienie Teraz jest 4-4... Czym się różni od poprzedniego ? ...
Tu masz sekcje zwok TCXO frequency reference teardown kwarca. Jak widac w srodku masz "zwykly" kwarc Dlatego na poczatek kup sobie zwykly. A jak to bedzie nie wystarczajace mozesz zaszalec np ebay tcxo 4mhz
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Dobrym rozwiązaniem aby była symetria (i był taki kod w tym wątku) jest użycie funkcji negującej stan, w C:Jak pisalem w czesniej procedura main: sklada sie z dwoch tak samo dzialajacych blokow ktore trwaja po dwa cykle plus opoznienie Oprocz tego na koncu jest skok do poczatku ktory tez trwa 2 cykle. Zalezy Ci na symetri dlatego nalezy dodac dwa cykle(...)... Czym się różni od poprzedniego ? ...
Kod: Zaznacz cały
PORT ^= 1<<BIT;
Jeśli więc uC ma robić coś jeszcze poza miganiem diodami (była mowa o millis więc zakładam, że tak) to nie ma wyjścia, trzeba użyć timera i sprzętowego sterowania GPIO.
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Mikroprocesor ma robić tylko tą jedną czynność, zmiana polaryzacji co 64 sekund,bo jak będzie wykonywał jeszcze coś, to wpłynie to podobno na dokładność duty 50%.Napisałam o miilis bo przeczytałam ,że to lepsze ,dokładniejsze jak delay.
Mam taki program z millis w j.C na Atmegę 8 A ,ale ktoś mi napisał ,że trzeba go poprawić to może będzie dokładny,program pobrałam z rosyjskiej strony.
Mam w domu kilka kwarców zegarkowych 32.768Khz ,kwarc 4MHz,16MHz,2 MHz,i kilka innych.
Na Forbot napisali:
"Od razu widać przewagę względem funkcji delay() tutaj wypisanie czasu wywoływane jest idealnie co sekundę! "
https://forbot.pl/blog/kurs-arduino-ii- ... is-id18418
Mam taki program z millis w j.C na Atmegę 8 A ,ale ktoś mi napisał ,że trzeba go poprawić to może będzie dokładny,program pobrałam z rosyjskiej strony.
Mam w domu kilka kwarców zegarkowych 32.768Khz ,kwarc 4MHz,16MHz,2 MHz,i kilka innych.
Na Forbot napisali:
"Od razu widać przewagę względem funkcji delay() tutaj wypisanie czasu wywoływane jest idealnie co sekundę! "
https://forbot.pl/blog/kurs-arduino-ii- ... is-id18418
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
W normalnych programach, gdzie działają przerwania, millis jest dokładniejsze od delay, ponadto nie blokuje reszty programu (o ile poprawnie użyć millis). W tym nietypowym programie, jest dokładnie na odwrót."Od razu widać przewagę względem funkcji delay() tutaj wypisanie czasu wywoływane jest idealnie co sekundę! "
Generalnie, do generowania ściśle określonych przedziałów czasowych, używa się timerów. Wtedy pętla główna może wyglądać tak:
while(1);
czy w asm:
loop: JMP loop
Nie ważne co robi program, czy sa czy nie używane przerwania, czy pracuje czy nie DMA (w AVR to tylko Xmega), timera ZAWSZE będzie precyzyjnie generował zadane czasy o czym pisałem już kilka razy. Kolejna korzyść to łatwe generowanie wysokich częstotliwości, w przypadku AVR nawet 10MHz (w uC z PLLT1 może być taktowany 64MHz, nie pamiętam czy może generować 32MHz, czy te 64MHz dotyczą tylko PWM w trybie 8 i 10bit).
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
ACeK
Czy można tak zrobić kod na Atmega 8A
Między GND (masą nóżka nr.8 lub nr.22 jak dogodniej) a PB0 jest 64 sek 50/50
Między GND (masą nóżka nr.8 lub nr.22 jak dogodniej) a PB1 jest 64 sek 50/50
I tak z pozostałymi PB z PB7 włącznie
Czy można tak zrobić kod na Atmega 8A
Między GND (masą nóżka nr.8 lub nr.22 jak dogodniej) a PB0 jest 64 sek 50/50
Między GND (masą nóżka nr.8 lub nr.22 jak dogodniej) a PB1 jest 64 sek 50/50
I tak z pozostałymi PB z PB7 włącznie
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
while(1){I tak z pozostałymi PB z PB7 włącznie
PORTB = 0xFF;
delay
PORTB = 0;
delay
}
oczywiście trzeba dostawic nop.
albo:
while(1){
PORTB ^= 0xFF;
delay
}
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Ten program to jakby dwa w jednym na pierwszych 4 pinach portu masz to co bylo (64s) na pozostalych (32s)
- .nolist
.include "m328def.inc"
.list
.cseg
.equ fosc = 1 ;czestotliwosc kwarcu w MHz
.org 0
rjmp ResetProcessor
ResetProcessor:
ldi r16, high(RAMEND) ; init stack pointer
out SPH, r16
ldi r16, low (RAMEND) ; init stack pointer
out SPL, r16
ldi r16, 0xff
out ddrb, r16
main:
ldi r16, 0b1010_1010 ;1 cycle
out portb, r16 ;1 cycle
nop ;1 cycle
nop ;1 cycle
rcall del_s
rcall del_s
ldi r16, 0b0101_1010 ;1 cycle
out portb, r16 ;1 cycle
nop ;1 cycle
nop ;1 cycle
rcall del_s
rcall del_s
ldi r16, 0b1010_0101 ;1 cycle
out portb, r16 ;1 cycle
nop ;1 cycle
nop ;1 cycle
rcall del_s
rcall del_s
ldi r16, 0b0101_0101 ;1 cycle
out portb, r16 ;1 cycle
rcall del_s
rcall del_s
rjmp main ;2 cycles
del_s:
ldi R28, 160
del_ss:
nop
del_100ms:
ldi r30, low (-100000*fosc/4)
ldi r31, high(-100000*fosc/4) ;opoznienie 100ms
delay:
adiw r30, 1 ;dwubajtowe dodawanie
brcc delay ;skok gdy nie nastapilo przepelnienie pary R31R30
dec r28
brne del_ss
ret
.exit
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
To jest kod na Atmega328 ? ,może być,czy zadziała na Atmega 328P U, którą mam.
Jak tu zrobić aby miał na wyjściu 1 HZ ,chce na mierniku sprawdzić duty 50 %.
r-mik napisał," Trzeba dostawić nop".Co to jest nop.
Nie umie przerobić kodu w j.C, który zamieściłam ,aby miał to co napisałam powyżej tj.masa bazą a pozostałe PB1 do PB7 nie wiem jak to nazwa,filiami ?.
Jak tu zrobić aby miał na wyjściu 1 HZ ,chce na mierniku sprawdzić duty 50 %.
r-mik napisał," Trzeba dostawić nop".Co to jest nop.
Nie umie przerobić kodu w j.C, który zamieściłam ,aby miał to co napisałam powyżej tj.masa bazą a pozostałe PB1 do PB7 nie wiem jak to nazwa,filiami ?.
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Sprawdz sama Mysle ze juz wiesz gdzie sie zmienia kod Jesli chcesz 1Hz to wystarczy w poprzedniej wersji wyrzucic 3 z 4 rcall del_s a zamiast 160 wpisac 5To jest kod na Atmega328 ? ,może być,czy zadziała na Atmega 328P U, którą mam.
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Usunęłam 3 górne rcall del_s ,dałam 5 ,na Atmega 8A,na mierniku UT120C miałam takie wyniki:
0.981 Hz
49.9 %
0.981 Hz
49.9 %
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Brawo wyrzucic teraz dolne 3 z 4 rcall del_s
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Weź nie żartujna mierniku UT120C miałam takie wyniki:
0.981 Hz
49.9 %
To się nie nadaje do sensownych pomiarów częstotliwości czy współczynnika wypełnienia. To jakby centymetrem zastąpić suwmiarkę
Z amatorskiego sprzętu to np https://www.tomtop.com/pl/p-e2933eu-50. ... tkQAvD_BwE
Na "Aledrogo" można znaleźć "półfabrykaty" po ok 100zł, ale do tak precyzyjnych pomiarów jak wymagasz to i ten jeszcze za słaby https://www.conrad.pl/p/miernik-uniwers ... ks-1242394
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Wiem wiem,według Ciebie potrzeba sprzętu za 1 milion dolarów i to będzie za mało,wyniki będą niemiarodajne,takim moderatorem to każdy może być , tylko nie każdy chce być tak szkodzący,przeszkadzający,upierdliwy jak Ty.
Że tez właściciel Cię tu trzyma,robisz mu obciach,szkodzisz wizerunkowi czasopisma.
Że tez właściciel Cię tu trzyma,robisz mu obciach,szkodzisz wizerunkowi czasopisma.
Ostatnio zmieniony 2 sie 2018, o 22:18 przez Ania30, łącznie zmieniany 1 raz.
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Po usunięciu 3 dolnych rcall del_s ,wynik ten sam .
Czasami na krótko przeskakuje na 50 % tak jak w pierwszym.
0.981 Hz
49.9 %
Czasami na krótko przeskakuje na 50 % tak jak w pierwszym.
0.981 Hz
49.9 %
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Czy te kody działają na Attiny 2313A,co wpisać aby działały.
Dziękuję ACeK za kody,i przydatne linki.
Dziękuję ACeK za kody,i przydatne linki.
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Podłącz ten miernik do wiarygodnego generatora albo porównaj z dobrym licznikiem częstotliwości i stwierdzisz, że to co ma ten miernik to nie licznik częstotliwości tylko wskaźnik częstotliwości. Z pewnością nie nadaje się do precyzyjnych pomiarów.Wiem wiem,według Ciebie potrzeba sprzętu za 1 milion dolarów i to będzie za mało,wyniki będą niemiarodajne
Podłącz ten mulimetr do wyjścia przerzutnika D gdzie masz wypełnienie 50% i sprawdź co pokaże. Mało prawdopodobne, że będzie to 50%. Programy, które są tu prezentowane, sa na tyle precyzyjnie, że UT120C nie ma szansy pokazać odchyłki a jednak pokazuje. Coś tu jest nie tak.
Zrób to, co powinno robić się na początku pracy z miernikiem, przeczytaj jaką dokładność oferuje. UT120C przy pomiarze częstotliwości ma deklarowane 0,5%+3 cyfry. Jeśli więc wypełnienie ma 50%, możesz zobaczyć w praktyce 50,4% jak i 49,6%.
To oznacza, że w praktyce ostatnią cyfrę wskazania możesz zignorować a była walka, nie o pojedyncze procenty tylko jak pamiętam 0,00000015%. To tak, jakbyś przy pomocy centymetra krawieckiego próbowała sprawdzić dokładność mikrometru.
Próba wyprowadzenia z błędu to obciach?robisz mu obciach,szkodzisz wizerunkowi czasopisma.
Wskaż mi gdzie napisałem nieprawdę czy pomyliłem się w obliczeniach. Poprawię błędy.
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Tak dzialaja Ale dlatego ze Attiny 2313A ma mniejsza pamiec SRAM sa nie potrzebne dwie linieCzy te kody działają na Attiny 2313A,co wpisać aby działały...
- ldi r16, high(RAMEND) ; init stack pointer
out SPH, r16
- ; ldi r16, high(RAMEND) ; init stack pointer
; out SPH, r16
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Czy ja napisałam ,że miernik jest alfą i omegą w sprawie 50%,stwierdziłam fakt,i nie miałam pretensji ,że to zle wyniki,to Ty mi coś suponujesz.
Napisałeś ,że poprzez delay nie da się osiągnąć rozpiętości kHz do 12 godzin,u mnie taka rozpiętość została osiągnięta.
Widzę ,że z Ciebie gawędziarz i malkontent,niepotrzebnie zaśmiecasz i wydłużasz ten wątek.
Napisałeś ,że poprzez delay nie da się osiągnąć rozpiętości kHz do 12 godzin,u mnie taka rozpiętość została osiągnięta.
Widzę ,że z Ciebie gawędziarz i malkontent,niepotrzebnie zaśmiecasz i wydłużasz ten wątek.
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 12 gości