Hur mycket går det att slakta i denna kod?
Re: Hur mycket går det att slakta i denna kod?
1802, det är lite svårt att förstå vad du menar när du skriver ett påstående men sätter ett frågetecken efter. Varför vill du berätta att du inte har någon avrdude?
Som svar på din fråga avseende hur mycket du kan slakta den där koden så skulle vag vilja säga att du skall slakta bort all kod. Sedan skall du ta fram databladet för processorn och lära dig från blad till blad hur den är uppbyggd och hur du adresserar de olika registren och IO-portar. När du gjort detta kan du plocka fram editorn och börja skriva egen programkod som du assemblerar, länkar och laddar till din CPU.
Som svar på din fråga avseende hur mycket du kan slakta den där koden så skulle vag vilja säga att du skall slakta bort all kod. Sedan skall du ta fram databladet för processorn och lära dig från blad till blad hur den är uppbyggd och hur du adresserar de olika registren och IO-portar. När du gjort detta kan du plocka fram editorn och börja skriva egen programkod som du assemblerar, länkar och laddar till din CPU.
-
- EF Sponsor
- Inlägg: 2109
- Blev medlem: 27 augusti 2005, 20:57:58
- Ort: Borlänge
Re: Hur mycket går det att slakta i denna kod?
Jag är osäker på om avrdude stödjer dfu bootloader. Vad du kan testa om du har problem med FLIP är DFU-programmer som egentligen är för1802 skrev:Visst kan man skriva rutiner som bara lånar register, och sen lämnar tillbaka dem? Och sen kan man ju använde minnes adresser med. CP(x) funkade på 6510 så jag provade även här, men din variant var bättre. Ingen avrdude här? Gissar att den klarar sig UTAN JAVA, vilket jag skulle uppskatta.
linux men det verkar finnas en portad variant.
Jag har bifogat programmet samt en bat-fil. Du dubbelklickar på bat-filen så körs programmet, raderar och proggar flash med Blinking_LED.hex.
Funkar här hos mig på en Win7 dator.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Hur mycket går det att slakta i denna kod?
hittade denna kod på nätet, den borde fungera
; LEDblink.asm - M. Covington 2006
; For ATtiny13.
; Blinks the LEDs attached to PB0 and PB1.
.include "tn13def.inc"
.def temp = R16
.def temp1 = R17
.def temp2 = R18
.def mask = R19
start:
ldi temp,0b00000010
out PORTB,temp ; initialize port B
ser mask
out DDRB,mask ; port B all outputs
blink:
; Delay 0.1 sec (1.2 MHz)
ldi temp1,200 ; outer loop count
L1:
ldi temp2,199 ; inner loop count
L2:
dec temp2
brne L2
dec temp1
brne L1
; Toggle PB0 and PB1
ldi mask,0b00000011
eor temp,mask
out PORTB,temp
rjmp blink
; End of program
; LEDblink.asm - M. Covington 2006
; For ATtiny13.
; Blinks the LEDs attached to PB0 and PB1.
.include "tn13def.inc"
.def temp = R16
.def temp1 = R17
.def temp2 = R18
.def mask = R19
start:
ldi temp,0b00000010
out PORTB,temp ; initialize port B
ser mask
out DDRB,mask ; port B all outputs
blink:
; Delay 0.1 sec (1.2 MHz)
ldi temp1,200 ; outer loop count
L1:
ldi temp2,199 ; inner loop count
L2:
dec temp2
brne L2
dec temp1
brne L1
; Toggle PB0 and PB1
ldi mask,0b00000011
eor temp,mask
out PORTB,temp
rjmp blink
; End of program
Senast redigerad av j.po 24 januari 2012, 22:46:17, redigerad totalt 1 gång.
Re: Hur mycket går det att slakta i denna kod?
Tack! Jo jag plitade ihop det själv (i emacs förresten). Och naturligtvis funkar det, så j.po kan ju inte syfta på mitt exempel. (Men åldersgränsen är ungefär 10 år, de riktigt gamla stötarna kan inte toggla en utgång via PINx. Men det är ju annars lätt fixat).labmaster skrev:Snygg programkod snigelen. Har du skrivit den själv?
Re: Hur mycket går det att slakta i denna kod?
va bra då har den gamla gubben lärt sig något nytt idag också, kände inte till nymodigheten i pinx funktionen. då kan man ju slakta några rader i sitt gräsklipparprogram nu.
men togglar pinnen även om porten är satt som ingång (DDR=0)? eller tolkar jag texten nedan fel? isåfall behöver man ju inte sätta DDR till 1 innan PINx används.
Toggling the Pin
Writing a logic one to PINxn toggles the value of PORTxn, independent on the value of DDRxn.
men togglar pinnen även om porten är satt som ingång (DDR=0)? eller tolkar jag texten nedan fel? isåfall behöver man ju inte sätta DDR till 1 innan PINx används.
Toggling the Pin
Writing a logic one to PINxn toggles the value of PORTxn, independent on the value of DDRxn.
Re: Hur mycket går det att slakta i denna kod?
Nja, när du har en ingång så bestämmer ju PORTx om intern pullup skall vara aktiv eller ej. Så om du skriver till PINx så borde man ju slå på/av intern pullup (otestat). Men skall det vara en utgång så måste motsvarande bit i DDRx vara hög.
Re: Hur mycket går det att slakta i denna kod?
thepirateboy: Jag köpte kortet lite i blindo. Så jag vet inte vad dfu är ens. Men jag skall googla. Är inte ATmega32u4 ganska lik? Den finns med i Avrdude. Som jag skrivit tidigare i tråden fick jag in programmet från första inlägget. Moddade lite direkt i hexkoden, och fick det att blinka snabbare. Sen låg kortet oanvänt i ett par dagar. Och jag skrev ett eget(mycket lånat) program som funkar i AVRstudio 4. Men så började Flip strula. I run läge funkar det och LED'en blinkar snabbt från sista modden. Flip stannar vid raderings kollen. PS jag väntar på lite mer doc om kortet. Bla om hur mycket det orkar driva.
När jag frågade efter Avrdude, menade jag en person kunnig på detta program. Vad gäller min kod är jag nöjd med simuleringen. Funkar den praktiskt så ser jag den som klar, och kommer att gå vidare. Nästa steg blir att läsa av en pot, och ställa hastigheten på 3 rinnande LED's. Gissa varför? Eller en picobat
När jag frågade efter Avrdude, menade jag en person kunnig på detta program. Vad gäller min kod är jag nöjd med simuleringen. Funkar den praktiskt så ser jag den som klar, och kommer att gå vidare. Nästa steg blir att läsa av en pot, och ställa hastigheten på 3 rinnande LED's. Gissa varför? Eller en picobat
Re: Hur mycket går det att slakta i denna kod?
thepirateboy: AArrggghhhh DFU-programmer "MSVCR100.dll kunde inte hittas". Är det .NET jag saknar? Eller kanske http://www.microsoft.com/download/en/de ... en&id=5555 ? Att det skall vara så svårt att skriva ett program som klarar sig utan tillägg!!! Inte ditt fel dock. Jag skall försöka lösa det.
Re: Hur mycket går det att slakta i denna kod?
Kollade av nyfikenhet hex filen avrstudio 4 skapade från mitt lilla program "loopIloop".
:020000020000FC
:100000001CEF2DEF239513951030E9F72030D1F731
:00000001FF
Borde det inte börja med en jump förbi hårdvaruadresserna? Som jag tolkar databladet borde adress $0000-$00FF vara upptagna.
Det c kompilerade programmet blink-led börjar på $AB?
:020000020000FC
:100000001CEF2DEF239513951030E9F72030D1F731
:00000001FF
Borde det inte börja med en jump förbi hårdvaruadresserna? Som jag tolkar databladet borde adress $0000-$00FF vara upptagna.
Det c kompilerade programmet blink-led börjar på $AB?
Re: Hur mycket går det att slakta i denna kod?
upptagna av vadå? Interrupterna ligger väll först, använder du inga interrupt kan du använda det minnet som vilket som helst
Re: Hur mycket går det att slakta i denna kod?
Skriver du i assembler får du göra det hoppet "manuellt".
Assemblern och länkaren lägger ju inte till nån kod utan assemblerar och länkar så som du har skrivit att du vill ha det.
Assemblern och länkaren lägger ju inte till nån kod utan assemblerar och länkar så som du har skrivit att du vill ha det.
Re: Hur mycket går det att slakta i denna kod?
Nerre: Nu är ju avrstudio 4 speciell för deras prossesorer. Jag tycker den borde göra det automagiskt.
AndLi: Ex portarna ligger i området $0000-$00FF. Eller så har jag fattat minnesmappen fel.
Man skall inte bara läsa databladet, man skall tolka det rätt också....
AndLi: Ex portarna ligger i området $0000-$00FF. Eller så har jag fattat minnesmappen fel.
Man skall inte bara läsa databladet, man skall tolka det rätt också....
Re: Hur mycket går det att slakta i denna kod?
> Eller så har jag fattat minnesmappen fel.
AVR är väl en Harvard maskin, d.v.s separata
minnesmappar för program och data. Det finns
alltså i princip 2 minnesmappar...
AVR är väl en Harvard maskin, d.v.s separata
minnesmappar för program och data. Det finns
alltså i princip 2 minnesmappar...
Re: Hur mycket går det att slakta i denna kod?
Det är inte samma adressrymd för program och data.
Adress 0 i programminnet (flash) är resetvekorn, där programmet börjar exekvera efter reset.
Dataminnet är organiserat typ så här (bilden för mega48/88/168) men där kan man inte exekvera program.
Adress 0 i programminnet (flash) är resetvekorn, där programmet börjar exekvera efter reset.
Dataminnet är organiserat typ så här (bilden för mega48/88/168) men där kan man inte exekvera program.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Re: Hur mycket går det att slakta i denna kod?
labmaster: avrdude kan vara både ett program, och nån som är duktig på avr. Klumpigt skrivet dock. Lätt att missförstå.