Sari la conținut
ELFORUM - Forumul electronistilor

ATMega16 - ajutor


dorelb

Postări Recomandate

Pt. attiny2313, cel mai usor e sa folosesti cristal de quartz de 32.768 pentru clockul general.

Pentru novici, se poate codul ? Multumesc !
Sincer, nu prea am timp si maine plec in concediu. E ceva mai mult de modificat pentru attin2313 (pe la porturi).In principiu, trebuie sa configurezi attiny-ul sa mearga cu quartz extern de 32.768, decizi unde si cum vin legate afisajele, modifici codul corespunzator si timer-ul.
Link spre comentariu
  • Răspunsuri 68
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • dorelb

    33

  • godFather89

    13

  • fratello

    5

  • nickrvl

    1

Top autori în acest subiect

Imagini postate

Concediu placut tuturor. Si eu merg in concediu, dar am sa mai dschid forumul. @fratello . Daca vrei codul fara clock extern, pentru ATMega8 spune , sau astepti pana se rezolva tot . Am reusit sa blochez un ATMega .

Link spre comentariu

Fericitilor ! Toti plecati in concediu !!! CONCEDIU PLACUT, TUTUROR !!!========Ar fi interesant de postat aici codurile pentru ceasuri, cu display LED, cu Atmega8/Attiny2313 si cuart extern de 32768Khz, avand in vedere precizia buna care se poate obtine folosind aceasta modalitate.

Link spre comentariu

Acum lucrez la un fusebit doctor. Da, am inca trei ATMega8. Astept sugestii.@fratello . Ei, ce sa-i faci, asta e, este luna concediilor. Distractie placuta tuturor, si celor cu concediu, si celor fara concediu (momentan).

Link spre comentariu

Găsisem acum câţiva ani pe un site, parcă rusesc, un exemplu de cod pentru deblocare.

Ideea era că aveai un ATmega bun şi unul blocat. Le puneai pe breadboard şi făceai câteva legături între ele. Alimentai, apoi puneai 12V pe resetul celui blocat, în timpul ăsta MCU-ul bun scria câţiva octeţi în MCU-ul blocat şi reseta fusebits-ii.

 

Era şi un exemplu de cod pe care îl adaptasem pentru Atmega 8, şi a mers.

 

Din păcate, nu reuşesc să le mai găsesc, nici pe net, nici la mine. Am căutat o grămadă. Sunt sigur că am salvat proiectul, dar nu dau de el.

:84

 

L.E. L-am găsit! :dans:

//***************************************************************************//  File Name    : RecoverAVR.c//  Version      : 0.1//  Created      : 2010.10.26//  Description  : Recovering atmega MCU from bad fuses//                 inspired by http://www.artem.ru/cgi-bin/news?c=v&id=739//  Author       : RoGeorge//  Target       : ATmega8 fuses High=0xC9 Low=0xDE current settings//                         fuses High=0xD9 Low=0xE1 factory default//  Compiler     : avr-toolchain-installer-3.0.0.240-win32.win32.x86//  IDE          : AVRStudio4.18SP3//  Programmer   : PICkit 2 v2.32, PK2AVRISP v0.3, com0com v2.2.2.0, AVRISP//  Last Updated : 2010.10.26//***************************************************************************#include	<avr/io.h>#define		F_CPU 8000000UL#define		__HAS_DELAY_CYCLES 0	// if 1 or undefined then the _delay_ms()									// will use __builtin_avr_delay_cycles(m)									// which produces delays 4 times SHORTER!#include	<util/delay.h>#define X_XTAL1 1#define X_OE 2#define X_WR 3#define X_BS1 4#define X_XA0 5#define X_XA1 6#define X_BS2 7 int main() {	DDRD|=0b11111110;	_delay_ms(5000); 	// connect reset of bad chip to gnd now	// toggle xtal1 at lease 6 times	uint8_t	i;	for(i=0;i<8;i++){			PORTD|=_BV(X_XTAL1);		_delay_ms(10);		PORTD&=~_BV(X_XTAL1);		_delay_ms(10);	}	// set prog enable pins (pagel is gnd, xa0, xa1, bs1 - zero)	// PD4,PD5,PD6	PORTD&=~(_BV(X_XA0)|_BV(X_XA1)|_BV(X_BS1));	PORTD|=_BV(X_WR); // write disables		_delay_ms(5000);	// connect reset of bad chip to +12 NOW	// SET OE HIGH	PORTD|=_BV(X_OE);	DDRB=0xff;	// chip erase	//Set XA1 to 1, XA0 to 0. This enables command loading.	PORTD|=_BV(X_XA1);	PORTD&=~_BV(X_XA0);	// Set BS1 to “0”, BS1 - PD4	PORTD&=~_BV(X_BS1);	// Set DATA to command	PORTB=0b10000000;	//Give XTAL1 a positive pulse. This loads the command., XTAL1 - PD1	PORTD|=_BV(X_XTAL1);_delay_ms(10);PORTD&=~_BV(X_XTAL1);_delay_ms(10);	// Give WR a negative pulse. This starts the Chip Erase. RDY/BSY goes low.	PORTD&=~_BV(X_WR);_delay_ms(10);PORTD|=_BV(X_WR);_delay_ms(10);	// wait a bit	_delay_ms(1000);	// load default data for FUSE low byte			//Set XA1 to 1, XA0 to 0. This enables command loading.	PORTD|=_BV(X_XA1);	PORTD&=~_BV(X_XA0);	// Set BS1 to “0”, BS1 - PD4	PORTD&=~_BV(X_BS1);	// Set DATA to command	PORTB=0b01000000;	//Give XTAL1 a positive pulse. This loads the command., XTAL1 - PD1	PORTD|=_BV(X_XTAL1);_delay_ms(10);PORTD&=~_BV(X_XTAL1);_delay_ms(10);	// load data	PORTD&=~_BV(X_XA1);	PORTD|=_BV(X_XA0);	PORTB=0b11100001; // DEFAULT VALUE FOR LOW FUSE BYTE	PORTD|=_BV(X_XTAL1);_delay_ms(10);PORTD&=~_BV(X_XTAL1);_delay_ms(10);	// Set BS1 to “0” and BS2 to “0”.	PORTD&=~_BV(X_BS1);	PORTD&=~_BV(X_BS2);	// Give WR a negative pulse. This starts the Chip Erase. RDY/BSY goes low.	PORTD&=~_BV(X_WR);_delay_ms(10);PORTD|=_BV(X_WR);_delay_ms(10);	// load default data for HIGH low byte	//Set XA1 to 1, XA0 to 0. This enables command loading.	PORTD|=_BV(X_XA1);	PORTD&=~_BV(X_XA0);	// Set BS1 to “0”, BS1 - PD4	PORTD&=~_BV(X_BS1);	// Set DATA to command	PORTB=0b01000000;	//Give XTAL1 a positive pulse. This loads the command., XTAL1 - PD1	PORTD|=_BV(X_XTAL1);_delay_ms(10);PORTD&=~_BV(X_XTAL1);_delay_ms(10);	// load data	PORTD&=~_BV(X_XA1);	PORTD|=_BV(X_XA0);	PORTB=0b10011001; // DEFAULT VALUE FOR HIGH FUSE BYTE	PORTD|=_BV(X_XTAL1);_delay_ms(10);PORTD&=~_BV(X_XTAL1);_delay_ms(10);	// Set BS1 to “0” and BS2 to “0”.	PORTD|=_BV(X_BS1);	PORTD&=~_BV(X_BS2);	// Give WR a negative pulse. This starts the Chip Erase. RDY/BSY goes low.	PORTD&=~_BV(X_WR);_delay_ms(10);PORTD|=_BV(X_WR);_delay_ms(10);	// done	while(1);}

