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

Wybór schematu programatora do ATiny2313 i różnice z AT90S2313

tomson5 23 Lut 2007 21:30 2940 21
REKLAMA
  • #1 3609173
    tomson5
    Poziom 16  
    Posty: 259
    Pomógł: 1
    Ocena: 5
    Witam
    Zainteresowałem się programowanie mikroprocesorów w BASCOMie
    na początek wykonałem sobie programator
    ale nie wiem czy dobry wykonałem

    przedstawiam programator który wykonałem
    Wybór schematu programatora do ATiny2313 i różnice z AT90S2313

    następnie zobaczyłem że jest drugi podobny
    Wybór schematu programatora do ATiny2313 i różnice z AT90S2313

    Który z nich jest poprawny ???

    Programator miał być do AT89C2051 ale wiem już że ten procek nie obsługuje ISP

    Jutro mam zamiar kupić procesor ATiny2313
    czy to jest to samo co AT90S2313 ??

    przeglądając posty natknąłem się na takie propozycje
    "....proponuje zacząć od `51"
    Co to za procesor ten `51 ??

    W tej chwili mam kwarce 4MHz i 12MHz, czy będę potrzebował jakiegoś innego ??
  • REKLAMA
  • Pomocny post
    #2 3609231
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    tak naprawdę obydwa schematy są poprawne ;) odmian STK200 jak widać jest sporo tylko pamiętaj jeśli chcesz sam to robić zamiast wydać 15zł i mieć gotowca sprawdzonego i działającego odrazu, to użyj 74HC a nie innej wersji przy tych schematch ... Ja jednak gdybym miał zrobić sam to robił bym wg www.LancOs.com to w końcu autor jednego z lepszych programów do programowania procków go zaprojektował. A program o którym wspominam to PonyProg

    masz rację to programtory do AVRów

    ATtiny2313 to nowsza wersja procka AT90S2313 ma m.inn co b.ważne wewn generator więc nie trzeba koniecznie kwarca żeby działał i kilka innych bajerków w środku. Absolutnie nie kupuj już staruszka AT90S2313 bo nie dość, że słono przepłacisz to nie skorzystasz na nowościach

    masz dwa kwarce i będziesz mógł użyć dowolnego z nich albo żadnego w przypadku ATtiny ;) bo po zakupie ustawiony jest on na wewnętrzny oscylator o częstotliwości 1MHz. Jeśli będziesz chciał szybciej to wystarczy fusebity przeprogramować i po kłopocie. Tylko trzeba uważać przy pierwszych operacjach tego typu ;)

    pozdrawiam
  • REKLAMA
  • #3 3609276
    tomson5
    Poziom 16  
    Posty: 259
    Pomógł: 1
    Ocena: 5
    Wykonałem ten programator ze strony którą podałeś
    według schematu (bez rezystorów)
    Zastosowałem 74HC244

    a co z tymi procesorami `51 co to jest ??
  • REKLAMA
  • #4 3609311
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    to są procki oparte o starą poczciwą architekturę INTEL 8051 - nawiasem mówiąc też bardzo dobre ale zależy do jakich zastosowań, mają przede wszystkim inną architekturę wewnętrzną. Kiedyś trochę na nich robiłem ale jeszcze w czasach gdy miały możliwość korzystania tylko z pamięci EPROM kasowanej ultrafioletem ;) .... obecnie różni producenci wcisnęli już do nich pamięć flash .... Ostatnio po wielu latach zająłem się znowu moim hobby ale odkryłem rodzinę atmela AVR - jak dla mnie choć był azupełnie obca i musiałem się uczyć od nowa asemblera na nie to teraz bym już ich nie zamienił na '51nki .... jeden z najważniejszych powodów to chociażby o wiele większe problemy aby je zaprogramować - specyficzne programatory, czasem nie opłaca się samemu ich robić i a kupne są b drogie itp itd - a tu? w rodzince AVR ??? całą jak leci wszytskie procki mają interefejs programowania ISP !!! i jest extra (czyli tym programatorkiem STK200 który zrobiłeś "przejedziesz" wszystkie praktycznie) ;) inne rzeczy sam jeszcze odkryjesz w miarę nauki tych fajniutkich procków

    pozdr
  • Pomocny post
    #5 3609485
    atmel_team
    Poziom 13  
    Posty: 74
    Pomógł: 4
    Ocena: 2
    Programator, który wykonałęś programuje również 51-ki z oznaczeniem S. Możesz podejrzeć, które w programie Ponny Prog. Programator ten obsługuje również program pana Dybkowskiego można nim zaprogramować At89s8253.
    Pozdrawiam i życze sukcesów w pracy z mikrokontrolerami !
  • #6 3612863
    tomson5
    Poziom 16  
    Posty: 259
    Pomógł: 1
    Ocena: 5
    OK programator chyba działa
    Kupiłem ATtiny2313 i mogę go wreszcie sprawdzić
    Czy ktoś ma może plik *.hex do tego procesora tak aby np: migała dioda na którymś wyjściu ?? abym mógł sprawdzić poprawność działania jego
  • Pomocny post
    #7 3612987
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    ja programuję tylko w asemblerze więc musisz poczekać aż odpowie ktoś kto zna Bascoma co napewno niebawem nastąpi - ale potrzebujesz nie plik *.hex tylko plik z programem źródłowym w Bascomie aby go wczytać i wtedy dopiero można analizować. A plik *.hex to już jest kod wynikowy wygenerowany prze kompilator i w takiej postaci HEX jest tworzony także i po skompilowaniu przez asembler lub C. To tak żebyś na przyszłość wiedział które pliki "z czym się je"

    pozdrówka
  • #8 3613073
    tomson5
    Poziom 16  
    Posty: 259
    Pomógł: 1
    Ocena: 5
    Spoko tyle to już rozumiem, celowo napisałem *.hex bo wtedy wszystko jedno w czym napisane byle skopilowane dla tego procesora
    dobrze rozumuje ??
  • #9 3613183
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    a tak - oczywiście - napisz więc na jakim porcie masz diodę LED? jeśli podłączysz ją katodą do pinu portu a od anody dasz rezystor do +VCC to przygotuję ci tego hexa ;) ....
  • #10 3613371
    tomson5
    Poziom 16  
    Posty: 259
    Pomógł: 1
    Ocena: 5
    np: na porcie B na wyjściu PB0 to jest 12 noga układu
    jeżeli to nie jest problem to niech miga :)
  • Pomocny post
    #11 3613560
    szeri88
    Poziom 14  
    Posty: 163
    Pomógł: 11
    Ocena: 2
    $regfile = "attiny2313.dat"
    $crystal = 1000000
    
    Config Portb = &B00000001
       Do
          Set Portb.0
          Wait 1
          Reset Portb.0
          Wait 1
       Loop


    Jeżeli nie przestawiałeś Fusebitów to dioda będzie zapalana i gaszona na jedną sekundę.

    Pozdrawiam
  • REKLAMA
  • Pomocny post
    #12 3613575
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    o już masz źródełko w Bascomie ;) .... ja pytałem cię na PW o maila gdzie wysłać HEXa ale tak będzie ci lepiej - bo widzisz odrazu kod źródłowy - więc tylko wrzucić do Bascoma , skompilować i wrzucić do procka ;)
  • #13 3613933
    tomson5
    Poziom 16  
    Posty: 259
    Pomógł: 1
    Ocena: 5
    skopilowałem, zaprogramowałem, następnie odczytałem i treść jest ta sama więc chyba jest OK, ale program mi nie działa
    Zostawię to już na jutro bo dzisiaj zmęczony jestem tą wiedzą :)

    Nie podłączyłem diody do wyjścia tylko miernikiem sprawdzałem
    Jutro zmontuje układ testowy
    Rozumiem że wiązka od programatora może być na stałe podłączona do procesora, ja w tej chwili tak mam
  • #14 3614049
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    przede wszystkim podłącz tę diodę - o wiele łatwiej będzie ci to sprawdzać.

    ten program pokazany przez kolegę szeri88 powinien chyba działać bez problemu ale na wszelki wypadek spróbuj sobie wgrać tego HEXa którego ci przesłałem. Tylko nie sprawdzaj wtedy miernikiem bo miganie zrobiłem co ok 750ms więc miernik może uśredniać wynik i pokazywać ci jakieś pośrednie napięcie pomiędzy 0 a 5V

    na diodzie LED od razu będziesz wszystko widział
  • #15 3614143
    szeri88
    Poziom 14  
    Posty: 163
    Pomógł: 11
    Ocena: 2
    Przepraszam za wprowadzenie w błąd. Mikrokontroler jakiego używasz nie posiada wewnętrznego rezonatora 1MHz. W programie jaki przesłałem zmień wartość $crystal na 8000000. Po skompilowaniu, wciśnij F4, wybierz zakładkę "Lock and Fuse Bits" i zmień ustawienia rezonatora na wewnętrzny - 8MHz". UWAGA! nie zmieniaj innych opcji w zakładce Fuse Bits, ponieważ możesz zablokować mikrokontroler...
  • #16 3614273
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    kolego szeri88 -> nie popełniłeś błędu podając, że $crystal = 1000000

    bo świeżo kupiony i nie przeprogramowany ATtiny ma właśnie ustawiony wewnętrzny oscylator (a nie rezonator) na wartość wprawdzie 8MHz ale włączony jest FuseBit CKDIV8, który dzieli tę częstotliwość przez 8 i w efekcie końcowym uc pracuje tak jak zdeklarowałeś na początku z częstotliwością 1000000Hz czyli 1Mhz

    .... skoro autor jest mocno początkujący to niech może narazie nie zabiera się za ustawianie fusebitów bo za chwilę pojawi się pytanie jak odblokować procka .... lepiej z tym poczekać i najpierw dobrze poznać podstawy programowania a do tego 1MHz spokojnie wystarczy przecież ;)

    pozdrówka
  • #17 3614780
    tomson5
    Poziom 16  
    Posty: 259
    Pomógł: 1
    Ocena: 5
    Ok dzisiaj zabieram się za płytkę do sprawdzania
    W pracy mam normalne programatory uniwersalne więc jak coś namieszam to sobie go odblokuje, puki co wolę bazować na defaulowych ustawieniach
    Mam jeszcze pytanie czy ten mikroprocesor wymaga zewnetrznych pojemności na PIN 4 i PIN 5 ?

    Z tego co się orientuje niektóre mikroprocesory mimo wew. oscylatora potrzebowały jeszcze dwóch kondensatorów
  • #18 3614814
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    Witam,

    jeśli chodzi o procki AVR czyli m.inn twój ATtiny2313 to nie potrzebuje on absolutnie żadnych kondensatorów na pinach XTAL jeśli używasz wewn. oscylatora ;) .... co więcej w takim przypadku możesz te 2 piny wykorzystać jako 2 dodatkowe wyprowadzenia portuA .... sprawdź sobie w nocie aplikacyjnej dokładnie

    powodzenia
  • #19 3614860
    tomson5
    Poziom 16  
    Posty: 259
    Pomógł: 1
    Ocena: 5
    Diodę dolutowałem przez rezystor do masy
    Pokazuje mi że procek jest zaprogramowany, żadnej reakcji dioda nie świeci
    Wybór schematu programatora do ATiny2313 i różnice z AT90S2313


    Edit To jest ten program który przesłał mi @mirekk36
    Zaraz sprawdzę ponownie ten drugi który skopilowałem

    Edit2: sprawdziłem program @szeri88 i jest OK działa !!!

    Edit3: sprawdziłęm ponownie program @mirekk36 i nie działa :(
    Mam pytanie do @szeri88
    napisałeś w programie
    Config Portb = &B00000001 


    czy można to zapisać w bardziej zrozumiałej formie?
    Config Portb = output  


    Edit4: Sam sobie odpowiedziałem :D można tak jak ja napisałem
  • #20 3614923
    mirekk36
    Poziom 42  
    Posty: 9195
    Pomógł: 964
    Ocena: 2289
    ;) przepraszam zrobiłem małą pomyłeczkę w swoim programie - ale przynajmniej dioda by świeciła gdybyś podłączył ją odwrotnie.... tak czy inaczej ważne że w Bascomie ci ruszyło bo to możesz spokojnie sobie analizować i zmieniać

    ... jednak na jakąś tam przyszłość radzę ci podłączać diody LED, które wymagają jakiegoś tam w miarę prądu do sterowania np max 20mA - nie tak jak ty teraz podłączyłeś tylko katodą do pinu a anodą przez rezystor do +5V. Wynika to z budowy portu, który tylko w takiej konfiguracji może zapewnić 20mA. Poza tym gdy tylko dojdziesz do tego co to jest PWM i będziesz chciał tym sygnałem sterować sobie płynnym rozjaśnianiem i ściemnianiem diody LED to przy obecnym sposobie podłączenia napotkasz kolejne problemy, z którymi nie będziesz się mógł uporać - do momentu kiedy zrozumiesz prawidłowe wykorzystanie wyjść portów w prockach AVR

    powodzenia

    Dodano po 3 [minuty]:

    można napisać Config Portb = output ale kolega szeri pokazał ci też metodę jak ustawić poszczególne bity w porcie. Dzięki zapisowi &B00000001 nakazujesz prockowi aby bity portu 7-1 były ustawione jako wejścia natomiast tylko bit1 jako wyjście - taka wiedza niedługo może ci się przydać ;) - bo jak widać można w prosty sposób operować na poszczególnych bitach (liniach) portu a nie odrazu na całym porcie
  • #21 3615207
    tomson5
    Poziom 16  
    Posty: 259
    Pomógł: 1
    Ocena: 5
    1 Mam rozumieć że ledy podłączyć przez rezystory do +5V a nie do masy tak jak mam teraz ??

    2 To co opisałeś o Configu portu jest bardzo ciekawe, bo właśnie się zastanawiałem jak go będę mógł skonfigurować w momęcie gdybym chciał mieć i wejścia i wyjścia w danym porcie
    rozumiem że spowoduje że Bit2 (PB1) będzie wyjściem a bity 7-3 i 1 są wejściami

    3 A taki zapis spowoduje że wszystkie Bity portuB będą wyjściami ??

    Chciałem zmodernizować ten program o kolejne instrukcje ale coś mi nie wyszło
    W zamiarze moim było aby dioda migneła 10 razy
          $regfile = "attiny2313.dat"
    $crystal = 1000000
    
    Config Portb = Output
       Dim A As Byte
    
       Do
       A = A + 1
       Print A
          Set Portb.0
          Wait 1
          Reset Portb.0
          Wait 1
       Loop Until A = 10
       Print A
       Exit Do


    dzięki wam wielkie za okazaną pomoc

    Edit już sobie poradziłem wystarczyło w ostatniej lini wpisać END :)
  • #22 3616063
    szeri88
    Poziom 14  
    Posty: 163
    Pomógł: 11
    Ocena: 2
    tomson5 napisał:
    1 Mam rozumieć że ledy podłączyć przez rezystory do +5V a nie do masy tak jak mam teraz ??


    Dokładnie tak.

    tomson5 napisał:
    2 To co opisałeś o Configu portu jest bardzo ciekawe, bo właśnie się zastanawiałem jak go będę mógł skonfigurować w momęcie gdybym chciał mieć i wejścia i wyjścia w danym porcie
    rozumiem że spowoduje że Bit2 (PB1) będzie wyjściem a bity 7-3 i 1 są wejściami

    3 A taki zapis spowoduje że wszystkie Bity portuB będą wyjściami ??


    Tak.

    tomson5 napisał:
    Chciałem zmodernizować ten program o kolejne instrukcje ale coś mi nie wyszło
    W zamiarze moim było aby dioda migneła 10 razy
          $regfile = "attiny2313.dat"
    $crystal = 1000000
    
    Config Portb = Output
       Dim A As Byte
    
       Do
       A = A + 1
       Print A
          Set Portb.0
          Wait 1
          Reset Portb.0
          Wait 1
       Loop Until A = 10
       Print A
       Exit Do


    dzięki wam wielkie za okazaną pomoc

    Edit już sobie poradziłem wystarczyło w ostatniej lini wpisać END :)


    Widzę, że nieźle sobie radzisz, podpowiem Ci, że instrukcję możesz zastapić

    Pozdrawiam

