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

[Atmega16] Porty nie zmieniają stanu na wysoki przy programowaniu USBasp

MurderDoll 07 Lut 2010 21:11 1611 14
REKLAMA
  • #1 7659741
    MurderDoll
    Poziom 10  
    Posty: 36
    Witam.

    Programuję Atmega16 programatorem USBasp. Mój program wygląda następująco:

    
    #include <avr/io.h>
    	  
    int main() {
    
    	DDRA = 0xFF;
    	
    	while(1){
    		PORTA |= _BV(0);
    	}
    }
    
    


    Wrzucam program do mC i port nie zmienia swojego stanu na wysoki. Sprawdzam miernikiem i jest 0V. To samo jest dla innych pinów tego portu oraz innych portów. Co może być przyczyną?

    PS. Programuję układ ze zwartą zworką Slow SCK.

    Pozdrawiam.
  • REKLAMA
  • #3 7660043
    MurderDoll
    Poziom 10  
    Posty: 36
    Niestety to samo.
    Na pinie 0 portu A mam na wyjściu 0,05V
  • REKLAMA
  • #4 7660467
    lucas_mcs
    Poziom 22  
    Posty: 422
    Pomógł: 57
    Ocena: 18
    Zasilanie masz?
    W projekcie odpowiedni procesor, zegar, fusebity?

    PORTA = 0xFF; ?

    Inne porty sprawdzałeś?

    Jesteś 100% pewny ze uklad sie programuje?

    Mozesz sciagnać zawartość flasha i porownać z hexem ktory powstal w wyniku kompilacji?
  • REKLAMA
  • #5 7660944
    MurderDoll
    Poziom 10  
    Posty: 36
    Zasilanie mam na 100%. Sprawdzam miernikiem nóżki 10 i 11. Jest 5V.

    lucas_mcs napisał:

    PORTA = 0xFF; ?


    Sprawdzałem tak już. Na żadnym pinie nie mam stanu wysokiego.

    Zegar = domyślna częstotliwość.

    Fuse Bits zamieszczone poniżej

    [Atmega16] Porty nie zmieniają stanu na wysoki przy programowaniu USBasp

    Gdy próbuję odczytać zawartość pamięci programu (Flash) program się zawiesza na dłuższą chwilę po czym pokazuje błąd. Przedstawione poniżej.

    [Atmega16] Porty nie zmieniają stanu na wysoki przy programowaniu USBasp

    W czym może być problem?
  • #6 7661587
    mj_2000
    Poziom 15  
    Posty: 155
    Pomógł: 17
    Ocena: 7
    W tej chwili nie masz pewności, że układ się w ogóle zaprogramował. Spróbuj innym programem / programatorem.
  • #7 7661623
    polprzewodnikowy
    Poziom 26  
    Posty: 985
    Pomógł: 54
    Ocena: 225
    Cytat:
    Gdy próbuję odczytać zawartość pamięci programu (Flash) program się zawiesza na dłuższą chwilę po czym pokazuje błąd. Przedstawione poniżej.


    Próbujesz zapisać plik Intel HEX w plik który nie jest Intel HEX'em (mimo że rozszerzenia są takie same) więc Avrdude wyrzuca błąd.
  • #8 7661625
    MurderDoll
    Poziom 10  
    Posty: 36
    A dlaczego nie mogę odczytać pamięci programu do pliku?
  • #9 7661635
    polprzewodnikowy
    Poziom 26  
    Posty: 985
    Pomógł: 54
    Ocena: 225
    Czytaj komunikaty w Avrdude po "Reading | ######..."

    Cytat:
    avrdude.exe: invalid output file format: -1


    Zapisujesz flasha do złego pliku (musisz zapisać do Intel HEX'a żebyś mógł go odczytać).
  • #10 7661641
    MurderDoll
    Poziom 10  
    Posty: 36
    mj_2000 napisał:
    Spróbuj innym programem

    Jaki polecasz?

    Jak zapisać do Intel HEX'a pamięć programu w inny sposób?
  • #11 7661656
    polprzewodnikowy
    Poziom 26  
    Posty: 985
    Pomógł: 54
    Ocena: 225
    Najprościej będzie skompilować jakiś kod do HEX'a (może być i ten co podałeś w pierwszym poście ale zapisz go pod inną nazwą) i spróbój zapisać to co odczytał Avrdude z ATmegi do tego pliku
  • REKLAMA
  • #12 7662203
    zumek
    Poziom 39  
    Posty: 3352
    Pomógł: 695
    Ocena: 52
    polprzewodnikowy napisał:
    Najprościej będzie skompilować jakiś kod do HEX'a...

    Najprościej, to kierować się zdrowym rozsądkiem :)
    Autor tematu, próbuje zapisać dane z pamięci programu do pliku, który jeszcze nie istnieje , a typ pliku jest ustawiony na AUTO. Skąd biedny avrdude ma wiedzieć jaki to typ pliku, skoro ten plik jeszcze nie istnieje :?:
    To tak na marginesie.
    Jeżeli chcemy zapisać dane z flasha/eepromu do nowego pliku, musimy wybrać typ pliku.
    Jeżeli chcemy danymi z flasha/eepromu nadpisać jakiś plik, to wtedy możemy ustawić typ pliku na auto.
    To tyle :)

    PS
    Próba zapisu do istniejącego, ale "pustego" pliku, również zakończy się niepowodzeniem, jeśli to zrobimy w trybie auto.
  • #13 7665980
    MurderDoll
    Poziom 10  
    Posty: 36
    Układ się programuje. Zgrałem pamięć Flash do obrazu po wgraniu innych programów i odkryłem, że pliki są różne.

    Gdzie teraz należy szukać?
  • #14 7677024
    mj_2000
    Poziom 15  
    Posty: 155
    Pomógł: 17
    Ocena: 7
    Kurcze, nie bardzo rozumiem. Twoją ostatnią wypowiedź. Możesz jaśniej? Pliki są takie same, czy różne?
  • #15 7677272
    MurderDoll
    Poziom 10  
    Posty: 36
    Rzeczywiście namieszałem troche :) Już post jest poprawiony.

    Dodam że kupiłem nową Atmega16 i wszystko się ładnie zaprogramowało. Chciałem się dowiedzieć jakie objawy wykazuje spalona/uszkodzona Atmega16 (jeżeli oczywiście można to w jakiś sposób określić).

Podsumowanie tematu

✨ Użytkownik programuje mikrokontroler Atmega16 za pomocą programatora USBasp, jednak porty nie zmieniają stanu na wysoki, co skutkuje pomiarem 0V na pinach. Po kilku próbach i sugestiach dotyczących kodu oraz ustawień, użytkownik potwierdza, że zasilanie jest prawidłowe, a zegar działa na domyślnej częstotliwości. Problemy z odczytem pamięci Flash oraz błędy w Avrdude sugerują, że układ mógł być uszkodzony. Po zakupie nowego Atmega16, programowanie przebiegło pomyślnie, co skłoniło użytkownika do poszukiwania objawów uszkodzenia mikrokontrolera.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA