Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

[Atmega][programator][licznik] Łączność

fasset 07 Cze 2012 19:49 3434 33
  • #1 07 Cze 2012 19:49
    fasset
    Poziom 13  

    Witam, kupiłem mini-programator Usbasp tego typu:
    http://img10.allegroimg.pl/photos/oryginal/23/66/60/14/2366601411

    Programatorem nie mogę zaprogramować, ani mikrokontrolera Atmega16a, ani 88pa.
    Nie jest to wina złego połączenia. Wszystko robiłem według dokumentacji dla obu mikrokontrolerów. Połączenia z programatora do mikrokontrolera (umieszczonego na płytce stykowej) sprawdzałem miernikiem - wszystko ok. Sterowniki do programatora wgrane, AVRDude widzi Ubsasp.
    Problem zaczyna się kiedy próbuje nawiązać komunikacje z procesorem.
    Po użyciu komendy np.:

    Code:
    avrdude -c usbasp -p m88

    Dostaje w odpowiedzi:
    Code:

    warning: cannot set sck period
    error: target doesn't answer.1
    avrdude: intialization failed, rc=-1


    Czy mam złączyć jakieś zworki w tym programatorze? Jeżeli chodzi o zworki to nie wiem jak wyglądają są tylko oznaczenia typu J2 i kropki z wgłębieniem.
    Ktoś ma jakiś pomysł w czym tkwi błąd?

    Pozdrawiam

    Proszę zamieścić obrazek we właściwy sposób:
    https://www.elektroda.pl/rtvforum/topic2053101.html
    [zumek]

    0 29
  • #2 07 Cze 2012 20:01
    rakso1313
    Poziom 13  

    Nie wiem jak rozwiązać twój problem ale od razu ci powiem ze z takim programatorem daleko nie zajdziesz posiadam właśnie coś takiego i ciągle problemy, jak się uda jakiś błąd rozwiązać to pojawia się nowy.
    Rozwiązałem ten problem używając programatora na FT232 ale teraz kupiłem usbasp dobrej jakości ze sklepu atnel.
    Aha i wrzuć fotkę jak podłączyłeś wszystko razem na płytce stykowej, coś mi ten błąd przypomina ale nie będę krakał dopóki nie zobaczę zdjęć.

    0
  • #3 07 Cze 2012 20:26
    fasset
    Poziom 13  

    Jeżeli możesz to powiedz, niestety nie mam możliwości przesłania zdjęć.
    Kondensatory wyrównujące są przy VCC i AVCC. MOSI, STK, MISO, RESET wpięte przez złącze wannowe. Zresztą wszystko było sprawdzane miernikiem, tak jak napisałem - od nóżek mikrokontrolera do lutów programatora. Napięcia również sprawdzane - mieszczą się w zakresie 4.5 - 5V.

    0
  • #4 07 Cze 2012 21:37
    rakso1313
    Poziom 13  

    A kwarc jest podłączany ?

    0
  • #5 07 Cze 2012 21:43
    fasset
    Poziom 13  

    Nie, domniemam, że ustawiony jest wewnętrzny rezonator RC.

    0
  • #6 07 Cze 2012 21:46
    rakso1313
    Poziom 13  

    Spróbuj podłączyć kwarc np. 8MHz lub 16MHz.
    I napisz jeszcze czy procki są nowe nie używane oraz jakiego programu używasz ?
    Polecam Eclipse oraz MkAvrCalcualtor.

    0
  • #7 07 Cze 2012 22:31
    fasset
    Poziom 13  

    Hexa zrobiłem w AVRStudio, ale to bez znaczenia skoro nie mogę go wgrać.
    Do wgrywania używam, a raczej próbuje AVRDude - odpalany w wierszu poleceń. Żeby korzystać z zewnętrznego kwarcu musze ustawić odpowiednio fusebity, a tego i tak nie mogę zrobić więc chyba nie w tym rzecz.

    EDIT: chyba, że problem leży w tych zworkach...

    0
  • #8 07 Cze 2012 23:55
    LordBlick
    VIP Zasłużony dla elektroda

    Jedna ze zworek to Slow SCK, służy do programowania procesorków o małej prędkości zegara. Wystarczy zemknąć na schemat USBAsp:
    http://www.fischl.de/usbasp/

    0
  • #9 08 Cze 2012 00:26
    dondu
    Moderator Mikrokontrolery Projektowanie

    Gdyby nie pomogła zworka o której pisze LordBlick, to pokaż zdjęcia całości wraz z połączeniami, tak abyśmy mogli sprawdzić.
    BTW. Jeżeli mikrokontroler nie zasilasz z programatora pamiętaj o połączeniu mas.

    0
  • #11 08 Cze 2012 19:20
    LordBlick
    VIP Zasłużony dla elektroda

    Na zdjęciach nie widać. Powinna być tam, tak, jak na w/w schemacie. Zdjęcia możesz zamieszczać na tym forum, opis jest tutaj (w każdym dziale tytuł tematu na czerwono):
    https://www.elektroda.pl/rtvforum/topic2053101.html
    Nie widzę podłączenia GND do programatora, czy ono rzeczywiście jest ?

    0
  • #14 08 Cze 2012 21:27
    fasset
    Poziom 13  

    Te dwa zielone kabelki po prawej stronie zdjęcia dostarczają zasilanie z baterii (sprawdzane miernikiem 4.5-5V względem masy, a nóżkami mikrokontrolera). Te dwie szyny w środku (czerwona i niebieska) to kolejno "+" i "-".

    EDIT: gdzie są te zworki na programatorze?

    0
  • #15 08 Cze 2012 21:34
    landy13
    Poziom 29  

    fasset napisał:
    Tak jest połączenie wejść GND do masy.

    Jak jest, jak nie jest. Widać wyraźnie, że z wtyczki programatora idą tylko cztery przewody, masy tam nie ma.

    0
  • #16 08 Cze 2012 21:45
    rakso1313
    Poziom 13  

    A dlaczego nie ciągniesz prądu z komputera przez programator ? Marnujesz baterie.
    Podłącz Mosi, Miso, Rst oraz Sck do mikrokontrolera a następująco GND oraz VCC z usbasp przez kondensatory według tego poradnika.
    Nie potrzebujesz baterii, prąd jest ciągnięty przez usbasp, po to właśnie są te wyjścia VCC oraz GND.

    0
  • #17 08 Cze 2012 21:56
    fasset
    Poziom 13  

    landy13 napisał:

    Jak jest, jak nie jest. Widać wyraźnie, że z wtyczki programatora idą tylko cztery przewody, masy tam nie ma.


    Zasilanie pobieram z baterii, więc masa to minus baterii i tam jest podłączone wyprowadzenie GND co widać na układzie.

    Z programatora owszem idą 4 przewody (MOSI, SCK, RESET, MISO). Zasilania z programatora nie pobieram bo nie mam jak tego inaczej podłączyć do płytki stykowej - miałem dwurzędowe złącze wannowe 5-pinowe - musiałem uciąć jeden rząd po to aby wszystko podłączyć prawidłowo do płytki.

    Jeszcze raz proszę o wytłumaczenia co mam połączyć (jakie zworki) w tym programatorze.

    0
  • #18 08 Cze 2012 22:00
    landy13
    Poziom 29  

    fasset napisał:

    Z programatora owszem idą 4 przewody (MOSI, SCK, RESET, MISO).

    Więc brak GND.
    Podłącz, a zworki zostaw na razie w spokoju.

    0
  • #19 08 Cze 2012 22:10
    fasset
    Poziom 13  

    landy13 napisał:
    fasset napisał:

    Z programatora owszem idą 4 przewody (MOSI, SCK, RESET, MISO).

    Więc brak GND.
    Podłącz, a zworki zostaw na razie w spokoju.


    Nie rozumiem. Przecież nie ma obowiązku zasilania układu z programatora. Zasilanie może być z zewnątrz. W tym przypadku z baterii. Wtedy minus baterii jest masą, do której podłączam nóżki GND.

    0
  • #20 08 Cze 2012 22:16
    landy13
    Poziom 29  

    fasset napisał:
    Przecież nie ma obowiązku zasilania układu z programatora. Zasilanie może być z zewnątrz. W tym przypadku z baterii. Wtedy minus baterii jest masą, do której podłączam nóżki GND.

    Zgadza się. Zasilać możesz z czego chcesz. Ale masy MUSZĄ być wspólne.

    0
  • #21 08 Cze 2012 22:21
    fasset
    Poziom 13  

    Ok spróbuje w ten sposób. Pozostaje kwestia wykonania, jakiś pomysł jak inaczej połączyć to do płytki stykowej? Rozciąć taśme?

    0
  • #22 08 Cze 2012 22:28
    landy13
    Poziom 29  

    fasset napisał:
    Pozostaje kwestia wykonania, jakiś pomysł jak inaczej połączyć to do płytki stykowej? Rozciąć taśme?

    Goldpiny jednym końcem do wtyczki a drugim do płytki.

    0
  • #23 08 Cze 2012 22:55
    fasset
    Poziom 13  

    Ok wielkie dzięki działa.
    Jeszcze jedna rzecz - ten mikrokontroler który mam to nie "czysta" 88 tylko 88PA.
    Po wpisaniu komendy:

    Code:
    avrdude c -usbasp -p m88 

    Otrzymuje:
    Code:

    Device signature = 0x1e930f
    Expected signature for Atmega88: 1E 93 0A


    Po komendzie dot. wgrania hexa otrzymue komunikat:
    "warning: cannot set sck period"

    0
  • #24 09 Cze 2012 00:28
    rakso1313
    Poziom 13  

    Tez miałem ten problem z Atmega328 trzeba dodać ten mikrokontroler do listy w pliku avrdude.conf na priv ci wyślę co potrzeba żeby zadziałało.

    0
  • #25 09 Cze 2012 10:14
    fasset
    Poziom 13  

    Ok, dzięki. Narazie zaprogramowałem Atmege16a. Wgrałem hexa, kod źródłowy:

    Code:

    #define F_CPU 1000000L
    #include <avr/io.h>
    #include <util/delay.h>

    int main(void)
    {   
       /* Wszystkie linie portu D będą wyjściami */
       DDRD = 0xFF;  /* 0xFF binarnie 1111 1111 */

       /* Początek nieskończonej pętli */
       while(1)
       {
          PORTD = 0xaa;    /* 0xaa binarnie 1010 1010 */
          /* opóźnienie 0.33 sek. */
          _delay_ms(330);
           PORTD = 0x55;    /* 0x55 binarnie 0101 0101 */
          /* opóźnienie 0.33 sek. */
          _delay_ms(330);
       }
    }

    Pojawił się komunikat o wgraniu pamięci flash.

    1 - Teoretycznie port D powinien wysyłać impulsy wysokie/niskie napięcie. Diody podłączone do portu D w ogóle nie migają. Jak to uruchomić odłączyć "RESET" i wyjścia programatora?
    2 - Czy po ponownym zapisie do pamięci flash, poprzedni program zostaje usunięty?

    Umieść kod za pomocą funkcji SYNTAX.
    Dar.El

    0
  • #26 09 Cze 2012 10:42
    gaskoin
    Poziom 38  

    fasset napisał:
    2 - Czy po ponownym zapisie do pamięci flash, poprzedni program zostaje usunięty?


    Tak

    0
  • #27 09 Cze 2012 10:56
    LordBlick
    VIP Zasłużony dla elektroda

    Zmień delay na 250 ms...

    0
  • #28 09 Cze 2012 12:20
    dondu
    Moderator Mikrokontrolery Projektowanie

    fasset napisał:
    Pozostaje kwestia wykonania, jakiś pomysł jak inaczej połączyć to do płytki stykowej? Rozciąć taśme?

    Tutaj masz jak zrobić odpowiednią wtyczkę: http://mikrokontrolery.blogspot.com/2011/04/plytka-stykowa-zasady.html

    fasset napisał:
    Ok wielkie dzięki działa.

    BTW. czytaj dokładniej co piszemy, bo 21h wcześniej pisałem:

    dondu napisał:
    Jeżeli mikrokontroler nie zasilasz z programatora pamiętaj o połączeniu mas.

    0
  • #29 13 Cze 2012 20:03
    fasset
    Poziom 13  

    Kod: c
    Zaloguj się, aby zobaczyć kod

    Na nóżce A0 jest napięcie 0.3V. Dlaczego mikrokontroler odczytuje ten stan jako wysoki i ustawią 4 najważniejsze bity portu D w stan wysoki? Teoretycznie diody powinny się świecić dopiero po zwarciu przycisku.

    0
  • #30 13 Cze 2012 22:36
    rakso1313
    Poziom 13  

    Podłącz diody na odwrót. Tez tak kiedyś miałem jak programowałem ARDUINO.

    0