Podsumowanie tematu

✨ Dyskusja dotyczy wyboru schematu programatora do mikrokontrolera ATtiny2313 oraz różnic między nim a starszym modelem AT90S2313. Oba przedstawione schematy programatorów (avrisp-siprog i betterSTK200) są poprawne i obsługują programowanie AVR przez interfejs ISP. ATtiny2313 jest nowszą wersją AT90S2313, wyposażoną m.in. w wewnętrzny generator oscylatora, co eliminuje konieczność stosowania zewnętrznego kwarcu, choć można używać dostępnych kwarców 4 MHz lub 12 MHz. Procesory z rodziny AVR, w tym ATtiny2313, nie wymagają kondensatorów na pinach XTAL przy użyciu wewnętrznego oscylatora, a piny te mogą służyć jako dodatkowe wyjścia portu. W dyskusji wyjaśniono także różnice między architekturą AVR a klasycznymi procesorami opartymi na Intel 8051 (`51), które mają inną architekturę i wymagają innych programatorów. Użytkownik otrzymał przykładowy kod w Bascomie do migania diodą LED podłączoną do portu B, pinu PB0 (12 nóżka), wraz z wyjaśnieniami dotyczącymi konfiguracji portów i fusebitów. Omówiono prawidłowe podłączanie diod LED do portów mikrokontrolera (katoda do masy, anoda przez rezystor do +5V) oraz podstawy konfiguracji portów w Bascomie, w tym ustawianie bitów portu jako wejścia lub wyjścia za pomocą wartości binarnych lub słowa kluczowego "Output". Poruszono także kwestie programowania i odczytu pamięci mikrokontrolera oraz znaczenie fusebitów dla ustawienia częstotliwości pracy wewnętrznego oscylatora.
Wygenerowane przez model językowy.
REKLAMA