Hur mycket går det att slakta i denna kod?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
labmaster
Inlägg: 2919
Blev medlem: 5 april 2011, 01:10:25

Re: Hur mycket går det att slakta i denna kod?

Inlägg av labmaster »

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.
thepirateboy
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?

Inlägg av thepirateboy »

1802 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.
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ör
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.
j.po
Inlägg: 279
Blev medlem: 24 november 2008, 20:40:19
Ort: Halmstad
Kontakt:

Re: Hur mycket går det att slakta i denna kod?

Inlägg av j.po »

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
Senast redigerad av j.po 24 januari 2012, 22:46:17, redigerad totalt 1 gång.
snigelen
Inlägg: 815
Blev medlem: 8 maj 2009, 11:02:14
Ort: Lund

Re: Hur mycket går det att slakta i denna kod?

Inlägg av snigelen »

labmaster skrev:Snygg programkod snigelen. Har du skrivit den själv?
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).
j.po
Inlägg: 279
Blev medlem: 24 november 2008, 20:40:19
Ort: Halmstad
Kontakt:

Re: Hur mycket går det att slakta i denna kod?

Inlägg av j.po »

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.
snigelen
Inlägg: 815
Blev medlem: 8 maj 2009, 11:02:14
Ort: Lund

Re: Hur mycket går det att slakta i denna kod?

Inlägg av snigelen »

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.
1802
Inlägg: 6835
Blev medlem: 6 februari 2009, 13:52:28

Re: Hur mycket går det att slakta i denna kod?

Inlägg av 1802 »

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
1802
Inlägg: 6835
Blev medlem: 6 februari 2009, 13:52:28

Re: Hur mycket går det att slakta i denna kod?

Inlägg av 1802 »

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.
1802
Inlägg: 6835
Blev medlem: 6 februari 2009, 13:52:28

Re: Hur mycket går det att slakta i denna kod?

Inlägg av 1802 »

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?
Användarvisningsbild
AndLi
Inlägg: 18285
Blev medlem: 11 februari 2004, 18:17:59
Ort: Knivsta
Kontakt:

Re: Hur mycket går det att slakta i denna kod?

Inlägg av AndLi »

upptagna av vadå? Interrupterna ligger väll först, använder du inga interrupt kan du använda det minnet som vilket som helst
Nerre
Inlägg: 27233
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Hur mycket går det att slakta i denna kod?

Inlägg av Nerre »

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.
1802
Inlägg: 6835
Blev medlem: 6 februari 2009, 13:52:28

Re: Hur mycket går det att slakta i denna kod?

Inlägg av 1802 »

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å....
sodjan
EF Sponsor
Inlägg: 43251
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: Hur mycket går det att slakta i denna kod?

Inlägg av sodjan »

> 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...
snigelen
Inlägg: 815
Blev medlem: 8 maj 2009, 11:02:14
Ort: Lund

Re: Hur mycket går det att slakta i denna kod?

Inlägg av snigelen »

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)
data.png
men där kan man inte exekvera program.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
1802
Inlägg: 6835
Blev medlem: 6 februari 2009, 13:52:28

Re: Hur mycket går det att slakta i denna kod?

Inlägg av 1802 »

labmaster: avrdude kan vara både ett program, och nån som är duktig på avr. Klumpigt skrivet dock. Lätt att missförstå.
Skriv svar