Caut şi schema (erau doar sârme).

Văd că link-ul din comentarii încă mai există, să văd ce scrie pe acolo, că nu mai ţin minte exact cum făcusem.

 

L.L.E.

Google translate zice că pinii se leagă aşa:

PB with atmega8 all goes to the PB atmega32 one to one

MCU bun - MCU blocat

PD2-PD6 - on the PD2-PD6

PD1 on the XTAL1

PD7 to PA0

E şi un film în care se arată şi se explică cum se foloseşte. LCD-ul nu-ţi trebuie.

!
Link spre comentariu

În loc de schemă, am găsit poza asta. În dreapta, pe coloana a 4-a, este un ATmega8 bun. Pe coloanele 2 şi 3 sunt legăturile pentru deblocat un ATmega 8 respectiv un ATmega32.

Pe prima coloană sunt denumirile semnalelor.

 

Posted Image

 

Se foloseşte aşa:

 

Pinul de RESET de la MCU-ul blocat îl vom numi "firul de RESET". Pentru început, firul de RESET nu se conectează, rămâne în aer.

 

Trebuie făcut aşa:

- Mai întâi, programezi MCU-ul bun cu codul de mai sus.

- Opreşti alimentarea, faci montajul, iar firul de RESET îl laşi în aer.

 

- Pe urmă, cu firul de RESET în aer, alimentezi breadboard-ul.

- Ai maxim 5 secunde să iei firul de RESET şi să îl pui la 0V.

- Aştepţi 5 secunde, apoi iei firul de RESET şi îl muţi de la 0V la +12V.

- Mai aştepţi 5 secunde, scoţi firul de RESET şi îl laşi în aer.

- Opreşti alimentarea.

 

Asta e tot, acum ar trebui să se fi deblocat.

Link spre comentariu

@RoGeorge. Salut . Nu pot sa-l deblochez . In schema data, la master prima pozitie este un led legat la masa ? Apoi PD7 de la SLAVE se leaga la masa MASTERULUI ? Si mai sunt doua pozitii : + si - , la MASTER nu apare nimic .

Link spre comentariu

Eeee, nu te uita doar la poze. :ciuda:

 

L.L.E.

Google translate zice că pinii se leagă aşa:

PB with atmega8 all goes to the PB atmega32 one to one

MCU bun - MCU blocat

PD2-PD6 - on the PD2-PD6

PD1 on the XTAL1

PD7 to PA0

Asta înseamnă

Pin MCU bun -> (-> adică se leagă la) Pin MCU blocat

------------

PB0 -> PB0

PB1 -> PB1

... şi tot aşa

PB7 -> PB7

 

PD1 -> XTAL1

 

PD2 -> PD2

... şi tot aşa

PD6 -> PD6

 

PD7 -> PA0

 

GND -> GND

VCC -> VCC

 

Restul pinilor îi laşi neconectaţi. Alte piese n-am pus.

 

La mine a mers.

Dacă nu-ţi iese, mai bine fă fusebit doctor-ul, pentru că odată făcut, îl ai pentru totdeauna.

Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări