Skocz do zawartości
Anek40

Czy program w j.C zablokuje Attiny2313A

Pomocna odpowiedź

Napisano (edytowany)

Wgrałem do Attiny 2313A poniższy kod ,gdy chciałem go skasować poleceniem erase nie skasował się  ten kod,mimo kilku prób skasowania.

Miałem to samo na Attiny 13A ,ale po kilku próbach dania erase,i wyłączenia włączenia komputera, program się skasował,odzyskałem tą Attiny13A.

Czy da rady odblokować  tą Attiny 2313A ? jak ?

kod:

#include <avr/io.h>  
#include <util/delay.h>  
#include <inttypes.h>  
#include <util/atomic.h>  
  
#define CLKDF_1  (0<<CLKPS3)|(0<<CLKPS2)|(0<<CLKPS1)|(0<<CLKPS0)  
#define CLKDF_2  (0<<CLKPS3)|(0<<CLKPS2)|(0<<CLKPS1)|(1<<CLKPS0)  
#define CLKDF_4  (0<<CLKPS3)|(0<<CLKPS2)|(1<<CLKPS1)|(0<<CLKPS0)  
#define CLKDF_8  (0<<CLKPS3)|(0<<CLKPS2)|(1<<CLKPS1)|(1<<CLKPS0)  
#define CLKDF_16 (0<<CLKPS3)|(1<<CLKPS2)|(0<<CLKPS1)|(0<<CLKPS0)  
#define CLKDF_32 (0<<CLKPS3)|(1<<CLKPS2)|(0<<CLKPS1)|(1<<CLKPS0)  
#define CLKDF_64 (0<<CLKPS3)|(1<<CLKPS2)|(1<<CLKPS1)|(0<<CLKPS0)  
#define CLKDF_128 (0<<CLKPS3)|(1<<CLKPS2)|(1<<CLKPS1)|(1<<CLKPS0)  
#define CLKDF_256 (1<<CLKPS3)|(0<<CLKPS2)|(0<<CLKPS1)|(0<<CLKPS0)  
#define CLKDF_512 (1<<CLKPS3)|(0<<CLKPS2)|(0<<CLKPS1)|(0<<CLKPS0)   
#define CLKDF_1024 (1<<CLKPS3)|(0<<CLKPS2)|(0<<CLKPS1)|(0<<CLKPS0) 
#define CLKDF_2048 (1<<CLKPS3)|(0<<CLKPS2)|(0<<CLKPS1)|(0<<CLKPS0)   
void clock_prescaler_select(uint8_t division_factor);  
  
int main(void)  
{  
 DDRB = (1<<PB3)|(1<<PB4);
 PORTB|=(1<<PB3);  
 
   
  
 while(1)  
 {  
  clock_prescaler_select(CLKDF_1024);     //ustaw preskaler F_CPU na 1024  
                                       //czyli praca z 4MHz  
  for (uint8_t i=0;i<20;i++)  
  {  
   _delay_ms(4000);                     //okres migania diody LED ok. 64s  
   
   PORTB ^= (1<<PB3)|(1<<PB4);  
  }  
  clock_prescaler_select(CLKDF_1024);     //ustaw preskaler F_CPU na 8  
                                       //czyli praca z 1,2MHz  
  for (uint8_t i=0;i<20;i++)  
  {  
   _delay_ms(4000);                     //Okres migania diody LED ok. 64s  
    PORTB ^= (1<<PB3)|(1<<PB4); 
  }    
 }  
}  
  
void clock_prescaler_select(uint8_t division_factor)  
{  
 ATOMIC_BLOCK(ATOMIC_RESTORESTATE)  
 {  
  CLKPR = (1<<CLKPCE);  
  CLKPR = division_factor;  
 }  
}  

 

Edytowano przez Anek40

Udostępnij ten post


Link to post
Share on other sites

Program nie zablokuje (pomijam rzadko spotykane w sytuacji małych uC bootloadery) ale złe ustawienie fuse tak. Jak został włączony DW to bez programatora HV nic nie da się zrobić 😞

 

Albo RST DISABLE 😞

 

Udostępnij ten post


Link to post
Share on other sites
4 godziny temu, Anek40 napisał:

Miałem to samo na Attiny 13A ,ale po kilku próbach dania erase,i wyłączenia włączenia komputera, program się skasował,odzyskałem tą Attiny13A.

To zacznij od wymiany kabelka od programatora albo spróbuj go poprawić, wyraźnie coś nie łączy lub co gorzej łączy niepoprawnie.  Jeśli nie kombinowałeś nic c lock bitami to nie powinno się nic zablokować.

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Inne Attiny 2313A działają,boję się wgrać ten program do innej Attiny2313a i innych uC aby nie uwalił tak jak tą Attiny 2313A.

Program na tej uwalonej Attiny działa,tylko nie da się skasować ,

Program mkAVR nie widzi tej Attiny.

Gdzie można kupić programator  programatora HV ,ile kosztuje.

RFM napisał :" Jak został włączony DW " ,co to znaczy.

RFM napisał :"Albo RST DISABLE": co to znaczy

Edytowano przez Anek40

Udostępnij ten post


Link to post
Share on other sites
(edytowany)
Dnia 12.11.2019 o 22:20, Anek40 napisał:

RFM napisał :" Jak został włączony DW " ,co to znaczy.

RFM napisał :"Albo RST DISABLE": co to znaczy

DW to pewnie chodzi o debugWire - punkt 18 w dokumentacji attiny.

RST DISABLE to też taki bit, który można tak ustawić, że nie ma resetu (jak sama nazwa wskazuje :D) (w załączniku)

Ale pewnie z fusebitami się nie bawiłeś. Skoro program się wykonuje to jak zrobisz reset (zwierasz ten pin tak jak guzik) to program się resetuje?

+ czy program się wykonuje tak jak powinien? Może taktowanie gdzieś przekręciłeś

obrazek.PNG

Edytowano przez BananWszyscy

Udostępnij ten post


Link to post
Share on other sites

Program działa poprawnie , program nie chce się skasować (erase) ,Attiny 2313A niechce się erase .

Program mkAVRCalculator ,nie wykrywa Attiny 2313A.

Podaję obrazki co pokazuje Extreme burner i progisp.

Który pin  zewrzeć (jaki numer) i do czego ,do innego pinu ? (jaki numer) i zewrzeć  na jak długo ?.

ERASE 1.gif

ERASE 2.gif

ERASE 3.gif

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Z tego co pamiętam, to na resecie jest podciągnięcie na stan wysoki, czyli trzeba go zewrzeć do masy, żeby zresetować uc

Czyli wg załącznika 1 z 10.

Przechwytywanie.JPG

Edytowano przez BananWszyscy

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Jak długo trzeba mieć złączone  pin 1 z pin 10

Jak połączę  pin 1 z pin 10 to programu nie ma ,  i nie daje się erasetować  przy złączonych  1 i 10 i rozłączonych.

Jak odłączę od siebie 1 i 10 to program znowu się pojawia i nie można go zmazać erasem.

Edytowano przez Anek40

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Chip chip Hura !!!! hura !!! udało się odblokowałem Attiny 2313A ,wielkie dziękiuję dla RFM i BananWszyscy.

Atiyny się dała erastować i wgrać inny program.

Za drugim razem zrobiłem to inaczej jak za 1 razem i być może dlatego się powiodło.

I teraz pytanie czy ten program zablokował Attiny?

Proszę o poradę  jak to zrobić z Atmega 328P i Atmega 8A ,Attiny 13A

 

Edytowano przez Anek40

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Skoro program się zatrzymywał i się włączał ponownie od początku po rozwarciu to znaczy, że reset działał, bo jak zwarłeś te piny i zostawiłeś to się ciągle resetował. Powiedz co zrobiłeś inaczej za drugim razem + sprawdź, czy przy podłączeniu programatora na pinie resetu masz 5V

Edytowano przez BananWszyscy

Udostępnij ten post


Link to post
Share on other sites
(edytowany)

Na pinie 10 i 1 ,jest 4.70 Volt i to się waha raz w górę raz w dół.

Udało mi się przez przypadek ,za pierwszym razem robiłem to przy włączonym komputerze kilka razy bez rezultatu.

Zniechęcony wyłączyłem komputer poszedłem spać.

Rano myślę spróbuje znowu,zwarłem styki 1 i 10 ,włączyłem komputer ,przy zwartych pinach dałem erase i się skasowało.

Czyli chyba  trzeba wyłączyć komputer z sieci  około 220 Volt ,aby się powiodło.

Mam nowy problem i proszę o pomoc,kilka miesięcy temu zablokowałem Attiny 2313A chyba poprzez danie fusybitów na wewnętrzny oscylator 128KHz podzielony  wewnętrznym podziałem  zegara przez 8.

Czy można ją odblokować ,jak ?

 

 

Edytowano przez Anek40

Udostępnij ten post


Link to post
Share on other sites

Dołącz do dyskusji, napisz odpowiedź!

Jeśli masz już konto to zaloguj się teraz, aby opublikować wiadomość jako Ty. Możesz też napisać teraz i zarejestrować się później.
Uwaga: wgrywanie zdjęć i załączników dostępne jest po zalogowaniu!

Gość
Dołącz do dyskusji! Kliknij i zacznij pisać...

×   Wklejony jako tekst z formatowaniem.   Przywróć formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Twój link będzie automatycznie osadzony.   Wyświetlać jako link

×   Twoja poprzednia zawartość została przywrócona.   Wyczyść edytor

×   Nie możesz wkleić zdjęć bezpośrednio. Prześlij lub wstaw obrazy z adresu URL.


×
×
  • Utwórz nowe...