Sida 1 av 3

hur skall jag koppla in

Postat: 28 april 2004, 21:37:40
av Jonaz
denna program snutt är från avrfreaks och är gjord för en 8515, men jag har en 2313, är det något man måste ändra i koden?

Var skall jag koppla in led'en? plus på vcc och den andra?
Samt är det bara att koppla in batteriet sen så skall den gå eller?


;My Very First AVR Project

.include "2313def.inc" ;Includes the 8515 definitions file

.def Temp = R16 ;Gives "Defines" Register R16 the name Temp

.org 0x0000 ;Places the following code from address 0x0000
rjmp RESET ;Take a Relative Jump to the RESET Label

RESET: ;Reset Label
ldi Temp, 0xFF ;Store 255 in R16 (Since we have defined R16 = Temp)
out DDRB, Temp ;Store this value in The PORTB Data direction Register

Loop: ;Loop Label
out PORTB, Temp ;Write all highs (255 decimal) to PORTB
dec Temp ;Decrement R16 (Temp)
rjmp Loop ;Take a relative jump to the Loop label

Postat: 28 april 2004, 22:29:52
av Xyzzy
Vad ska den göra? (om jag förstått programmet rätt ska 8 LEDar "räknas ner" binärt, isf behöver du 8 LEDar (+ seriemotstånd), kopplade till varsin pinne på PORTB)
Sannolikt behövs en kristall och 2 kondensatorer eller en resonator... (om den inte har intärn oscillator, vilket inte 2313 har... om jag inte minns fel

Det smidiga med AVR är att de flesta adresser har samma namn i de olika modellerna (till skillnad från ej namngivna konkurrenter), så koden det bör fungera (bara du ändrar till '.include "2313def.inc"' och det har du ju redan...

Postat: 28 april 2004, 22:36:48
av Jonaz
Jag provade nu med en LED men den bara lyser.

Postat: 28 april 2004, 22:42:51
av Xyzzy
Ok, hur kopplade du alltihopa? Oscillatorfrekvens?
är det inte så bara att du inte hinner se att den blinkar?

Postat: 28 april 2004, 22:46:36
av Jonaz
LED till GND och en + till PB0
4,4Mhz. jag har visserligen inget motstånd in kopplat.

Postat: 28 april 2004, 22:55:22
av Xyzzy
hmm, koppla in ett motstånd (synd att bränna utgången!)
Har du kopplat reset på AVRen till Vcc (ev. via motstånd)?

Postat: 28 april 2004, 22:58:12
av Jonaz
nej det har jag inte gjort. är det det som kan vara problemet?
hittade just denna.
Skall sätta dit ett 120Ohm motstånd.
Bild

Postat: 28 april 2004, 23:02:16
av Xyzzy
Javisst, du måste lägga RESET hög för att få AVRen att köra sitt program

Postat: 28 april 2004, 23:09:43
av Jonaz
kondingen där, hur mycket kan mycket exact måste det vara? har en på 22uF eller är den för stor?

Postat: 28 april 2004, 23:23:57
av EagleSpirit
en är mycket skumt kopplad. Ska inte Reset ha 5v precis som PIC?

Koppla 10µF kondingen mellan jord och 5v direkt och sedan ett ca 10k motstånd från 5v till RST. 10µF kondingen stabiliserar spänningen så det går bra med en på 22µF.

Det känns som att det fattas en wait i det där programmet. Eftersom AVR utför en instruktion varje klockcykel (visst var det så? Eller är det varannan?) så blinkar den där ca 1 miljon gånger varje sekund. Jag vet inte riktigt hur man gör en väntrutin i AVR men det lär finnas någon instruktion typ: Räkna ner ett, skippa nästa om den är noll.

Exempel:
wait:
ldi temp2, 0xff
loop2:
ldi temp3, 0xff
loop1:
dec temp3 skippa om 0
rjmp loop1
dec temp2 skippa om 0
rjmp loop2
return

detta blir alltså en subrutin som man får kalla i looprutinen. Vet inte vad kommandot är för det. Tror inte det är gosub precis.

Postat: 28 april 2004, 23:50:36
av Jonaz
hmm kopplade enligt schemat. men nu lyser den inte alls. inte på någon port. har bara satt ett motstånd på en port med en LED. har jag lyckats bränt utgångarna?

Postat: 29 april 2004, 07:40:01
av erixon
Byte plats på R2 och C3 annars är kretsen i reset mode hela tiden .....

Postat: 1 maj 2004, 01:51:05
av Jonaz
ok skall prova det efter helgen

Postat: 2 maj 2004, 06:58:58
av frejo
Kändes onödigt att starta en ny tråd för denna fråga.

Vad gör dioden som sitter vid resetingången på följande ritning?
Är kondensatorn och spolen vid VCC nödvändiga? va gör dom?
Motståndet vid AVCC, är det verkligen 10 Ohm?
www.ere.co.th/data/document/EMBMEGA32_SCH.pdf

Postat: 2 maj 2004, 09:53:34
av Xyzzy
Skulle tro att dioden sitter där för att skydda Reset-ingången, den tål max +5V (ungefär) och skulle det komma in en högre spänning än +5V på RES så leds den till matningen, alltså en nödvändig, men smidig om man labbar

Spolen och 0,01uF-kondensatorn är till för att filtrera bort spikar på matningen, 4,7uF-kondingen är där för att stabilisera matningen.

Det bör vara väldigt lite, men jag har för mig att Atmel rekomenderar en drossel (spole) där istället (kolla i databladet, där står vad de rekomenderar för komponenter)