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

Przerobienie programu na atmegę8

Dawid 95 25 Gru 2010 14:02 2089 22
REKLAMA
  • #1 8910824
    Dawid 95
    Poziom 10  
    Witam !
    Tak jak w temacie czy mogłby mi ktoś pomoc przerobić ten oto schemat na procek atmega8 ? Jestem dopiero początkujący.
  • REKLAMA
  • #2 8910862
    Tomasz.W
    Poziom 35  
    Dawid 95 napisał:
    ....czy mogłby mi ktoś pomoc przerobić ten oto schemat
    Ten to znaczy który. I zdecyduj się co zamierzasz przerobić, program czy schemat.
  • REKLAMA
  • #4 8910992
    Tomasz.W
    Poziom 35  
    Dawid 95 napisał:
    ....Chcę przerobić schemat na atmegę 8...
    Zdradź mi sekret, dlaczego chcesz to przerabiać :?:
    Dawid 95 napisał:
    ....program mam już....
    A na jaki procesor masz ten program :?:
  • #5 8911050
    Dawid 95
    Poziom 10  
    Program mam juz gotowy na procesor atmega8.. Jest on napisany na AT89C2051 , a skoro ja się zajmuje AVR kami to chcę go przerobic na atmege8. Chciałbym wykonać ten termometr ze względu na to , iż jego schemat nie jest zbytnio skomplikowany. A że program napisany jest dla AT89C2051 dlatego proszę o pomoc
  • #6 8911340
    Tomasz.W
    Poziom 35  
    Nic z tego nie rozumiem.
    Dawid 95 napisał:
    ....Program mam juz gotowy na procesor atmega8.. Jest on napisany na AT89C2051....
    Jedno jest zaprzeczeniem drugiego.
  • REKLAMA
  • #7 8911603
    Dawid 95
    Poziom 10  
    Pomyłka. Program mam napisany na atmegę8. Tylko teraz ten schemat co jest zamieszczony w linku chcę przerobić na atmegę8 , ponieważ jak zauważyłem jest dla procesora AT89C2051.
  • #8 8911654
    Tomasz.W
    Poziom 35  
    Dawid 95 napisał:
    ....Program mam napisany na atmegę8. Tylko teraz ten schemat co jest zamieszczony w linku chcę przerobić na atmegę8....
    W programie poszczególne piny I/O danego portu są przypisane do ściśle określonego zadania np. komunikacja z układem DS18B20 czy też sterowanie wyświetlaczem. Bez znajomości programu przeróbka schematu jest niewykonalna.
  • #9 8911916
    Dawid 95
    Poziom 10  
    '****************************
               'Konfiguracja
    '****************************
    '$regfile = "attiny2313.dat"
    $regfile = "m8def.dat"
    $crystal = 12000000
    
    'Config Portb = &B11111111 : Portb = &B11111111
    'Config Portd = &B11111111 : Portd = &B11111111
    
    Config Portb = &B11111111 : Portb = &B11111111
    Config Portc = &B11111111 : Portc = &B11111111
    Config Portd = &B11111111 : Portd = &B11111111
    
    
    
    Config 1wire = Pinc.5
    
    Config Timer0 = Timer , Prescale = 64
    Enable Timer0 : On Timer0 Przerwanie0
    
    
    Enable Interrupts
    '****************************
          'Zmienne
    '****************************
    Dim Lsb As Byte
    Dim Msb As Byte
    Dim Co4ms As Byte , Co100ms As Byte , Co1s As Byte
    Dim Wysw As Word , Wysw1 As Byte , Wysw10 As Byte , Wysw100 As Byte
    Dim Wysw_pomoc As Word
    Dim Tempa As Word
    Dim Mux As Byte
    
    Dim Zezw_wysw As Bit
    Dim Pomiar_odczyt As Bit
    Dim Minus As Bit
    Dim Ur As Bit
    '****************************
          'Wartosci Poczatkowe
    '****************************
    Reset Pomiar_odczyt
    Reset Ur
    Wysw1 = 191
    Wysw10 = 191
    Wysw100 = 191
    '****************************
          'Petla glowna
    '****************************
    Do
    
    If Zezw_wysw = 1 Then
      Reset Zezw_wysw                                           'co 4ms
      Wysw = Tempa
    
      If Ur = 1 Then Gosub Przelicz
      Gosub Wyswietl
    End If
    
    Loop
    End
    '****************************
          'Przerwanie timer0
    '****************************
    Przerwanie0:
    Timer0 = 5
    Incr Co4ms
     If Co4ms = 3 Then
       Co4ms = 0
       '***************************************  co 4ms
       Set Zezw_wysw
       Incr Co100ms
       If Co100ms = 25 Then
         Co100ms = 0
         '*************************************** co 100 ms
         'ew flaga obslugi przyciskow
         Incr Co1s
         If Co1s = 7 Then
           Co1s = 0
           '*************************************** co 1s
           Pomiar_odczyt = Not Pomiar_odczyt
    
           Disable Interrupts
           1wreset
    
           If Pomiar_odczyt = 1 Then
            1wwrite &HCC
            1wwrite &H44
           Else
            If Err = 0 Then
    
              1wwrite &HCC
              1wwrite &HBE
              Lsb = 1wread():
              Msb = 1wread():
    
              Minus = Msb.7
    
              Tempa = Msb * 256
              Tempa = Tempa + Lsb
    
    
              If Minus = 1 Then
                Tempa = Not Tempa
                Tempa = Tempa + 1
              End If
    
              Tempa = Tempa * 10                                'temperatura *10
              Tempa = Tempa / 16
    
              If Ur = 0 Then Ur = 1
    
            Else
              Tempa = 10000                                     'Er wyswietli wyswietlacz potem
            End If
           End If
    
           Enable Interrupts
           '***************************************
         End If
         '***************************************
       End If
       '***************************************
     End If
    
    Return
    '****************************
          'Inne Etykiety
    '****************************
    Przelicz:
     If Wysw < 1000 Then
       Wysw_pomoc = Wysw Mod 10
       Wysw1 = Wysw_pomoc
       Wysw = Wysw / 10
       Wysw_pomoc = Wysw Mod 10
       Wysw10 = Wysw_pomoc
       Wysw = Wysw / 10
       Wysw_pomoc = Wysw Mod 10
       Wysw100 = Wysw_pomoc
    
       If Wysw100 = 0 Then Wysw100 = 10                         'wygaszenie zera wiodącego
    
       Wysw1 = Lookup(wysw1 , Tabela)
       Wysw10 = Lookup(wysw10 , Tabela2)
       Wysw100 = Lookup(wysw100 , Tabela)
    
     Else
       Wysw1 = 175                                              'r
       Wysw10 = 175                                             'r
       Wysw100 = 134                                            'E
     End If
    
    Return
    
    
    Wyswietl:
    
      Incr Mux
      If Mux = 3 Then Mux = 0
    
      Portc.3 = Not Minus
    
      Select Case Mux
        Case 0:
         Set Portc.0
          Portd = Wysw100
         Reset Portc.2
    
        Case 1:
         Set Portc.2
          Portd = Wysw10
         Reset Portc.1
    
        Case 2:
         Set Portc.1
         Portd = Wysw1
         Reset Portc.0
      End Select
    
    Return
    
    '****************************
    
    '****************************
    
    
    '*******************************************************************************
                               'Tabele do wyswietlania na wyswietlaczu
    '*******************************************************************************
    Tabela:
        Data 192 , 249 , 164 , 176 , 153 , 146 , 130 , 248 , 128 , 144 , 255
    'znak:    0     1     2     3     4     5     6     7     8     9     pusty
    
    Tabela2:
        Data 64 , 121 , 36 , 48 , 25 , 18 , 2 , 120 , 0 , 16 , 255
    'znak:    0.    1.  2.    3.   4.   5.  6.   7.   8.  9.    pusty
    '*******************************************************************************
    
    '*******************************************************************************


    Proszę pamiętać o używaniu znaczników code. - arnoldziq
  • REKLAMA
  • #10 8916018
    Dawid 95
    Poziom 10  
    Probowałem go jakoś przerobić , lecz nie wychodziło mi ...
  • #11 8916181
    skalsky5000
    Poziom 21  
    Co właściwie chcesz w nim przerobić skoro kompiluje się on bez problemu?
  • #12 8916263
    Dawid 95
    Poziom 10  
    ja chcę przerobc schemat na atmegę 8 , nie program.
  • #13 8916371
    skalsky5000
    Poziom 21  
    PORTC.1 - 1wire
    PORTC.0,1,2 - multiplexowanie wyświetlaczy
    PORTD - segmenty
  • #14 8916553
    Dawid 95
    Poziom 10  
    A jak ten układ mam podłączyć do interfejsu 1 wire? Czy wystarczy tylko zmontowanie układu i podłączenie zasilania ? Bo złożyć według schematu , to nie problem , tylko tu nasuwa się pytanie czy trzeba go jakoś " specjalnie " podłączać ?? Czy tylko zmontować i juz ?
    A co z resztą ? kondensatory , czujnik itp ... ? Jak je podłączyć do atmegi 8 ?
    Bo mam złącze 1wire na płytce testowej ZL2AVR... Czy wystarczy tylko je podpiąć do portdu procesora ?
  • #15 8916620
    skalsky5000
    Poziom 21  
    Nie wiem jak jest na płytce ale czujnik podpinasz pod nogę procesora PC.3. Dodatkowo podciągasz to połączenie do + zasilania rezystorem ok 4,7K.
  • #16 8916847
    Tomasz.W
    Poziom 35  
    Dawid 95 napisał:
    Probowałem go jakoś przerobić , lecz nie wychodziło mi ...
    Posłuchaj, jeżeli pisałeś tą poprawkę na AT8 to powinieneś wiedzieć gdzie jest co przypisane, do którego pinu danego portu dołączony ma być np. segment "A" wyświetlacza, do których pinów jakiegoś portu mają być dołączone bazy tranzystorów sterujących T1 - T3. Bez znajomości tych "drobiazgów" nie jestem w stanie Ci pomóc. Przerysowanie schematu to najmniejszy z problemów, lecz żeby to zrobić muszę wiedzieć dokładnie co do czego przypisałeś w programie.
  • #17 8916892
    Dawid 95
    Poziom 10  
    To w takim razie tutaj cię zaskoczę , ponieważ ja tego programu nie pisałem sma . Wkleiłem gotowy z mirleya . W linku na dole w załączniku jest podany.
  • #18 8919620
    piotrva
    VIP Zasłużony dla elektroda
    ja nie rozumiem w czym problem. masz płytkę testową więc:
    1. podkręcasz pod zaciski termometr ds18b20
    2. podpinasz PC1 <> 1 wire
    3. podpinasz PC0,1,2 do odpowiednio W1, W2 i W3
    4. podpinasz PORTD0 do A, PORTD1 do B i tak dalej aż do PORTD7 do dp. Jak nie działa to na odwrót (PD0 do dp, PD7 do a, i tak dalej)
    Na prawdę nie wiem z czym można mieć tu problem...
  • #19 8919964
    Tomasz.W
    Poziom 35  
    Dawid 95 napisał:
    To w takim razie tutaj cię zaskoczę , ponieważ ja tego programu nie pisałem sma . Wkleiłem gotowy z mirleya . W linku na dole w załączniku jest podany.
    No świetnie, należy się tylko cieszyć że nie czekałeś z napisaniem tego do np. 52 strony. Nie mogłeś tego napisać na samym początku :?: Nie było by całej strony bezsensownego mielenia liter. Zrób dokładnie tak jak napisał :arrow: piotrva i problem będzie rozwiązany.
  • #20 8921688
    Dawid 95
    Poziom 10  
    A czy układ będzie poprawnie działał jeśli podłącze tylko czujnik ?? Na wyświetlaczy będzie pokazana aktualna temperatura ?
    To w takim razie wyjście DQ czujnika mam podłaczyć na pin procesora czy na " kołek " płytki testowej ?? ( interfejs 1wire ) ? A czy trzeba podciągać wyjscie DQ rezystorem 4,7 ?
  • #21 8921917
    Wojtek75
    Poziom 24  
    Skoro chcesz zobaczyć wynik na wyświetlaczu to logiczne jest, że należy go również podłączyć. Tak ciężko popatrzeć na schemat posiadanego zestawu. Czujnik wkręcasz w złącze Z10 a potem kołek opisany jako 1wire łączysz kabelkiem z odpowiednim portem (kołkiem) uC.
    Przerobienie programu na atmegę8
    Jak widać wejście 1wire przy złączu Z10 jest podciągnięte.
    Tutaj cały schemat zl2avr: Link
  • #22 8922009
    Dawid 95
    Poziom 10  
    Czyli w złącze Z10 podłączam wyjście czujnika czyli DQ , tak ?

    Nie działa jak na razie .... Podłączyłem DQ czujnika do złącza Z10, plus i minus zasilania też. Z kołka 1wire poprowadziłem kabelek na Portc.5 . Pc0 Pc1 Pc2 podłączyłem na W1 W2 W3 czyli multipleksowanie. i cały portb na segmenty poszczegolne .
  • #23 8922168
    piotrva
    VIP Zasłużony dla elektroda
    A jaki masz efekt?
    Co się dzieje?
    Podłącz to pod rs232 lub lcd i sprawdź czy na pewno dobrze przykręciłeś ds,a nie na odwrót
REKLAMA