logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Zegarek na tame$ nie liczy i zablokowany(?) procesor

dzarek1 28 Mar 2008 10:53 1499 8
REKLAMA
  • #1 4964302
    dzarek1
    Poziom 14  
    Posty: 128
    Pomógł: 5
    Witam
    Próbuję zrobić prosty zegar na Atmedze16
    Do procesora mam podłączony oscylator kwarcowy 8MHz
    Sprawę powinien załatwić prosty programik
    $regfile = "m16def.dat"                                     'rodzaj mikrokontrolera
    $crystal = 8000000                                          'czestotliwosc pracy MHz
    
    '--konfiguracja LCD
    Config Lcd = 16 * 1a
    Config Lcdpin = Pin , Db4 = Porta.2 , Db5 = Porta.3 , Db6 = Porta.4 , Db7 = Porta.5 , E = Porta.1 , Rs = Porta.0
    
    Cls
    Config Timer2 = Timer , Prescale = 256
    
    Config Clock = Soft
    Enable Interrupts
    Time$ = "12:23:11"
    
    Do
       Cls
       Lcd Time$
       Waitms 100
    Loop
    End

    Po zaprogramowaniu wyświetlana jest godzina, jednak się nie zmienia.
    Zacząłem więc bawic się fusebitami zmieniając ustawienia CKSEL ale nadal nic, do tego teraz procesor nie chce się programować :|
    Ostatnie wgrane ustawienia
    http://palmavr.sourceforge.net/cgi-bin/fc.cgi...B_CKSEL2=P&B_BOOTSZ1=P&B_CKSEL1=P&B_BOOTSZ0=P

    Bardzo proszę o podpowiedz gdzie robie błąd w programie/ustawieniach oraz co zrobić z "padniętym" procesorem (pewnie programator równoległy)
    Przypuszczam też, że przeskalowanie oscylatora jest nie za bardzo, ale to już kwestią dopracowania, na razie chcę żeby czas zaczął płynąć :)
  • REKLAMA
  • #2 4964361
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    Witam,

    zobacz do helpa Bascoma. Ja wprawdzie tego Time$ nie używałem jeszcze ale wyglada na to, że trzeba jeszcze zastosować polecenie

    config clock = soft


    poniżej fragment z helpa - przeanalizuj to sobie:

    '-----------------------------------------------------------------------------
    
    'name                     : megaclock.bas
    
    'copyright                : (c) 1995-2005, MCS Electronics
    
    'purpose                  : shows the new TIME$ and DATE$ reserved variables
    
    'micro                    : Mega103
    
    'suited for demo          : yes
    
    'commercial addon needed  : no
    
    '-------------------------------------------------------------------------------------
    
     
    
    $regfile = "m103def.dat"                                    ' specify the used micro
    
    $crystal = 4000000                                          ' used crystal frequency
    
    $baud = 19200                                               ' use baud rate
    
    $hwstack = 32                                               ' default use 32 for the hardware stack
    
    $swstack = 10                                               ' default use 10 for the SW stack
    
    $framesize = 40                                             ' default use 40 for the frame space
    
     
    
    'With the 8535 and timer2 or the Mega103 and TIMER0 you can
    
    'easily implement a clock by attaching a 32768 Hz xtal to the timer
    
    'And of course some BASCOM code
    
     
    
    'This example is written for the STK300 with M103
    
    Enable Interrupts
    
     
    
    '[configure LCD]
    
    $lcd = &HC000                                               'address for E and RS
    
    $lcdrs = &H8000                                             'address for only E
    
    Config Lcd = 20 * 4                                         'nice display from bg micro
    
    Config Lcdbus = 4                                           'we run it in bus mode and I hooked up only db4-db7
    
    Config Lcdmode = Bus                                        'tell about the bus mode
    
     
    
    '[now init the clock]
    
    Config Date = Mdy , Separator = /                           ' ANSI-Format
    
     
    
    Config Clock = Soft                                         'this is how simple it is
    
    'The above statement will bind in an ISR so you can not use the TIMER anymore!
    
    'For the M103 in this case it means that TIMER0 can not be used by the user anymore
    
     
    
    'assign the date to the reserved date$
    
    'The format is MM/DD/YY
    
    Date$ = "11/11/00"
    
     
    
    'assign the time, format in hh:mm:ss military format(24 hours)
    
    'You may not use 1:2:3 !! adding support for this would mean overhead
    
    'But of course you can alter the library routines used
    
     
    
    Time$ = "02:20:00"
    
     
    
    '---------------------------------------------------
    
     
    
    'clear the LCD display
    
    Cls
    
     
    
    Do
    
    Home                                                      'cursor home
    
    Lcd Date$ ; "  " ; Time$                                  'show the date and time
    
    Loop
    
     
    
    'The clock routine does use the following internal variables:
    
    '_day , _month, _year , _sec, _hour, _min
    
    'These are all bytes. You can assign or use them directly
    
    _day = 1
    
    'For the _year variable only the year is stored, not the century
    
    End
  • REKLAMA
  • #3 4964372
    dzarek1
    Poziom 14  
    Posty: 128
    Pomógł: 5
    mam to... linijka nr 11 ;)
  • REKLAMA
  • #4 4964739
    Sabre
    Poziom 18  
    Posty: 337
    Pomógł: 8
    Ocena: 56
    W helpie jest wyraźnie napisane, że musi być podłączony kwarc 32768 Hz.
  • #5 4964844
    dzarek1
    Poziom 14  
    Posty: 128
    Pomógł: 5
    a procek nie jest uwalony :) nie wiadomo czemu musiałem zmienić f programowania na programatorze i wszytko hula pięknie

    Cytat:
    W helpie jest wyraźnie napisane, że musi być podłączony kwarc 32768 Hz.
    no tak, ale jak przeglądałem forum, to widzę że lidzie robią takie rzeczy na 8 i działa... tak czy siak... kupię dzisiaj kwarc i przetestuję
    hmmm ale w sumie co za różnica jaki kwarc, tyle że sekunda będzie trwała trochę krócej...
  • REKLAMA
  • Pomocny post
    #6 4965042
    Dr_DEAD
    Poziom 28  
    Posty: 829
    Pomógł: 126
    Ocena: 3
    dzarek1 napisał:

    Cytat:
    W helpie jest wyraźnie napisane, że musi być podłączony kwarc 32768 Hz.
    no tak, ale jak przeglądałem forum, to widzę że lidzie robią takie rzeczy na 8 i działa.....
    hmmm ale w sumie co za różnica jaki kwarc, tyle że sekunda będzie trwała trochę krócej...

    Coś mi intuicja podpowiada że to nie ten kwarc o którym myślisz. Nie znam Bascoma, ale radziłbym sprawdzić czy przypadkiem nie powinny być podłączone 2 kwarce. Jeden możesz sobie zostawić ten 8MHz, a drugi 32kHz musi być podpięty na wejście Timera.
  • Pomocny post
    #7 4965993
    dawid512
    Poziom 32  
    Posty: 1439
    Pomógł: 229
    Ocena: 6
    Witam.

    Zeby zrealizowac program ktory napisales chyba musisz miec fusy ustawione na wew. 8MHz choc nie jestem pewien ale tak testowalem i obowiazkowo podlaczyc kwarc zegarkowy 32.768kHz do nóżek TOSC1 i TOSC2 czyli PC6 i PC7 bo inaczej zegarek nie wystartuje.

    Sprobuj na hardware i daj znac.

    Pozdrawiam.
  • #9 4967140
    dzarek1
    Poziom 14  
    Posty: 128
    Pomógł: 5
    że głupio zapytam... z C 27pF tak jak przy xtal ??

    Dodano po 7 [minuty]:

    :D działa. dziękuję wszystkim za pomoc :)

Podsumowanie tematu

✨ Problem dotyczył realizacji prostego zegara na mikrokontrolerze Atmega16 z kwarcem 8 MHz. Program wyświetlał godzinę, lecz nie aktualizował jej. Próby zmiany fusebitów i ustawień CKSEL nie przyniosły efektu, a procesor został zablokowany i nie dał się ponownie zaprogramować. W dyskusji zwrócono uwagę, że do poprawnego działania zmiennych TIME$ i DATE$ w Bascom AVR konieczne jest użycie kwarcu zegarkowego 32,768 kHz podłączonego do nóżek TOSC1 i TOSC2 (PC6 i PC7). Zalecano pozostawienie kwarcu 8 MHz jako głównego oscylatora i dodanie kwarcu 32,768 kHz do timera. Fusebity powinny być ustawione na wewnętrzny oscylator 8 MHz, a kwarc 32,768 kHz musi być podłączony do dedykowanych nóżek, aby zegar działał poprawnie. Po zastosowaniu tych wskazówek i dodaniu kondensatorów 27 pF do kwarcu 32,768 kHz, zegar zaczął działać prawidłowo.
Podsumowanie wygenerowane przez AI na podstawie treści dyskusji.
REKLAMA