hur skall jag koppla in
hur skall jag koppla in
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
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
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...
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...
- EagleSpirit
- Inlägg: 1288
- Blev medlem: 27 maj 2003, 23:15:48
- Ort: Västerås
- Kontakt:
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.
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.
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
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
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)
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)