Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Zegar binarny na na mikroprocesorze Atmega8

joboo 10 Mar 2007 10:38 103959 171
Altium Designer Computer Controls
  • #31
    Lokas
    Level 11  
    Witam, byłby ktoś w stanie wrzucić tutaj gotowy listing programu pod Bascoma? Dokładnie pod ten schemat jaki przedstawił joboo...

    Pozdrawiam.

    PS: Da mi ktoś punkcik? :D
  • Altium Designer Computer Controls
  • #32
    joboo
    Level 12  
    Jak obiecałem wcześniej, zmontowałem ponownie zegar i działa bez zarzutu z rezonatorem kwarcowym jak i pod generatorem.


    Quote:
    Jak ustawić w bascom atmege żeby działał z generatorem 16mhz ?

    Przestaw fusebit na zewnętrzny zegar (0000:external clock)

    'zegar binarny joboo
    
    $regfile = "m8def.DAT"
    $crystal = 16000000
    
    Dim Sekjed As Byte , Sekdzies As Byte , Minjed As Byte , Mindzies As Byte , Maxi As Byte
    Dim Godzjed As Byte , Godzdzies As Byte , Wyswietl As Byte , Migaj As Bit , Uniwersalny As Byte
    
    Config Portd = 255
            Portd = &B255
    Config Portc = &B0000000
            Portc = &B0000000
    Config Portb.2 = Output
    Config Portb.3 = Output
    Config Portb.4 = Output
    
    Config Timer0 = Timer , Prescale = 64
    Config Timer1 = Timer , Prescale = 256
    Enable Interrupts
    Enable Timer0
    Enable Timer1
    On Timer0 Co4ms
    On Timer1 Co1s
    Sekjed = 9 : Sekdzies = 5 : Minjed = 9 : Mindzies = 5 : Godzjed = 3 : Godzdzies = 2
    Uniwersalny = 6 : Maxi = 100
    
    Do
    Loop
    End
    
    
    
    Co1s:                                                       ' przerwanie co 1 sek
    Timer1 = 3036
    Incr Sekjed
    Toggle Migaj
    Return
    
    Co4ms:                                                      'przerwanie co 4 mili sek
    Decr Uniwersalny                                            'obsluga wyswietlaczy i przyciskow
    If Pinb.3 = 0 And Pinb.2 = 1 Then                           'przycisk s1 nacisniety
       If Uniwersalny = 0 Then
       Uniwersalny = Maxi : Incr Minjed : Sekjed = 0 : Sekdzies = 0
       Maxi = Maxi - 8
       If Maxi < 8 Then Maxi = 8                                'coraz szybciej
       End If
       End If
    
    If Pinb.2 = 0 And Pinb.3 = 1 Then                           'przycisk s2nacisniety
       If Uniwersalny = 0 Then
       Uniwersalny = Maxi : Incr Godzjed
       Maxi = Maxi - 8                                          'coraz szybciej
       If Maxi < 12 Then Maxi = 12
       End If
    Else                                                        'oba nacisniete lub zwolnione
    If Uniwersalny = 0 Then
    Uniwersalny = 6
    Maxi = 100
    End If
    End If
    
    'co 4ms korygujemy stany licznikow
    If Sekjed = 10 Then
    Sekjed = 0
    Incr Sekdzies
    End If
    
    If Sekdzies = 6 Then
    Sekdzies = 0
    Incr Minjed
    End If
    
    If Minjed = 10 Then
    Minjed = 0
    Incr Mindzies
    End If
    
    If Mindzies = 6 Then
    Mindzies = 0
    Incr Godzjed
    End If
    
    If Godzjed = 10 Then
    Godzjed = 0
    Incr Godzdzies
    End If
    
    ' co 4ms sprawdzamy czy nie jest polnoc jesli tak skracamy cykl
    
    If Godzdzies = 2 And Godzjed = 4 Then
    Godzdzies = 0
    Godzjed = 0
    End If
    
    'wyswietlamy
    Wyswietl = Uniwersalny And &B111
    Portc = &B0000000
    
    Select Case Wyswietl                                        ' obsluga wyswietlacza
    
    Case 1:                                                     ' wyswietl zawart. licznika jedn min
    Portd = Lookup(sekjed , Tabela )
    Portc.0 = 1
    
    Case 2:                                                     ' zawart licz. dzies min
    Portd = Lookup(sekdzies , Tabela)
    Portc.1 = 1
    
    Case 3:                                                     ' jedn godz
    Portd = Lookup(minjed , Tabela)
    Portc.2 = 1
    'Portb.4 = Migaj
    
    Case 4:                                                     ' dzies godz
    Portd = Lookup(mindzies , Tabela)
    Portc.3 = 1
    
    Case 5:
    Portd = Lookup(godzjed , Tabela)
    Portc.4 = 1
    
    Case 6:
    Portd = Lookup(godzdzies , Tabela)
    Portc.5 = 1
    
    End Select
    Return
    
    Tabela:
    'Data 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9                      'w negatywie
    Data 255 , 254 , 253 , 252 , 251 , 250 , 249 , 248 , 247 , 246       ' w pozytywie
    
  • #33
    Lokas
    Level 11  
    Wszystko rozumiem poza tym na końcu...

    Quote:
    Tabela:
    'Data 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 'w negatywie
    Data 255 , 254 , 253 , 252 , 251 , 250 , 249 , 248 , 247 , 246 ' w pozytywie


    Do czego jest ta komenda?


    W domu mam rezonator 4MHz, nada sie? Komenda bedzie wtedy wyglądać "$crystal = 4000000"?
  • #34
    joboo
    Level 12  
    Quote:
    Do czego jest ta komenda?

    możesz sobie wybrać w jaki sposób będzie wyświetlana godzina
    pozytyw - wszystkie diody wygaszone jedynki zapalone
    negatyw - wszystkie diody zapalone jedynki wygaszone

    możesz wykożystać 4Mhz kwarc tylko ze musisz jeszcze zmienić dzielnik w timer1 na prescale = 64
  • #35
    drakerus
    Level 11  
    Hi All,
    Joboo mam pytanie odnosnie fusebitow - jak maja byc ustawione fuse w bascom-avr zeby poprawnie zaprogramowac atmege?? Ustawialem roznie i jednego procka juz zalatwilem bo go programator nie widzi :(. Najlepiej bylo by gdybys zamiescil print screena dla bascom-avr ver.1.11.8.3 DEMO.
    Z gory dzieki,
    Pozdro,
  • #36
    joboo
    Level 12  
    drakerus - zobacz posty wyżej jeśli chodzi o ustawienie a tą atmege co się teraz nie odzywa podepnij pod zewnętrzny generator pin 9 i ruszy , zmienisz wtedy fusebit i będzie ok
  • #38
    drakerus
    Level 11  
    joboo - oswiec mnie bo sie zgubilem - na forum znalazlem informacje ze aby atmega pracowala z generatorem kwarcowym 16 MHz to fuse bity trzeba ustawić na zewnętrzy zegar (0000:external clock). Ale ja, tak jak wczesniej pisalem, mam rezonator kwarcowy 16MHz a nie generator - i teraz pytanie czy ustawienia fuse bitow dla rezonatora i generatora kwarcowego sa takie same ??

    pozdro

    ps. jak juz uda mi sie uruchomic to cudo to mialbym propozycje aby wzbogacic je o budzik, podtrzymanie bateryjne i termometr DS1820 :)
  • #39
    joboo
    Level 12  
    Sorka, nie zwróciłem uwagi, pisałem na szybko.
    Teraz opiszę jak ustawić Fusebity.
    Przypominam, że każde ustawienie zatwierdzimy przyciskiem wirtualnym po prawej stronie o nazwie WriteFS. A więc szukamy linijki o nazwie (gdzie jest ta linijka szukaj w tekście powyżej) Fusebit A987, zaznaczamy ją kursorem i naciskamy przycisk wyboru, który pojawił się po prawej stronie tej linijki.
    Fusebity.
    1. 0000 = częstotliwość z zewnętrznego generatora,
    2. 0001 = oscylator w wewnątrz procesora o częstotliwości 1MHz,
    3. 0010 = wewnętrzny oscylator 2MHz,
    4. 0011 = wewnętrzny oscylator 4MHz,
    5. 0100 = wewnętrzny oscylator 8MHz,
    6. 0101 = zewnętrzny oscylator RC 1MHz,
    7. 0110 = zewnętrzny oscylator RC 2MHz,
    8. 0111 = zewnętrzny oscylator RC 4MHz,
    9. 1000 = zewnętrzny oscylator RC 8MHz,
    10. 1001 = zewnętrzny kwarc z kondensatorami 2MHz,
    11. 1010 = zewnętrzny kwarc z kondensatorami 2-4MHz,
    12. 1011 = zewnętrzny kwarc z kondensatorami 4-6MHz,
    13. 1100 = zewnętrzny kwarc z kondensatorami 6-8MHz,
    14. 1101 = zewnętrzny kwarc z kondensatorami 8-10MHz,
    15. 1110 = zewnętrzny kwarc z kondensatorami 10-16MHz.

    Z ustawień Fusebitów wynika, że jeśli nie chcemy częstotliwości oscylatora powyżej 8MHz, to możemy nie stosować zewnętrznego kwarcu. Wystarczy ustawić oscylator wewnętrzny. Stosując kwarc zewnętrzy ustawiamy jedną z pozycji zawartej pomiędzy 10 a 15
  • Altium Designer Computer Controls
  • #40
    dimarco81
    Level 12  
    RE: joboo

    Spodobał mi się twój projekt. Postanowiłem sobie zrobić całość w eagle..ale z możliwością zaprojektowania obwodów drukowanych płyty głównej z atmegą i płyty z led-ami. Mam pytanie do Ciebie...chodzi mi o ten generator kwarcowy..jaki zastosować na schemacie i jak go podłączyć...W eagle jest kilka takich, co wybrać w bibliotece. Po za tym proszę opisz mi jak go podłączyć on ma cztery wyprowadzenia. Z tego co wyczytałem muszę go zasilić. Wiem, że jest w obudowie DIP14 - tak napisane w notach ma piny 1,7,8,14

    1 - N/C
    7 - Ground
    8 - Output
    14 +5VDC

    Z tego na logike wynika żę pod pin 14 podłączam zasilanie + 5V za stabilizatora a pod pin 7 GND. 1, 8 - nie wiem czy się nie mylę podłączam piny atmegi...Czy może, żle rozumuje ???. Czy ten generator 16MHZ ma już w środku kondensatorki..czy one są na zewnątrz.

    Bardzo bym prosił o kontakt...e-mail marqe(malpa)poczta.onet.pl
    Głownie chodzi mi, czy dobrze rozrysowałem schemat a zwłaszcza podłączenie generatora. Po za tym jak wszytko skoryguje za twoja zgoda chciałbym udostępnić przerobiony projektu twojego autorstwa. Osobiście przerobiłem go na dwa modułu aby można oddzielnie pinami spiąć płytę główną i wyświetlacze LED...również po dokładnej analizie udostępniłbym
    bym płytki PCB szerokiemu gronu i fascynatą tej ciekawej konstrukcji

    POZDRAWIAM
  • #41
    Lokas
    Level 11  
    Nie prościej kupić rezonator za złotówke? Albo skożystać z wbudowanego? Atmega8 chyba nie potrzebuje taktowania zewnętrznym stuffem... ...chyba :D
  • #42
    joboo
    Level 12  
    dimarco81 nie widze żadnego problemu abyś przerobił mój projekt.
    Wyprowadzenia generatora masz poprawne, z wyjście generatora podpinasz tylko pod nogę nr 9 megi8 i oczywiście ustawiasz fusebit na zewnętrzny zegar, nogę nr 10 zostawiasz wolną. Nie montujesz już kondesatorków jak w przypadku rezonatora kwarcowego.

    Quote:
    Nie prościej kupić rezonator za złotówke? Albo skorzystać z wbudowanego? Atmega8 chyba nie potrzebuje taktowania zewnętrznym stuffem... ...chyba

    oczywiście że prościej ale taki generator ma bardzo dużą stabilność pracy co przekłada sie na dokładniejsze odmierzanie czasu :D
  • #43
    dimarco81
    Level 12  
    Dziękuję joboo za odpowiedź

    Muszę poprawić teraz połączenia tego generatora

    PS:

    Robie sobie również zegar na Atmega8 / widziałem zdjęcia twojego zegara na LED niebieskich/ -- według projektu VSS 2006

    POZDRAWIAM

    Jak poprawie schemat wyśle Ci wzory PCB ... /skorygujesz wyrazisz opinie
    i postaram sie udostępnić /

    e-mail: marqe(malpa)poczta.onet.pl

    https://obrazki.elektroda.pl/77_1173997934.jpg - płyta główna zegara binarnego

    https://obrazki.elektroda.pl/53_1173998127.jpg - płytka z diodami LED BLUE

    http://www.askls.glt.pl/gallery/ - bedzię tego więcej....
  • #44
    Lokas
    Level 11  
    Joboo, mógłbyś mi podać parametry kondensatowrów C5 C4 C3
    ? :D
  • #45
    joboo
    Level 12  
    mogą być 33pf (ceramiki)przy rezonatorze ale nie jest to wartość krytyczna, dwa razy po 100nF i jeden 1000uF
  • #46
    dimarco81
    Level 12  
    Witam

    joboo

    proszę podpowiedz mi jak pozmieniać w kodzie żródłowym

    mam generator kwarcowy 14.3Mhz - czy może być taki ???

    Kawałek kodu:

    $regfile = "m8def.DAT"
    $crystal = 16000000 / w tym miejscu mam zmienić ?? /

    Dim Sekjed As Byte , Sekdzies As Byte , Minjed As Byte , Mindzies As Byte , Maxi As Byte
    Dim Godzjed As Byte , Godzdzies As Byte , Wyswietl As Byte , Migaj As Bit , Uniwersalny As Byte

    Config Portd = 255
    Portd = &B255
    Config Portc = &B0000000
    Portc = &B0000000
    Config Portb.2 = Output
    Config Portb.3 = Output
    Config Portb.4 = Output

    Config Timer0 = Timer , Prescale = 64 / tutaj też ?? /
    Config Timer1 = Timer , Prescale = 256
    Enable Interrupts
    Enable Timer0
    Enable Timer1
    On Timer0 Co4ms
    On Timer1 Co1s
    Sekjed = 9 : Sekdzies = 5 : Minjed = 9 : Mindzies = 5 : Godzjed = 3 : Godzdzies = 2
    Uniwersalny = 6 : Maxi = 100

    Pozdrawiam...

    Czy można zastosować wewnętrzy generator Atmegi8 - 8PU - na 8Mhz

    i muszą coś zmieniać w kodzie ???

    Tak na logike jeśl zastosuje kwarca wew/zew 8Mhz to w kodzie muszę zmienić w linijce:

    - $crystal = 16000000 / na $crystal = 8000000
    - Config Timer0 = Timer , Prescale = 64 / na Config Timer0 = Timer , Prescale = 2

    o to chodzi ???

    a jak będzie z generatorem 14.3 Mhz ??




    POZDRAWIAM
  • #47
    drakerus
    Level 11  
    Hi All,

    Ciagle mam problem z uruchominiem tego zegara. Na poczatku myslalem ze cos sknocilem jak polutowalem pajaka na plytce uniwersalnej, w zwiazku z tym zrobilem w protelu pcb (pdfy do termotransferu w zalaczniku), potem myslalem ze mam walniete elementy ( zakupilem drugi komplet - tak sobie wymysllilem ze niebieskie ledy beda ok - i to jest jedna z dwoch zmian jakich dokonalem w stosunku do orginalu, druga jest taka, ze zamiast generatora mam kwarc 16 MHz i dwa kondensatory 33pF - tak tez powino dzialac wg slow joboo). Poniewaz jak sie wydaje problem nie jest ani z pcb ani z elementami - to musi dotyczyc albo programu albo sposobu programowania atmegi. No i teraz z moich obserawcji wynika ze:

    1. Nie ma znaczenia czy programuje atmege orginalnym wsadem za pomoca ponyprog2000, czy tez kompiluje zrodlo w bacom-avr i laduje do megi tak skompilowany program z poziomu bacom-avr, i tak urzadzenie nie dziala.
    2. Podczas symulacji programu w bascom-avr w oknie hardware symulation, diody ktore ilustruja stany portrow migaja tak jak powinny tj, dla portu c zapalaja sie i gasna kolejno diody pc6 - pc0 (sterowanie kolumnami), natomiast dla portu d zapalaja sie diody zgodnie z tym co akurat mam byc wyswietalnie binarnie.

    Zgodnie z zaleceniem joboo dla kwarcu 16 Mhz takiego jak posiadam fusebity dla zegara w bascom-avr wybieram 1110 (ostatnia pozycje z listy rozwijalnej) i laduje do atmegi za pomoca przycisku WRITE FS.

    Teraz mam kilka pytan:
    1. Pierwsze odnosnie ustawiien fusbitow czy poza zmiana ustawien dla zegara trzeba cos jeszcze zmienic??
    2. Analizujac kod porogramu zauwazylem dwie rzeczy ktore wg mnie nie sa ok (poniewaz jestem poczatkujacy w programowaniu avrow moge sie mylic, a jesli tak to prosze mnie poprawic):

     
       Config Portd = 255 
       Portd = &B255 
       Config Portc = &B0000000 
       Portc = &B0000000 
       Config Portb.2 = Output 
       Config Portb.3 = Output 
       Config Portb.4 = Output 
    


    Z tego co widac powyzej Portb, a w zasadzie linie 2, 3 i 4 tego portu zadeklarowane sa jako wyjsciowe, na schemacie ideowym linie 2 i 3 podpiete sa do przelacznikow ustawiajacych czas - z tego co mi wiadomo to, aby atmega mogla czytac stan przelacznikow to linie do ktorych ma je podpiete musza byc ustawione jako input. Czy w zwiazku z tym portb jest w programie dobrze zadeklarowany ??
    Teraz aby mozna bylo sterowac jakims urzadzeniem zewnetrznym podpietym do atmegi to trzeba port/linie portu do ktorego jest podpiete takie urzadzenie nalezy ustawic jako output. I tu tez mam pytanie czy definicja portow c i d w programie sa wystarczajace ?? Czy nie powinno byc jeszcze takiej deklaracji:
    
    Config Portc = Output
    Config Portd = Output
    


    Dla sysmulacji w bacom-avr nie ma znaczenia jak sa poustawiane porty za pomoca instrukcji config (testowalem rozne wartosci i ustawinia portow b i d i za kazdym razem sysmulacja ladnie dzialala) ale po wgraniu do atmegi nie chce dzialac.

    Byc moze moje pytania sa trywialne ale podobno kto pyta nie bladzi wiec ... pytam.

    Pozdrawiam
  • #48
    curek
    Level 14  
    A moglbym prosic o hexa dla wersji ze zwyklym kwarcem (16mhz i te ceramiki). Bo kurde nie moge dac sobie rady z tym :|
  • #49
    Thor1987
    Level 12  
    Ja mam taki sam problem zrobilem wszystko dobrze wgralem programik i nic nie dziala nie chce ATmega8 Dzialac z Tym programikiem ;/;/;/



    Pozdrawiam Bartek
  • #50
    Lokas
    Level 11  
    A teraz moje głupie pytanie: czym zasilać układ? Można bateryjnie? Jakich baterii użyć? Ile na tych bateriach zegarek pochodzi?
  • #51
    drakerus
    Level 11  
    Hi All,
    Posiedzialem troche nad tym ukladem poszukalem troche w necie i moge powiedziec ze udalo mi sie w koncu uruchomic ten zegar, ale jest jedna rzecz ktora psuje caly efekt - a mianowice kolumna wyswietlajaca jednostki minut nie wygasza calkowicie diod, efekt jest taki, ze nawet gdy koluma jednostek minut powinna pokazywac 0 (czyli wszystkie diody wygaszowne) to diody w tej kolumnie delikatenie swieca w rytm zmian kolumn jednostek sekund :( - probowalem juz roznych rzeczy (zmienialem rezystory, zmienialem program) i nic nie pomaga. Ma ktos jakis pomysl o co chodzi ?? I jeszcze jedno pytanie w jaki sposob mozna zmienic intensywnosc swiecenia LED-ow w tym ukladzie (moje diody strasznie jasno swieca (wiem wiem mozna zamiast niebieskich zastosowac jakies inne ktore swieca slabiej ale nie o to chodzi) - zmienialem rezystory sterujace baza tranzystrow i to nic nie dalo ??
    A teraz kilka inforamcji ktore moga sie przydac do uruchomienia w/w układu:
    Ponizej kod programu oraz wsad ktory dziala u mnie w zegarku (zgodny ze schematem ideowym od joboo - pcb w moim poprzednim poscie). Program ten to modyfiakcja programu z ksiazki "Mikroprocesory dla poczatkujacych" dostosowujaca go procesora Atmega8 w orginale byl ATTiny2313.
    
    'S1 - godziny
    'S2 - minuty
    
    $regfile = "m8def.DAT"
    $crystal = 4000000
    
    Dim Sekjed As Byte , Sekdzies As Byte , Minjed As Byte , Mindzies As Byte , Maxi As Byte
    Dim , Godzjed As Byte , Godzdzies As Byte , Mux As Byte , Uniwers As Byte
    Config Portd = 255 : Portd = &B255 : Config Portc = &B11111111 : Portc = &B11111111
    Config Portb.2 = Input
            Portb.2 = 1
    Config Portb.3 = Input
            Portb.3 = 1
    Config Timer0 = Timer , Prescale = 64
    Config Timer1 = Timer , Prescale = 64
    Enable Interrupts : Enable Timer0 : Enable Timer1
    On Timer0 Co4ms : On Timer1 Co1s
    Sekjed = 5 : Sekdzies = 5 : Minjed = 1 : Mindzies = 0 : Godzjed = 1 : Godzdzies = 1
    Uniwers = 6
    Maxi = 100
    
    Do
    Loop
    End
    
    Co1s:
    Timer1 = 3036
    Incr Sekjed
    Return
    
    Co4ms:
    Decr Uniwers
    
    If Pinb.3 = 0 And Pinb.2 = 1 Then
       If Uniwers = 0 Then
          Uniwers = Maxi : Incr Minjed : Sekjed = 0 : Sekdzies = 0
          Maxi = Maxi - 8 : If Maxi < 8 Then Maxi = 8
    End If : End If
    If Pinb.2 = 0 And Pinb.3 = 1 Then
       If Uniwers = 0 Then
          Uniwers = Maxi : Incr Godzjed
          Maxi = Maxi - 8 : If Maxi < 12 Then Maxi = 12
    End If : Else
       If Uniwers = 0 Then
          Uniwers = 6 : Maxi = 100
       End If : End If
    If Sekjed = 10 Then
       Sekjed = 0 : Incr Sekdzies
    End If
    If Sekdzies = 6 Then
       Sekdzies = 0 : Incr Minjed
    End If
    If Minjed = 10 Then
       Minjed = 0 : Incr Mindzies
    End If
    If Mindzies = 6 Then
       Mindzies = 0 : Incr Godzjed
    End If
    If Godzjed = 10 Then
       Godzjed = 0 : Incr Godzdzies
    End If
    If Godzdzies = 2 And Godzjed = 4 Then
       Godzdzies = 0 : Godzjed = 0
    End If
    
    Mux = Uniwers And &B111 : Portc = &B111111
    Select Case Mux
    Case 1:
       Portd = Lookup(sekjed , Tabela) : Portc.0 = 0
    Case 2:
       Portd = Lookup(sekdzies , Tabela) : Portc.1 = 0
    Case 3:
       Portd = Lookup(minjed , Tabela) : Portc.2 = 0
    Case 4:
       Portd = Lookup(mindzies , Tabela) : Portc.3 = 0
    Case 5:
       Portd = Lookup(godzjed , Tabela) : Portc.4 = 0
    Case 6:
       Portd = Lookup(godzdzies , Tabela) : Portc.5 = 0
    End Select : Return
    Tabela:
    
     Data 255 , 254 , 253 , 252 , 251 , 250 , 249 , 248 , 247 , 246       'pozytyw
     'Data 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9                           'negatyw
    



    Z moich obserawcji wynika ze stosowanie innego kwarcu niz 4MHz spowoduje ze program nie bedzie dzialal. Przy kwarcu 16MHz fuse bity ustawionych na 1110 oraz odpowiednim przekonfigurowaniu preskalera timerow wyswietalna jest caly czas wstepnie zdefiniowana w programie godzina. Jest tez pozytywna informacja - nie trzeba stosowac kwarcu mozna odpalic na wewnetrznym ukladzie RC o czestotliowsci 4MHz oczywiscie stabilnosc takiego zegara bedzie gorsza niz z kwarcem.

    To narazie tyle.
    Pozdro.
  • #52
    Lokas
    Level 11  
    Mi tradycyjnie nie działa :) Co mam zrobić żeby BascomAVR widział moją atmege?

    PS: U mnie bascom wykrywa 2 nieprawidłowości. (totalnie nie wiem dlaczego):
    Zegar binarny na na mikroprocesorze Atmega8

    Po wciśnięciu F4 wyskakują mi na ekran takie komunikaty:
    Zegar binarny na na mikroprocesorze Atmega8
    następnie:
    Zegar binarny na na mikroprocesorze Atmega8
    (to chyba objawy nie-widzenia przez program mikrokontrolera...)

    Weryfikacja kończy sie tak:
    Zegar binarny na na mikroprocesorze Atmega8


    Na zajęciach w szkole wyglądało to prościej :/ Instalowaliśmy byle jaką drukarke, i z komunikają nie było już problemów :/

    Pomocy :D
  • #53
    endrius85
    Level 12  
    witam
    mam takie pytanko,
    tez chce sie zabrac za taki zegar, ale jestem poczatkujacy :( wiec ciezko mi to wszystko zrozumiec. Myslalem zeby taki zegar zrobic ale dzialajacy na ogniwo sloneczne (oczywiscie kilka polaczonych ze soba), jak myslicie bedzie to dzialac??? Czy mozna zbudowac troche prosciej caly uklad ???
    z gory dzieki :)
  • #54
    drakerus
    Level 11  
    Hi All,
    Poniewaz udalo mi sie uruchomic w koncu to urzadzenie ( a przy okazji troche sie z nim pomeczylem ) byc moze moje infromacje beda pomocne:
    1) Lokas - komunikaty bledu ktore sie tobie pojawily swiadcza o tym ze, nie masz w kodzie programu na poczatku takiego wpisu
    
    $regfile = "m8def.DAT" 
    


    i jednoczesnie ustawienia twojego kompilatora wskazuja inny typ procka niz atmega8. Jesli jednak masza ta definicje w kodzie programu lub odpowiedni procek jest ustawiony w konfiguracji bascoma to byc moze twoja wersja bascoma nie jest najnowasza. Postaraj sie sciagnac i zainstalowac nowa wersje bascoma.
    Jesli chodzi o problemy z komunikacja to nie bardzo rozumiem co ma drukarka ( a wlasciwie instalowanie byle jakiej drukarki ) do programowania?? To co jest Tobie potrzebne do programowania tego procka to jakis programator (ja uzywam STK200/300) i odpowiednia konfigracja bascoma-avr ( w ustawieniach programu trzeba wybrac posiadany programator), no i oczywiscie musisz poprawnie podlaczyc wszystkie sygnaly z programatora do procka ( plus zasilania, minus, SCK, RESET, MISO, MOSI) a jak to juz bedziesz mial to musi smigac. Czasem zadarza sie ze jest problem z kwarcem ale i z tym tez mozna dac sobie rade - napewno jesli masz nowa atmege8 to pracuje ona na wewnetrznym 1MHz zegarze.
    2) Endrius85 - to ze jestes poczatkujacy w niczym nie przeszkadza ( tez jestem poczatkujacy - pytanie tylko czy wystarczy ci checi i cierpliwosci zeby ewentualne problemy rozwiazac). Zegarek ten wbrew pozorom nie jest specjalnie skomplikowany ( czytaj bardziej prosto byc nie moze - przynajmniej jesli chodzi o hardware). Zasilanie z ogniw slonecznych moze byc pytanie tylko czy bedzie Ci sie chcialo zawsze o wschodzie slonca ustawiac to cudo?? Bez podtrzymania bateryjnego nie ma to sensu. I tu do rozwazenia dwie mozliwosci:
    1. Ktos na tym forum pisal ze jedna z firm robi kity z zegarem binarnym ( i z tego co wiem to posiada on funkcje podtrzymania bateryjnego - no i oczywiscie nie bedziesz sie musial stresowac programowaniem, a nawet jak nie zadziala to wyslesz im niedzialajacy kit a oni odesla ci sprawny ).
    W tym wypaku kosz urzadzenia bedzie wynosil ok 70 PLN + ogniwa sloneczne.
    2. Mozesz zrobic zegar z tego forum odpowiednio przerabiajac uklad i program tak aby podtrzymanie bateryjne dzialalo. Koszt elementow ok 30 PLN + ogniwa slonecze no i oczywiscie ogromna satysfakcja ze zrobiles cos sam. Jesli jestes zainteresowany zmodyfikowana wersja programu i ukladu o podtrzymanie bateryjne to daj znac - uklad i program juz zrobilem i nawet dziala :) )

    No to bylo by na tyle.
    Pozdro.
  • #55
    endrius85
    Level 12  
    witam
    nizej podalem link do firmy o ktorej pisales odnosnie tego zestawu
    http://www.nordelektronik.com/index.php?uklad=182
    a odnosnie zasilania slonecznego to oczywiscie trzeba dac podtrzymanie bo kto bedzie codziennie rano wstawal, moj pomyls jest taki zeby w dzien bylo zasilanie sloneczne a w nocy z baterii ale paluszkow. Dlatego trzeba by troszke "odchudzic" uklad, moze diody od telefonu beda dobre ??? Zegarek z ogniw na paluszki moglby przechodzic albo godzinowo (zmiana programu) lub przez wlacznik zmierzchowy (ja preferuje to 2) wtedy nawet przy malym naslonecznieniu nie utracimy godziny. Przeszukalem google i znalalem ciekawe schematy, nie jestem do konca pewien ale ten 1(binary.jpg) chyba nie potrzebuje programu, jak zle pisze to mnie poprawcie
  • #56
    Lokas
    Level 11  
    Dzięki za odpowiedź :D

    Mógłbyś mi przesłać schemat takiego programatora? Ja niby wykonałem najbardziej prymitywny jaki może być, zasilany z czerwonego i czarnego kabelka zasilacza komputerowego :P

    Instalowanie drukarki, chyba "urdażnia" port LPT, tak musieliśmy robić na zajęciach w szkole, inaczej komputer nie komunikował sie z prockiem (Pracowaliśmy na ATTINY, ale na Atmadze raczej winno być podobnie)

    Dzięki z góry, czekam na schemat programatora :)
  • #57
    drakerus
    Level 11  
    Hi ALL,

    Dwie sprawy pierwsza odnoscnie zasilania z ogniw slonecznych, druga odnosnie programatora:

    1. Andrius85 w pierwszym poscie pisales ze chcialbys zrobic taki zegar i pytales czy nie dalo by sie uproscic ukladu - tak jak pisalem wczesniej prosciej chyba nie mozna. Uklad z tego forum trzeba bylo by zmodyfikowac o dodatkowy tranzystor, dwa rezystory i dwie diody aby dodac podtrzymanie bateryjne, ale i tak uklad bylby prostszy niz ten ktorego schemat zamiesciles. Masz racje ze uklad z tego schematu nie potrzebuje programu ( podobny uklad byl opisany w EDW jako zegar predatora). Wracajac do sprawy zasilania nie ma potrzeby stosowania ukladu zmierzchowego - wystarczy zeby napiecie z ogniw slonecznych bylo wieksze niz to z podtrzymania bateryjnego, cala reszte zalatwi program. Co masz na mysli mowiac o odchudzaniu ukladu ?? Chodzi o zmniejszenie gabartytow czy obnizenie poboru pradu??
    2. Lokas ja swoj programator kupilem na allegro (bylo taniej niz robic samemu). Tak czy inaczej ponizej link do strony ze schematem programatora (najpostszego i zaawansowanego) dodatkowo jeszcze jakis software:

    http://www.amwaw.edu.pl/~adybkows/elka/ispprog.html

    W avt mozna zamowic albo pcb albo zmontowany programator. Jesli masz zamiar pobawic sie dluzej programowaniem avr-ow to kup albo poskladaj jakis porzadny programator - jesli masz zamiar zaprogramowac jeden lub dwa avry to wystarczy ci schemat kabelka z linka powyzej.

    Pozdro.
  • #58
    endrius85
    Level 12  
    drakerus, mowiac o odchudzeniu mialem na mysli zmniejszenie poboru pradu, tak zeby ogniwa daly rade (wiadomo sprawnosc itp) i zeby co miesiac nie kupowac nowych baterii :)
    pozdrawiam
  • #59
    curek
    Level 14  
    ja dalem trafko 6V 220mA Zaplacilem za nie cale 5 zeta :P Mierzylem prad i uklad pobiera w porywach do 30mA tak wiec moim zdaniem ogniwa uciagna to ;)
  • #60
    endrius85
    Level 12  
    o to juz milo, a teraz tak mysle, ze mozna by ten zegarek tak zrobic aby w ogole nie byl zasilany z 220V :), tylko ogniwa i baterie (paluszki i podtrzymanie) to by bylo cosik :P