atmega16 problem LÖST

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Jag vill ju inte göra något när det sker ett interrupt.

OK, jag förstår, detr är därför som ISR(ADC_vect), {, } är helt tomt ?
Du kanske (i alla fall för felsökningen) kan lägga *någonting* där.
Vissa kompilatorer optimerar bort helt tomma kodblock...

Och, som SvenW sa, kolla LST filen så att du säkert *vet* vad det är
för kod som du faktiskt kör...
SvenW
Inlägg: 1156
Blev medlem: 24 april 2007, 16:23:10
Ort: Göteborg

Inlägg av SvenW »

"2. Hur ser jag optimeringsflaggan? "

I gnu-systemet: i 'Makefile' i CFLAGS.
Eventuellt indirekt via $(OPTLEVEL)
exempel:
OPTLEVEL=-O2
Hur det är i avr-studio vet jag inte.
jyrgen
Inlägg: 84
Blev medlem: 11 juli 2006, 20:24:54
Ort: Västerås

Inlägg av jyrgen »

Nu har jag äntligen hittat felet även fast jag har lite funderingar kring det. Jag har iaf bytt ut en 10uF kondensator som sitter mellan vcc och gnd mot en 100uF. Vad är det då som hänt när jag hade den lilla kondensatorn i eftersom allt fungerade när jag inte hade avståndssensorn ikopplad så kan den la inte vara trasig? Kan då någon förklara vad det är som händer för jag antar att det blev kortslutning som då resetade processorn hela tiden. Är jag på rätt spår?

Då direkt över på nästa problem. Vill ha en enkel delay och tänkte använda den färdiga delay.h. Problemet är att oavsett vad jag skriver in i funktionen så blinkar dioderna med cirka 100ms intervall. vad kan jag gjort för fel då?

Kod: Markera allt

#include <util/delay.h>



	while(1)
	{
		PORTD &= 0b10000111;			//Tänder lysdioderna
		_delay_ms(5000);
		PORTD |= 0b01111000;			//Släcker lysdioderna
		_delay_ms(5000);
	}
Användarvisningsbild
cykze
EF Sponsor
Inlägg: 1539
Blev medlem: 8 april 2004, 10:40:28
Ort: Uppsala

Inlägg av cykze »

1. Man brukar köra med en lite mindre konding på ca 100nF mellan Vcc och Gnd så nära digitala kretsar som möjligt. Har du en sån?


2. Mycket möjligt att kretsen reset:ar pga dåligt matningsspänning. Det kan kan vara bra att t ex blinka någon LED under uppstarten så att man tydligt märker när AVR:en startar om.


3. Om du kollar i delay.h eller avr-libc-manualen (borde stå där) så ser du att delay_ms() har en övre gräns för hur långa delays den kan göra. Fråga mig inte varför...
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Inlägg av sodjan »

> Vad är det då som hänt när jag hade den lilla kondensatorn i...

Jag vet inte om det har framgått vad du matar det hela ifrån, men
det låter som om du drar för mycket ström för att en 10 uF konding
ska orka hålla det hela uppe. Så, vad matas det hela från ?

> _delay_ms(5000);

http://www.nongnu.org/avr-libc/user-man ... delay.html
jyrgen
Inlägg: 84
Blev medlem: 11 juli 2006, 20:24:54
Ort: Västerås

Inlägg av jyrgen »

Har gjort lite rösök med den här delayen men inte lyckats så behöver nog lite mer hjälp.

"The maximal possible delay is 262.14 ms / F_CPU in MHz." Har tittat i databladet efter klockfrekvensen på min processor men det enda jag hittade var "Speed Grade 0 - 8 MHz for ATmega16L". Jag har en ATmega16L kan tilläggas. Hur vet jag vilken klockfrekvens processorn går på som då också F_CPU ska sättas till.

Hur gör jag för att få längre delayer än en sekund? borde detta t ex bli en sekunds delay?

Kod: Markera allt

	while(1)
	{
		PORTD &= 0b10000111;			//Tänder lysdioderna
		for(int j=0;j<100;j++)
		{
			_delay_ms(10);
		}
		PORTD |= 0b01111000;			//Släcker lysdioderna
		for(int j=0;j<100;j++)
		{
			_delay_ms(10);
		}
	}
Om jag kör denna kod så får jag en delay på 16 sekunder oavsett vad jag sätter F_CPU till.
thepirateboy
EF Sponsor
Inlägg: 2109
Blev medlem: 27 augusti 2005, 20:57:58
Ort: Borlänge

Inlägg av thepirateboy »

Klockfrekvensen för MCU:n ställer du in med Fuses, default är 1 MHz. Använder du AVR-studio ställer du in F_CPU under Project - Config Options. Denna inställning hamnar i makefilen, antagligen har du felet där.

Delayen bör bli lite mer än 1 sekund med rätt inställningar.
jyrgen
Inlägg: 84
Blev medlem: 11 juli 2006, 20:24:54
Ort: Västerås

Inlägg av jyrgen »

Japp var fel i makefilen. Nu funkar det! Tackar!
Skriv svar