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

atmega8, dziwny problem, nic nie działa

Bartusjusz 21 Lis 2010 15:17 2088 17
  • #1 8771513
    Bartusjusz
    Poziom 25  
    Wgrywam na atmegę, programator wyświetla, że ok(wcześniej rozpoznaje atmege), podłączam do baterii 4,5v(teraz około 4 pod obciążeniem) i nic nie działa wszystkie wyjścia dają około 0v ?!

    Co do słabej baterii, zgoda, ale atmega ze starym programem, działa stabilnie, a dwie świeżo zaprogramowane, nie reagują?!

    Program jest trywialny, bo kompletnie nie wiem w czym problem?

    Poniżej kod:

    #define F_CPU 1000000L
    #include <avr/io.h>
    #include <util/delay.h>
    
    unsigned int licznik;		
    unsigned int pomiar;		
    unsigned char i;			
    unsigned int wynik;			
    unsigned int a=0;
    unsigned int b=0;
    
    
    
    int main(void)
    {
    	
    	DDRC=0x00;		
    	PORTC=0x00;		
    	DDRB=0xFF;		
    	PORTB=0x0F;		
    	DDRD=0xFF;		
    	PORTD=0xF0;		
    		
    
    while(1)
    {
    
    PORTB=0x00;
    _delay_ms(1000); 
    PORTB=0x0F;
    _delay_ms(1000); 
    
    }
               
    }
  • #2 8771959
    mirekk36
    Poziom 42  
    Widzisz jakbyś stosował normalne i ludzkie programowanie ISP to już z marszu miałbyś mniej problemów tego typu. Jakbyś jeszcze pozbył się bateryjek na korzyść jakiegoś normalnego zasilania to byłoby jeszcze lepiej.

    A gdybyś jeszcze do tego powiedział jak dokładnie ty w ogóle programujesz te swoje atmegi to można byłoby nawet coś konkretnie pomóc ;)
  • #3 8772163
    Bartusjusz
    Poziom 25  
    Używam programator zgodny z STK500, więc ISP...
    Zasilanie owszem będę musiał zmienić, choćby dla pewności.

    A co programuję, to nieistotne, problemem jest, uzyskanie gdziekolwiek wysokiego stanu(atmega, nie daje znaku życia[poza programowaniem]).

    Na porcie D powinienem mieć kilka stanów wys i niskich, a na B migające diody.


    P.S.
    No chyba, że rzeczywiście zasilanie jest problemem, ale to wyeliminuję dopiero jutro.
  • #4 8772329
    mirekk36
    Poziom 42  
    Mówiąc o programowaniu ISP miałem na myśli to, że nie przekładasz procesora z układu do programatora i odwrotnie tylko, że podłączasz programator do swojego układu i w nim programujesz (chyba nie do końca wiesz jeszcze co oznacza ISP)

    Poza tym to bardzo ciekawy jestem dlaczego np już dzisiaj nie możesz rozwiązać swojego problemu z zasilaniem ;) skoro masz jakiś programator STK500v2 .... on zwykle ma zworkę, która umożliwia zasilanie układu docelowego pięknym i poprawnym napięciem +5V z USB - po co więc bawić się w jakieś bateryjki ????

    To co programujesz jest nieistotne i o to nie pytałem, prędzej pokazałbyś schemat tego co majstrujesz bo jak znam życie to zaczynając tę przygodę już w samych połączeniach być może robisz błędy.... Np w zasilianiu procka ;)
  • #5 8772367
    maniex
    Poziom 10  
    Być może stara atmega była w wersji L, a nowe już nie i wymagają 5V.
  • #7 8772673
    Bartusjusz
    Poziom 25  
    mirekk36
    1. Co do ISP, masz rację.
    2. Wolę nie ryzykować laptopa :)
    3. Co do schematu, to owszem, jest parę niedociągnięć, ale te parę sekund powinien pociągnąć bez filtracji?!

    maniex
    Wszystkie są zwykłe

    xury
    Ok, skoro tak naciskacie na filtrację to zaraz dolutuję...


    Edit:
    Vcc - ma kondensator
    Avcc - też, dodatkowo jest zwarte z Areff
    reset - podciągnięty do vcc prze 10kom
    kwarc - nie ma, używam wew. oscylatora

    Dodatkowo z 4 wy. atmegi idę na dekoder adresowy, ale to już nie istotne, ważne ,że nigdzie nie mam napięcia(poza tym co sam podaję kablem)

    Edit2:
    Ale wiele razy podłączałem samo Vcc, Gnd i zwykłe we/wy działały, czyżbym zabił atmegę? Ale nawet jeśli, to programator nie powinien jej rozpoznać/ zaprogramować.
  • #9 8772970
    Bartusjusz
    Poziom 25  
    Nie dotykałem fusebitów, ale mogę sprawdzić.

    Ogólnie odlutowałem, wszystkie przystawki od atmegi, zostały tylko podciągnięcia, filtracje, a stany pinów sprawdzam multimetrem.

    Sprawdzone, screeny poniżej:

    atmega8, dziwny problem, nic nie działa atmega8, dziwny problem, nic nie działa atmega8, dziwny problem, nic nie działa atmega8, dziwny problem, nic nie działa
  • #10 8773372
    tehaceole

    Poziom 28  
    bartusjusz - ja używam USBAsp i AVRDragon (przeważnie w trybie ISP). Z tego co zauważyłem u siebie to ptzy wewnętrznym oscylatorze 1MHz atmegi8 nie chcą mi się poprawnie programować. Nawet jeśli użyję opcji slowsck. Myślałem, że to wadliwy egzemplarz,ale testowałe kilka różnych ósemek: dip,smd, z różnymi literami w oznaczeniu i zawsze miałem to samo dla internal 1MHz. Spróbuj ustawić wyższe taktowanie i wtedy zaprogramować. No i oczywiście pozbyj się tej nieszczęsnej bateryjki :)
  • #11 8773475
    mirekk36
    Poziom 42  
    tehaceole napisał:
    bartusjusz - ja używam USBAsp i AVRDragon (przeważnie w trybie ISP). Z tego co zauważyłem u siebie to ptzy wewnętrznym oscylatorze 1MHz atmegi8 nie chcą mi się poprawnie programować. Nawet jeśli użyję opcji slowsck. Myślałem, że to wadliwy egzemplarz,ale testowałe kilka różnych ósemek: dip,smd, z różnymi literami w oznaczeniu i zawsze miałem to samo dla internal 1MHz.


    A ty spróbuj użyć odpowiedniej wersji avrdude z możliwością programowego ustawiania taktowania ISP w trakcie programowania. A jeśli nie wiesz jak dokładnie to co za problem wziąć program MkAvrCalculator, który ma wbudowaną obsługę na stałe i nie potrzeba nigdy w życiu już zworki SLOWSCK używać, a zaprogramujesz każdego procka ;) nawet taktowanego kwarcem 32768.

    Prędkość ISP można w MkAvrCalculator wybrać z rozwijanego pola. Dla procków ATmega8 działa w pełni za free (zresztą nie tylko dla tych procków) więc można sprawdzić.
  • #12 8773554
    tehaceole

    Poziom 28  
    mirekk36 - USBAsp to był tylko przykład. Jak on mi jakiegoś proca nie gryzie to traktuję takiego delikwenta Dragonem. Najpierw w ISP, jak to nie pomoże to programowanie równoległe. I dziwi mnie, że już kilka razy spotkałem się z czymś takim co opisałem.
  • #13 8773633
    mirekk36
    Poziom 42  
    tehaceole napisał:
    mirekk36 - USBAsp to był tylko przykład. Jak on mi jakiegoś proca nie gryzie to traktuję takiego delikwenta Dragonem. Najpierw w ISP, jak to nie pomoże to programowanie równoległe. I dziwi mnie, że już kilka razy spotkałem się z czymś takim co opisałem.


    Ja się nie dziwię, bo wiem o co chodzi. Polecam poczytać dobrze o dziłaniu USBASP albo przejrzeć sobie źródła programu ;)

    Po drugie już mówiłem - każdy procesor - KAŻDY można zaprogramować za pomocą USBASP , ja nie mam Dragona i jakoś żyję a gwarantuję ci że sporo procków przeszło przez moje łapki.

    A już żeby nowego procka z fabryki niby nie można było inaczej jak programatorem równoległym zaprogramować to sorki ;) albo coś źle cię zrozumiałem albo totalnie coś źle robisz i przez to takie niestworzone historie opisujesz.

    Jeszcze raz powtórzę, jak znajdziesz takiego procka ATmega8, który nie chce ci się zaprogramować w typowy sposób jak to zwykle robisz "jakoś tam" to zassaj "MkAvrCalculator" i sprawdź - wtedy może uwierzysz że jeśli chodzi o każdy nowy procek można sobie poradzić bez AVRDragona ;)

    No a po programator równoległy to można sięgać jak już się chce przestawiać fuski uniemożliwiające programowanie ISP.
  • #14 8773696
    tehaceole

    Poziom 28  
    mirekk36 - nie do końca mnie zrozumiałeś. Problem który opisałem występował u mnie tylko w mega8, w żadnych innych. USBAsp to amatorski programator, dlatego gdy nie daje rady sięgam po dragona. I tutaj też niespodzianka bo również dragon nie chciał tych procków ruszyć po ISP. Sytuacja występuje tylko i wyłącznie wtedy gdy mam ustawiony wewnętrzny rezonator 1MHz.

    W Dragonie mam możliwość zmiany f ISP w szerokim zakresie - teoria mówi, że powinno to pomóc, w praktyce nie pomagało. I dopiero wtedy pacjentów reanimowałem programowaniem równoległym. Po przestawieniu na wyższe taktowanie znów wszystko wracało do normy.
  • #15 8773771
    mirekk36
    Poziom 42  
    Ale o jakiej ty reanimacji mówisz - nowych procków z fabryki??? wybacz mi ale to niedorzeczność. Poza tym każdy procek ATmega8 po narodzeniu w fabryce taktowany jest wewnętrznym - tyle że nie rezonatorem a oscylatorem. Więc skąd by niby miało się wziąć takie cudowne zjawisko, że jedne ci się programują a inne nie ??? Czyżby wg ciebie te, które udaje ci się zaprogramować (takie z fabryki) na usbasp mają rzekomo ustawione inne taktowanie wewnętrznego oscylatora niż 1MHz ??? zastanów się nad tym proszę.

    Po drugie za bardzo uwierzyłeś albo może przykładasz wagę do "profesjonalności" programatorów ;) .... to nie od profesjonalności programatorów zależy czy uda ci się procka zaprogramować za pomocą USBASP czy chociażby STK200 albo nawet kilku rezystorów na LPT.

    Jeśli zatem mówisz mi tu tylko o nowych procesorach, świeżo kupionych czy też nigdy wcześniej nie programowanych przez nikogo - to ja jeszcze raz ci powiem. NIE WAŻNE czy użyjesz USBASP czy STK200 czy SI Prog czy innego dowolnego programatora to ZAWSZE można go zaprogramować ;)

    Poza tym ja nie mówię ci o teorii - tylko wspominam - zajrzyj w źródła USBASP - są przecież otwarte, wtedy zrozumiesz o czym mowa - jeśli chodzi o możliwości takiego czy innego programatora.

    Nie ma więc takiego pojęcia że jak coś nie pomaga to sięgam po AVR Dragon'a a jak nadal nie to po tryb równoległy dla procków z fabryki. COŚ ŹLE ROBISZ. I bardzo się dziwię, że tak się bronisz przed sprawdzeniem tego - przecież to by ci tylko pomogło.

    Nie wysnuj tylko broń boże z moich wypowiedzi, jakobym twierdził że AVR Dragon jest "beee". Na pewno jest bardzo przydatny jeśli już go masz - od nadmiaru programatorów głowa nie boli ;)

    Reasumując jeszcze raz powtórzę, jak spotkasz na swojej drodze życiowej znowu takiego procka z fabryki, którego nie możesz zaprogramować swoim USBASP to zanim sięgniesz po inne tajne metody - sprawdź proszę MkAvrCalculator oraz wersję AVRDUDE jaka jest w nim zawarta. Zobaczysz jako się posługiwać nawet samym AVRDUDE bez konieczności posiadania nawet MkAvrCalculatora także dla innych procków. Chodzi o paramter -B xx , gdzie xx oznacza prędkość taktowania SPI. Dzięki czemu nie trzeba majstrować przy zworce SLOWSCK.
  • #16 8773916
    Bartusjusz
    Poziom 25  
    Czyli jak rozumiem, nie działa bo się nie programuje, unable, znaczy, że nie potrafi, ok, jeden problem mniej(sporo czasu minęło od kiedy ostatnio programowałem...).

    Zatem co mam zrobić, zmniejszam taktowanie, zwiększam, ale poprawy nie widać.

    Czyli co mam zainstalować MkAvrCalculator, żeby mi obliczył prędkość ISP?
  • #18 8777480
    Bartusjusz
    Poziom 25  
    Działa:
    Udało mi się zaprogramować atmegę.

    Jak to zrobiłem:
    Odpaliłem starszy projekt i zadziałał, jak się okazało z góry zakładałem, że program ustawia domyślnie ścieżkę z zapisem do projektu który właśnie używam, a się okazuje, że nie, po zmianie ścieżki zaprogramowałem program z nowego projektu i też działa :)
REKLAMA