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
Witam
Potrzebuję kodu na Attiny 2313A,Atmega 8A,Atmega 328, w j.assembler, który na pinie A i B zmienia stany z wysokiego na niski co 64 sekund,okres 128 sekund,wypełnienie 50 %(duty cucle 50%).
Dioda czerwona podłaczona katodą do pinu A ,anodą do pinu B.
Dioda zielona podłaczona katodą do pinu B,anodą do pinu A.
Dioda czerwona świeci 64 sekund,w tym czasie dioda zielona nie świeci 64 sekun i tak w nieskończonej petli na przemian.
Za pomoc z góry dziękuje.
Pozdrawiam
Ania
Potrzebuję kodu na Attiny 2313A,Atmega 8A,Atmega 328, w j.assembler, który na pinie A i B zmienia stany z wysokiego na niski co 64 sekund,okres 128 sekund,wypełnienie 50 %(duty cucle 50%).
Dioda czerwona podłaczona katodą do pinu A ,anodą do pinu B.
Dioda zielona podłaczona katodą do pinu B,anodą do pinu A.
Dioda czerwona świeci 64 sekund,w tym czasie dioda zielona nie świeci 64 sekun i tak w nieskończonej petli na przemian.
Za pomoc z góry dziękuje.
Pozdrawiam
Ania
Ostatnio zmieniony 31 lip 2018, o 09:39 przez Ania30, łącznie zmieniany 1 raz.
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Jaka częstotliwość oscylatora?
Czemu ASM? Teraz nikt rozsądny tego nie używa.
Pokaż co już jest napisane, napisz co nie działa, czego nie wiesz.
Czemu ASM? Teraz nikt rozsądny tego nie używa.
Pokaż co już jest napisane, napisz co nie działa, czego nie wiesz.
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Tutaj mam kod , na jednym stanie jest napięcie ,a na drugim niema,jak zrobić aby na obu było na przemian napięcie.Najlepiej na kwarcu zegarkowym.
CPU 1Mhz
kod:
.nolist
.include "m8def.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
out portb, r16
inc r17
main:
ldi r16, 0xf0
out portb, r16
rcall del_s
ldi r16, 0x0f
out portb, r16
rcall del_s
rjmp main
del_s:
ldi R28, 250
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
CPU 1Mhz
kod:
.nolist
.include "m8def.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
out portb, r16
inc r17
main:
ldi r16, 0xf0
out portb, r16
rcall del_s
ldi r16, 0x0f
out portb, r16
rcall del_s
rjmp main
del_s:
ldi R28, 250
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
Ostatnio zmieniony 31 lip 2018, o 10:21 przez Ania30, łącznie zmieniany 1 raz.
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Diody sA włączone pomiędzy porty A i B (tak przynajmniej wnioskują z niejasnej wypowiedzi "Dioda czerwona podłaczona katodą do pinu A ,anodą do pinu B. Dioda zielona podłaczona katodą do pinu B,anodą do pinu A."
W programie wykonywane są operacje tylko na porcie B.
Nie rozumie wypowiedzi "na jednym stanie jest napięcie"
Pokaż schemat, jak podłączone są te diody.
W programie wykonywane są operacje tylko na porcie B.
Nie rozumie wypowiedzi "na jednym stanie jest napięcie"
Pokaż schemat, jak podłączone są te diody.
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Jedna dioda nie świeci,na mierniku jak widać plus jest napięcie +4.08 volt,jak widać minus niema napięcia.
Diody mają być podłączone tak:
dioda LED czerwona (anoda do portu PB0, katoda do PB1)
dioda LED zielona (katoda podłączona do PB0, anoda do PB1)
Lub na innej dogodnej parze PIN.
Diody mają być podłączone tak:
dioda LED czerwona (anoda do portu PB0, katoda do PB1)
dioda LED zielona (katoda podłączona do PB0, anoda do PB1)
Lub na innej dogodnej parze PIN.
- Załączniki
-
- LED 2.png (5.45KiB)Przejrzano 9392 razy
Ostatnio zmieniony 1 sie 2018, o 09:51 przez Ania30, łącznie zmieniany 1 raz.
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Twoj kod masz napisany na m8 Ten procek nie ma portu A Tu masz kod jesli bys uzyl port B i C.
Jak cos nie jasne pytaj
Btw tagi ciagle zle dzialaja zwlaszcza code
- ldi r16, 0xff
out ddrb, r16
out ddrc, r16
out portb, r16
out portc, r16
main:
ldi r16, 0b1111_0000
out portb, r16
ldi r16, 0b0000_1111
out portc, r16
rcall del_s
ldi r16, 0b0000_1111
out portb, r16
ldi r16, 0b1111_0000
out portc, r16
rcall del_s
rjmp main
- ldi r16, 0xff
out ddrb, r16
out portb, r16
main:
ldi r16, 0b1111_1110
out portb, r16
rcall del_s
ldi r16, 0b1111_1101
out portb, r16
rcall del_s
rjmp main
Jak cos nie jasne pytaj
Btw tagi ciagle zle dzialaja zwlaszcza code
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Dziękuję ACeK.
Czy można tak zrobić aby masa tj.minus miała stan wysoki lub niski a pozostałe porty stan wysoki lub niski.
Np.anodę diodę Led podłączam do masy a katodę do pinu PB0 i mam zmianę polaryzacji co 64 sekund z okresem 128 sek.
Anodę diodę Led podłączam do masy a katodę do pinu PB1 i mam zmianę polaryzacji co 64 sekund z okresem 128 sek.
I tak samo z pozostałymi pinami tj,PB2,PB3,PB,PB5,PB6,PB7.
Zależy mi na bardzo dokładnym duty cycle 50% i okresie .
Czy dokładność duty 50% 64sekund jest powiązana z dokładnością okresu 128 sekund.
To znaczy czy może być duża dokładność duty50% bez mniejszej dokładności okresu.
Chciałabym to zrobić na kwarcu zegarkowym 5ppm,na Allegro widziałam zegarkowy 1ppm.
Czytałam ,że programem w assembler można to osiągnąć bardziej jak w języku C,C++
Dałam ten kod do kompilacji, na Attiny2313 w Atmel Studio 6, nie skompilował się. Na Atmega 8 i 328 też.
Czy można tak zrobić aby masa tj.minus miała stan wysoki lub niski a pozostałe porty stan wysoki lub niski.
Np.anodę diodę Led podłączam do masy a katodę do pinu PB0 i mam zmianę polaryzacji co 64 sekund z okresem 128 sek.
Anodę diodę Led podłączam do masy a katodę do pinu PB1 i mam zmianę polaryzacji co 64 sekund z okresem 128 sek.
I tak samo z pozostałymi pinami tj,PB2,PB3,PB,PB5,PB6,PB7.
Zależy mi na bardzo dokładnym duty cycle 50% i okresie .
Czy dokładność duty 50% 64sekund jest powiązana z dokładnością okresu 128 sekund.
To znaczy czy może być duża dokładność duty50% bez mniejszej dokładności okresu.
Chciałabym to zrobić na kwarcu zegarkowym 5ppm,na Allegro widziałam zegarkowy 1ppm.
Czytałam ,że programem w assembler można to osiągnąć bardziej jak w języku C,C++
Dałam ten kod do kompilacji, na Attiny2313 w Atmel Studio 6, nie skompilował się. Na Atmega 8 i 328 też.
Ostatnio zmieniony 31 lip 2018, o 18:11 przez Ania30, łącznie zmieniany 6 razy.
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Zacznę od końca.
"Czytałam ,że programem w assembler można to osiągnąć bardziej jak w języku C,C++"
Nieprawda. Czy C, Bascom, czy ASM dokładność będzie taka sama.
"Zależy mi na bardzo dokładnym duty cycle 50% i okresie .(...)
Chciałabym to zrobić na kwarcu zegarkowym 5ppm,"
Średnio dobry pomysł z kwarcem zegarkowym. Mega8 nie ma PLL. Nie wiem co ten mikrokontrolera ma jeszcze robić i czy taktowanie 32kHz wystarczy.
Do sterowania LED-am należy użyć PWM. Wtedy dokładność generowanego sygnału jest wysoka, niezależna od tego jakie funkcje realizuje program. Niska częstotliwość taktowania jest wtedy korzystna. Timery można jednak połączyć kaskadowo i taktowanie może być wyższe.
W każdym razie, pętla opóźniająca do generowania dokładnych czasów to zły pomysł.
Czemu ma służyć urządzenie generujące sygnał 64 sekundy o dokładności 5ppm?
"Czytałam ,że programem w assembler można to osiągnąć bardziej jak w języku C,C++"
Nieprawda. Czy C, Bascom, czy ASM dokładność będzie taka sama.
"Zależy mi na bardzo dokładnym duty cycle 50% i okresie .(...)
Chciałabym to zrobić na kwarcu zegarkowym 5ppm,"
Średnio dobry pomysł z kwarcem zegarkowym. Mega8 nie ma PLL. Nie wiem co ten mikrokontrolera ma jeszcze robić i czy taktowanie 32kHz wystarczy.
Do sterowania LED-am należy użyć PWM. Wtedy dokładność generowanego sygnału jest wysoka, niezależna od tego jakie funkcje realizuje program. Niska częstotliwość taktowania jest wtedy korzystna. Timery można jednak połączyć kaskadowo i taktowanie może być wyższe.
W każdym razie, pętla opóźniająca do generowania dokładnych czasów to zły pomysł.
Czemu ma służyć urządzenie generujące sygnał 64 sekundy o dokładności 5ppm?
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
To ma być elektrolizer,jeśli nie jest dokładne 50 % duty to po miesiącu i dłużej elektrolizy pojawiają się zanieczyszczenia.
Natężenie prądu i napięcie na wyjściu możliwie jak najmniejsze,jak dałam1.2 mA to pojawiły się zanieczyszczenia.Jak dałam 0.480 mA zanieczyszczenia nie było tak jak przy 1.2 mA
Natężenie prądu i napięcie na wyjściu możliwie jak najmniejsze,jak dałam1.2 mA to pojawiły się zanieczyszczenia.Jak dałam 0.480 mA zanieczyszczenia nie było tak jak przy 1.2 mA
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Elektrolizer. Kaszpirowski, Nowak (ręce, które leczą) wciąż żywy! Warto to zbudować aby przekonać się, że jest nic nie warte.
"jeśli nie jest dokładne 50 % duty to po miesiącu i dłużej elektrolizy pojawiają się zanieczyszczenia."
zapewnienie precyzyjnego 50% to nie problem, dzielnik przez 2 czy PWM ustawiony na 50%. Trochę gorzej z "pływaniem" częstotliwości ale w tym zastosowaniu to nie tylko kwarc 20 czy nawet 50ppm wystarczy a nawet zwykły generator RC. Pytanie, czy mechanikę da się wykonać tak dokładnie?
"jak dałam1.2 mA to pojawiły się zanieczyszczenia.Jak dałam 0.480 mA zanieczyszczenia nie było tak jak przy 1.2 mA"
Jak się da prąd 0 to wytrąci się najmniej zanieczyszczeń. Jednocześnie urządzenie nic nie zmienia. Jak dać duży prąd elektroliza jest najsilniejsza i wytrącają się osady pochodzące między innymi z elektrod, które ulegają korozji. To urządzenie to w praktyce generator zanieczyszczeń.
Elektrolizery, różne cewki nawijane na rury od wody czy dopływu paliwa do samochodu, tak jak Kaszpirowski czy Nowak, bioenergoterapeuci, itp, itd, pomagają tylko tym co w to wierzą. Proponuję zdecydować się na ślepy test, on rozwieje wszelkie wątpliwości.
"jeśli nie jest dokładne 50 % duty to po miesiącu i dłużej elektrolizy pojawiają się zanieczyszczenia."
zapewnienie precyzyjnego 50% to nie problem, dzielnik przez 2 czy PWM ustawiony na 50%. Trochę gorzej z "pływaniem" częstotliwości ale w tym zastosowaniu to nie tylko kwarc 20 czy nawet 50ppm wystarczy a nawet zwykły generator RC. Pytanie, czy mechanikę da się wykonać tak dokładnie?
"jak dałam1.2 mA to pojawiły się zanieczyszczenia.Jak dałam 0.480 mA zanieczyszczenia nie było tak jak przy 1.2 mA"
Jak się da prąd 0 to wytrąci się najmniej zanieczyszczeń. Jednocześnie urządzenie nic nie zmienia. Jak dać duży prąd elektroliza jest najsilniejsza i wytrącają się osady pochodzące między innymi z elektrod, które ulegają korozji. To urządzenie to w praktyce generator zanieczyszczeń.
Elektrolizery, różne cewki nawijane na rury od wody czy dopływu paliwa do samochodu, tak jak Kaszpirowski czy Nowak, bioenergoterapeuci, itp, itd, pomagają tylko tym co w to wierzą. Proponuję zdecydować się na ślepy test, on rozwieje wszelkie wątpliwości.
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Ten kod co Ci podalem jest uzupelnieniem do tego ktory Ty zamiescilas. Musisz dac naglowek oraz pod program opozniejacy. Polecenie out portb, r16 wysyla na portb zawartosc resjestru R16 Polecenie ldi r16, 0b0000_1111 wpisuje do R16 liczbe jaka chcesz wyslac na port. Liczbe jaka wysylasz mozna podac w roznym systenie liczbowym. Ja podalem Ci w dwojkowym bo w zaleznosci czy bedzie 1 lub 0 tak samo bedzie na pinach portu. Jesli przeanalizujesz jak w programie zmienia sie to co jest na pinach portu zrozumiesz jak dziala program
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Program który zamieściłam pobrałam z internetu,sama nie umie napisać programu,ani zrobić to według wskazówek jakie podałeś.
Czy możesz zamieścić ten kod z poprawkami jakie dałeś .
Czy możesz zamieścić ten kod z poprawkami jakie dałeś .
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
A potrafisz go skompilować, wgrać do mikrokontrolera i odpowiednio ustawić bity konfiguracyjne?Program który zamieściłam pobrałam z internetu,sama nie umie napisać programu,ani zrobić to według wskazówek jakie podałeś.
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Wgrałam program który zamieściłam do mikrokontrolera, się skompilował bez błędów,został wgrany do uC,ale nie działał tak jak chciałam.ustawić bity konfiguracyjne nie potrafię.
Kompilowałam i wgrywałam do uC, z powodzeniem na Atmel Studio 5.1 niejeden program,który na uC działał tak jak chciałam.
Kompilowałam i wgrywałam do uC, z powodzeniem na Atmel Studio 5.1 niejeden program,który na uC działał tak jak chciałam.
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Ech te kobiety
Btw. to dla admina program w tagu 'code' na forum EP
- .nolist
.include "m8def.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
out ddrc, r16
out portb, r16
out portc, r16
main:
ldi r16, 0b1111_0000
out portb, r16
ldi r16, 0b0000_1111
out portc, r16
rcall del_s
ldi r16, 0b0000_1111
out portb, r16
ldi r16, 0b1111_0000
out portc, r16
rcall del_s
rjmp main
del_s:
ldi R28, 250
ret
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
- .nolist
.include "m8def.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
out portb, r16
main:
ldi r16, 0b1111_1110
out portb, r16
rcall del_s
ldi r16, 0b0000_1101
out portb, r16
rcall del_s
rjmp main
del_s:
ldi R28, 250
ret
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
Btw. to dla admina program w tagu 'code'
Kod: Zaznacz cały
.nolist
.include "m8def.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
out portb, r16
main:
ldi r16, 0b1111_1110
out portb, r16
rcall del_s
ldi r16, 0b0000_1101
out portb, r16
rcall del_s
rjmp main
del_s:
ldi R28, 250
ret
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%
Pierwszy kod na AVR Studio 5.1 nie skompilował się na Atmega 8A
2 kod na Atmega 8A nie skompilował się.
3 kod dla admina na Atmega 8A nie skompilował się.
2 kod na Atmega 8A nie skompilował się.
3 kod dla admina na Atmega 8A nie skompilował się.
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Jak sprawdzalem czy dziala program w symulatorze to zeby nie czekac w nieskonczonosc skrocilem pod program del_s:
Podaj jakie bledy masz podczas kompilacji
- del_s:
ldi R28, 250
ret
del_ss:
- del_s:
ldi R28, 250
del_ss:
- :020000020000FC
:1000000000C004E00EBF0FE50DBF0FEF07BB04BB40
:1000100008BB05BB00EF08BB0FE005BB06D00FE037
:1000200008BB00EF05BB01D0F5CFCAEF0000E8E543
:0C003000FEE93196F0F7CA95C9F7089573
:00000001FF
- :020000020000FC
:1000000000C004E00EBF0FE50DBF0FEF07BB0EEF02
:1000100008BB04D00DEF08BB01D0F9CFCAEF000038
:0E002000E8E5FEE93196F0F7CA95C9F70895B4
:00000001FF
A tu sterownie bitami portu B
Podaj jakie bledy masz podczas kompilacji
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Wgrane hex nie działa na uC
Programy nie kompilują się, wywala 499 Errors i 13 Warning.
Programy nie kompilują się, wywala 499 Errors i 13 Warning.
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Pytałem czy potrafisz skompilować, przeczytałem, ze takwywala 499 Errors i 13 Warning.
Duża ilość błędów być może spowodowana jest brakiem/złą nazwa pliku z definicjami rejestów uC.
Pokaż kilka pierwszych błędów.
Czy do tego zadania potrzebny jest uC? Wystarczy generator i dzielniki np CD4060. Jeśli koniecznie ma być stabilizacja kwarcowa (na 99% zbędna) to to można połączyć dwa dzielniki kaskadowo. W razie potrzebny byłby większy prąd to układy serii HCT.
Re: Attiny 2313A zmiana stanu wysokiego na niski,duty cycle 50%
Moze kopia ekranu Ci pomozei
Kto jest online
Użytkownicy przeglądający to forum: Obecnie na forum nie ma żadnego zarejestrowanego użytkownika i 24 gości