Sida 3 av 11

Postat: 25 augusti 2004, 15:49:19
av Hedis
USB:n skall kunna leverera 500mA.

Skulle inte tro att din avr har brunnit. Man brukar kunna misshandla dom ganska så hårt innan dom tackar för sig.

Vad för schema har du följt när du byggde?

Postat: 27 augusti 2004, 14:26:11
av Virr3
jag byggde efter detta chemat Bild

sen så har jag en In-Circuit Program Downloader http://www.futurlec.com/ATMegaControlBoard.shtml

så ser den ut. har bytt diod nu och den har inte brunnit änsålänga iaf.. visseligen har jag inte provat att ha avr:en på sammtidigt men..(endast sockeln)
ska kolla igenom allt en sista gång snart och testa med avr:en..
men vet inte riktigt jur jag ska testa om den funkar..
någon som kan ge ett kodexempel i c och besriva vad som händer?

Postat: 27 augusti 2004, 16:00:44
av cykze
Om du kollar i mapparna där WinAVR installerades så borde du hitta lite exempelkod.

Postat: 27 augusti 2004, 16:05:40
av Virr3
det fanns två som jag inte fattar ett skit av:S

Postat: 27 augusti 2004, 16:39:49
av cykze

Kod: Markera allt

#include <avr/io.h>
#include <avr/delay.h>
#include <inttypes.h>

// Inkluderar lite header-filer som behövs
// io.h innehåller bl a värdet för PORTB
// delay.h innehåller funktionen _delay_loop_2()
// inttypes.h innehåller olika typer. T ex:
//		uint8_t - unsigned char 8-bit  (0 - 255)
//		int8_t  - signed char 8-bit    (-128 - 127)
//		uint16_t - unsigned int 16-bit (0 - 65535)

int main()
{
	uint16_t i; // Deklarerar en variabel för loopen nedan. 16-bitars eftersom
				// 8 bitar blir för litet för värdet 500 i for-loopen.

	DDRB = 0xFF; // Sätter alla bitar i DDRB till 1 vilket gör så att alla
	             // pinnar på PORTB blir utgångar
	
	
	while (1) // Startar en evighetsloop. Programmet kommer loopa genom den
			  // den här loopen så länge AVR:en är igång
	{
		PORTB ^= 0xFF; // Växlar värdet på PORTB. Dvs ett värde på 0xFF
					   // på hela PORTB ger 0x00 på PORTB. Och 0x00 ger 0xFF
		
		for (i=0;i<500;i++)
		{
			_delay_loop_2(1000); // 1000 motsvarar 1000*4 klockcykler. Vid
			                     // 4 MHz motsvarar det 1000 µs. Loopar vi det
								 // 500 gånger så motsvarar det 1/2 sekund.
		}
	} // Går tillbaka till while (1) igen...

	return 1; // Kommer aldrig att köras eftersom programexecveringen aldrig
			  // lämnar while-loopen.
}
Koppla anoden på lysdioden till +5V (eller vad du nu kör för matningsspänning) och katoden till valfri PORTB-pinne på AVR:en. Glöm inte att du måste ha ett motstånd i serie också (runt 330 ohm, om det är en vanlig lysdiod). Antingen mellan katoden och AVR:en eller mellan anoden och +5V.

Säkert en hel del du inte förstår just nu, men se om du lyckas kompilera det och skicka över till AVR:en först.

edit: 1000µs inte 4000µs som jag skrev förut i kommentaren
edit2: ändring av int8_t

Postat: 27 augusti 2004, 20:24:25
av Virr3
ett jätte tack cykze..

en sak bara..
det står inte på schemat men..
jag har satt en resonator istället på pin 11,12 och 13..
men jag har ingen trimpotentiometer så jag undrar hur jag ska göra? ska ja kloppla 5v och jord till 30 och 31 eller? jag menar att jag bara hoppar över potentiometern som om de vore vbanlig kopplingstråd bara? eller ska ja skita i de helt?

Postat: 27 augusti 2004, 20:41:13
av Hedis
Vilken avr kör du med? den kanske har intärn klockning?

Det skall allt fungera fint o köra med resonator. Då skall den också kopplas som du skrev.
Döremot vet jag inte riktigt om man behöver ändra klocksettings för processorn. Men det märker du om det fungerar. Om den inte klockas riktigt så kommer du heller inte åt den med programmeraren.

Aref behöver du endast om du skall köra med analog mätning. (A/D-omvandlare)
Så kör du +5v till 30 och 32. Jorda 31.

Postat: 27 augusti 2004, 20:59:02
av Virr3
det är en ATMega 32.

det är välldigt svårt att få den sitta i sockeln men ännuvärre är det att få ur den.. hur ska jag lättast få i och ut den?
förra gången ja provade så blev 90% av alla pins böjda.inte roligt :(

Tack för snabba och seriösa svar:D :!:

Postat: 27 augusti 2004, 21:07:24
av Hedis
Bryt försiktigt med en skruvmejsel i ändarna. Lite i 1:a änden, över till nästa i håll på så tills den är loss.

Mega32:an har inbyggt klockning på upp till 8Mhz vilket räcker långt till en början.

För att programmera den så skall du inte behöva ta loss den. Koppla bara in kablarna till ISP programmeringen till breadborden. I värsta fall om det glappar så kan du ju löda dom försiktigt på benet (precis ivanför "ytan" på kopplingsdäcket.
Då slipper du ju hålla på o flytta den.

MISO
MOSI
SCK
RESET

Är dom grejer du behöver ha koplat till programmeraren.

Senså ett tips!
JTAG är aktiverat som standard på processorn vilket gör att en pinne på portC inte fungerar förrens man disablar Jtag.
Jag satt säkert en dag o letade fel innan jag kom på detta :) (allr fungerade fint med lcd o den gamla 8515 processorn men inte med mega32:an :))

Postat: 27 augusti 2004, 21:15:10
av Virr3
laddade hem winavr härom dan.. men de enda som finns är programmers notepad, avr insight och några saker som är "länkade" till programmers notepad.. vart bränner jag över koden? kan jag göra de i programers notepad?
och hur?

Postat: 27 augusti 2004, 21:42:38
av Hedis
Har aldrig använt Win-AVR men där skriver du bara koden, kompilerar (skapar hex filen), sedan får du bränna i programmet som du fått med programmeraren.

Postat: 27 augusti 2004, 21:48:52
av Virr3
fick alldrig med något.. finns det att ladda hem någon stans?

Postat: 27 augusti 2004, 22:19:25
av Hedis
Det borde det ju göra då.

Kolla på deras hemsida eller sök på google.

Postat: 27 augusti 2004, 22:30:25
av Virr3
okej..

hmm.. när jag ska skapa mitt program i programmers notepad så blir det fel.

det kommer upp
> "make" all
make: *** No rule to make target `all'. Stop.

det kvittar hur jag gör så blir dett samma sak..

någon som vet vad detta beror på?

Postat: 27 augusti 2004, 22:56:08
av cykze
Det är inte så att du måste välja att skapa ett Projekt först och sedan lägga till en C-fil till projektet för att få det att kompilera?