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



Teraz jest 28 mar 2024, o 14:32


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 20 ] 
Autor Wiadomość
 Tytuł: Licznik Binarny
PostNapisane: 18 lis 2012, o 14:16 
Offline
Użytkownik

Dołączył(a): 29 paź 2012
Posty: 45
Pomógł: 0

Witam,
Czy ktoś może mi pomóc w rozwiązaniu zadania tzn licznik binarny na atmega32 PC0-PC7.
Nie mam pomysłu na rozwiązanie a łatwo mi się domyślić tylko że jest to zapewne banalnie proste.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2012, o 19:30 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

flisy2 napisał(a):
Witam,
Czy ktoś może mi pomóc w rozwiązaniu zadania tzn licznik binarny na atmega32 PC0-PC7.
Nie mam pomysłu na rozwiązanie a łatwo mi się domyślić tylko że jest to zapewne banalnie proste.

No ale o co Ci chodzi? :?:

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2012, o 19:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 04 paź 2011
Posty: 8583
Pomógł: 337

co chcesz z tym portem C zrobić konkretnie ??
sprecyzuj co to ma być ??

_________________
[b]San Escobar! Patria mia! Tu eres como la salud.[/b]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2012, o 19:36 
Offline
Użytkownik

Dołączył(a): 24 sty 2012
Posty: 1469
Pomógł: 56

No właśnie tego dotyczyło moje pytanie ;-)

_________________
Jestem początkujący i moje porady mogą być błędne



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2012, o 20:05 
Offline
Użytkownik

Dołączył(a): 29 paź 2012
Posty: 45
Pomógł: 0

macie racje bo czytając ten temat sam nie rozumiem co miałem na myśli mówiąc obiektywnie mianowicie:
Licznik binarny składający się z 8 diod podłączonych od PC0-PC7.
o x x x x x x x t1
x o x x x x x x t2
o o x x x x x x t3
x x o x x x x x t4
o-dioda świeci
x- zgaszona



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2012, o 20:48 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

Ja wszystko rozumiem, dział Rybny jest po to żeby pomagać - ale ..... ale hmmm powiedz mi jak długo zajmujesz lub próbujesz zajmować się programowaniem ?

Uczysz się z jakiejś książki? czy z kursu internetowego ? - podaj źródło

do czego to ma być - tzn to zadanie ? do szkoły ?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2012, o 20:58 
Offline
Użytkownik

Dołączył(a): 29 paź 2012
Posty: 45
Pomógł: 0

Uczę się z Pana książki, jestem na rozdziale 5.3 obsługa klawiszy micro-switch. Zadania sam sobie wymyślam. Programuje może 3tygodnie.
A zadanie ma być dla mojej własnej satysfakcji.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2012, o 21:09 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

a to rozumiem ;) bo myślałem że to jakieś zadanie do szkoły

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2012, o 22:26 
Offline
Użytkownik

Dołączył(a): 07 maja 2012
Posty: 119
Pomógł: 2

Ja to widzę tak:
Bierzesz liczbę, np. 321
gasisz wszystkie ledy
Od wybranej liczby odejmujesz 512
jeżeli wynik wychodzi ujemny, to cofasz się do liczby 321 i gasisz ostatniego leda.
Następnie bierzesz koleją liczbę, tym razem 256, od 321 odejmujesz 256, sprawdzasz czy wynik jest dodatni
ponieważ jest dodatni zapalasz drugą od końca diodę
do dalszych obliczeń bierzesz liczbę którą otrzymałeś z różnicy 321-256=65
tym razem od liczby 65 odejmujesz 128
ponieważ wychodzi liczba ujemna, cofasz się do poprzedniej liczby (65)
gasisz trzeciego leda od końca i przechodzisz do dalszych obliczeń.
itp. z liczbami 64, 43, 16, 8, 4, 2, oraz 1
Skoro to ma być jakiś licznik na końcu dodajesz do liczby od której zacząłeś obliczenia (321) jeden.
Mam nadzieję, że nie poplątałem a bardzo i rozumiesz o co mi chodzi. Nie wykluczam że po drodze popełniłem jakiś błąd.

------------------------ [ Dodano po: 1 minucie ]

PS. Nie sprawdziłem tego w praktyce, ale powinno być ok.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2012, o 22:53 
Offline
Użytkownik

Dołączył(a): 29 paź 2012
Posty: 45
Pomógł: 0

a jakiś gotowy kod bo nie bardzo to rozumiem?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 18 lis 2012, o 23:15 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

hmm a może na początek jeszcze zajrzyj tutaj:

http://mirekk36.blogspot.com/2012/01/av ... stawy.html

i zrozum, że porty w AVR to takie 8-bitowe rejestry, wystarczy do nich wpisywać liczbę którą będziesz zwiększał o 1 w pętli z opóźnieniem a do takiego portu podłączyć 8 diod LED i już masz po sprawie

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2012, o 08:32 
Offline
Użytkownik

Dołączył(a): 16 maja 2012
Posty: 349
Lokalizacja: Legnica
Zbananowany użytkownik

Pomógł: 23

A nie lepiej prosto inkrementować zmienną a potem odwrócić bity? Znaleziony kod na elce:
Kod:
unsigned char reverseByte(unsigned char c)
{
    int i;
    unsigned char d = 0;
    for (i = 0; i < 8; i++)
    {
        d <<= 1;
        d |= c & 1;
        c >>= 1;
    }
    return d;
}

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2012, o 08:34 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 15 cze 2012
Posty: 420
Lokalizacja: Poznań
Pomógł: 5

No dokładnie jak pisze mirekk36 ...

Rejestr portu i tak przechowuje wartość binarnie :) Więc konwersje na binarny masz "od ręki", bo tak to po prostu musi działać. Więc jak zmienną, która przechowuje wartość 5 wyślesz do portu (zwykłe przypisanie = ) to masz swoje:

o x o x x x x x , pisząc poprawnie 00000101

Jeśli zmienną zdekrementujesz to będziesz miał swoje:
x x o x x x x x - > 00000100

(kwestia zanegowania czy nie zanegowania i kolejności podpięcia diodek do portu)

Więc twój kod to tylko ustawienie portu jako wyjście, deklaracja zmiennej i inkrementacja jej w nieskończonej pętli np for (;;) z wystawieniem jej na PORT. Oczywiście aby cokolwiek zobaczyć musisz skorzystać z opóźnienia delay lub timera (w skrajnym przypadku taktować procesor ręcznie :lol: )

Zobacz sobie na kody zawarte tutaj: Mrugające Diody LED i przetestuj ich działanie w praktyce :)

_________________
Wysłane z nowego ATB 1.05beta + ATB ETHERNET



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2012, o 16:58 
Offline
Użytkownik

Dołączył(a): 29 paź 2012
Posty: 45
Pomógł: 0

dziękuje za odpowiednie ukierunkowanie mnie.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2012, o 17:14 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

Tylko jakby jeszcze kolega przeczytał w książce o stylach programowania, zadbał o nawiasy klamrowe i pisał kod bardziej czytelnie to dla samego ciebie byłoby lepiej ;) .... a jak widzisz zadanie okazało się bardziej niż banalnie proste

Tylko to ustawienie kierunków, weź daj przed pętlą

aha - no i u ciebie nie ma w ogóle pętli nieskończonej ??????????? oj oj .... coś mi się to nie podoba - kolega czytał pierwszy rozdział chociaż o języku C ? jak się buduje funkcję main() ???? chyba nie :(

proszę zatem zerknąć do tego rozdziału i podejrzeć na kolejne proste kody w książce czy nawet na pierwsze kody na DVD.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2012, o 21:26 
Offline
Użytkownik

Dołączył(a): 29 paź 2012
Posty: 45
Pomógł: 0

nie miałem zamiaru robić to w pętli nieskończonej, rozumiem że jeżeli mówimy o stylach to mamy na myśli DDRC = 0xFF; jak to zmienić żeby było bardziej poprawne?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2012, o 22:02 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

flisy2 napisał(a):
nie miałem zamiaru robić to w pętli nieskończonej,


No to na prawdę widzę, że książki kolega chyba "ni w ząb nie czytał" ..... eeeeej nieładnie tak. Ja myślę, że jednak chociaż RAZ to trzeba przeczytać albo nawet wrócić do rozdziałów o PODSTAWACH języka C skoro się tak podstawowe błędy robi :(

flisy2 napisał(a):
rozumiem że jeżeli mówimy o stylach to mamy na myśli DDRC = 0xFF; jak to zmienić żeby było bardziej poprawne?


Nie o to chodzi - tylko o miejsce w kodzie programu. Po co ma się to wciąż w pętli wykonywać ?

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2012, o 22:10 
Offline
Użytkownik

Dołączył(a): 29 paź 2012
Posty: 45
Pomógł: 0

Myślę że już nie powinno być błędów
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2012, o 22:15 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27212
Lokalizacja: Szczecin
Pomógł: 1041

nadal jest źle a nawet gorzej. O ile poprawiłeś z tym DDRC to ten IF() w pętli oznacza, że także w ogóle nie poczytałeś o pętli for() ....

nie mówiąc nadal o tym że brak pętli nieskończonej więc będzie kicha i program zadziała TYLKO raz.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 19 lis 2012, o 22:20 
Offline
Użytkownik

Dołączył(a): 29 paź 2012
Posty: 45
Pomógł: 0

nie program działa cały czas, książki przy sobie nie mam bo zostawiłem ją w domu. Jeżeli mógł bym prosić o poprawne napisanie tego kodu był bym wdzięczny.



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: 20 ] 

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:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO