Voor mijn onderneming in microprocessing, besloot ik voor Atmel AVR te gaan vanwege de enorme beschikbare middelen. De Arduino lijkt ook veel te hebben, om nog maar te zwijgen van het feit dat hun starterkits meer ” op mijn niveau lijken. ”
Het probleem is dat ik het eerst in assemblage wil leren, en dan naar C / C ++ wil gaan of wat Arduino ook gebruikt, maar ik heb gehoord dat Arduino geen AVR-assemblage zal gebruiken. Is dit waar? Is daar een manier omheen?
Bewerken: ik zou voor de ATMEL STK500 gaan, maar voor een eerste timer ziet het er HEEL ingewikkeld uit. Is er een reden waarom ik “niet zomaar een 8-bits AVR kan krijgen en deze op een breadboard kan plaatsen en op die manier kan experimenteren? (Ik denk dat ik” moet uitzoeken hoe ik ze als zodanig moet gebruiken.)
Bewerken2: dit is wat ik dacht
http://www.adafruit.com/index.php?main_page=product_info&cPath=17&products_id=193
Reacties
- Hoe gaat het? Dus welke oplossing heb je overwogen? Ik kocht Arduino Uo en was op zoek naar een manier om ook in assembler te ontwikkelen.
- Ik zou willen voorstellen om 89c51 (8051) controller te gebruiken voor assembleertaal
Antwoord
De Arduino boards kunnen in assemblage worden geprogrammeerd. Alles wat je nodig hebt, is een ICSP-kabel (In Circuit Serial Programmer) en de AVR-toolchain (gratis van ATMEL) om naar het bord te schrijven. Je krijgt dan het voordeel van debugging aan boord.
Zoals je suggereerde, kun je gewoon een ATMEL-chip op een breadboard slaan en naar de stad gaan.
De kit waarnaar je verwijst, ziet eruit als een prima uitgangspunt. Je kunt de chip zo van het bord halen en op je eigen breadboard plakken (zolang het correct geregelde stroom heeft en je rekening houdt met de klok).
EDIT: Blijkbaar heb je geen een ICSP nodig om assembly-programmas te laden. Zie commentaar hieronder voor details.
Opmerkingen
- Ja ik ‘ d wil graag bij blijven. Ik zet het nu niet op mijn eigen breadboard lol Ik ben niet zo goed in circuits.
- @Sauron – hah – hoe dan ook is goed. Waar je ook aan verslaafd raakt! Het goede is dat de individuele chips vrij goedkoop zijn (een paar dollar of zo).
- Dit antwoord is in hoofdzaak misleidend: GEEN ISP IS NODIG . De bootloader die door Arduino wordt gebruikt dateert van vóór het Arduino-project en heeft geen idee of het bestand dat wordt geladen afkomstig is van een compiler of een assembler. Don ‘ t bestendigt de misvatting dat de bootloader in een Arduino heeft iets te maken met de methode om programmas te schrijven die gericht zijn op de hardware; het is gewoon een handig mechanisme om code van elke oorsprong in de chip te krijgen.
- @ChrisStratton – bedankt voor je feedback. Ik ‘ heb mijn antwoord bijgewerkt om uw feedback op te nemen.
Antwoord
De Arduino IDE kan worden “gefixeerd” om plaats te bieden aan Assembly-code. Hier is de wiki: http://www.cs.nmsu.edu/~jcook/arduino/index.php?n=Notes.AssemblyMods
Reacties
- de url lijkt te zijn verbroken
Answer
Voor zover ik weet zou dat moeten wees niets specifieks over de Arduino-bootloader die je ervan zou kunnen weerhouden assembly te gebruiken in plaats van C. De Arduino IDE kan het moeilijk maken om je eigen .hex-bestanden te uploaden, maar het lijkt op de Arduino-bootloader is STK500 compatibel , dus je zou het moeten kunnen gebruiken met avrdude.
Reacties
- Ja, eigenlijk, de Arduino IDE zelf gebruikt avrdude om de upload uit te voeren.
Antwoord
Helemaal niet moeilijk.
http://www.dwelch.com/arduino/
Je moet naar ik denk ser.c op mijn pagina kijken om te kiezen welke kaart. sommige gebruiken standaard verschillende seriële poortsnelheden en verschillende reset-schemas om in de programmeermodus te komen. Als je naar de arduino-firmware kijkt, zie je dat bijna geen van de avr-programmeeropdrachten echt worden ondersteund. Heb ze toch niet echt nodig.
Answer
de arduino kan worden geprogrammeerd met assembly met behulp van GCC-AVR Inline Assembler, kijk op deze link voor GCC-AVR Inline Assembler Cookbook
http://web.stanford.edu/class/ee281/projects/aut2002/yingzong-mouse/media/GCCAVRInlAsmCB.pdf
Answer
Arduino-boards (in ieder geval Uno en Duemilanove) hebben een standaard AVR-programmeerconnector die wordt ondersteund door Atmel-programmeurs en debuggers via AVR Studio. Studio ondersteunt assembler en C. Een geschikte programmeur is de AVRISP MkII, en de AVR Dragon biedt zowel programmeren als debuggen. Ik zou het laatste krijgen, het is duurder met $ 50, maar de foutopsporingsfaciliteit is van onschatbare waarde. Je kunt die tools ook gebruiken met een standaard AVR-chip (geen Arduino) die is aangesloten op een breadboard of een PCB.
Reacties
- Hoewel het ‘ klopt dat ze een ICSP-header hebben, is er ‘ s niet nodig. De bootloader werkt even goed met elke vorm van programma-auteurschap, en in feite vertrouwt zelfs de Arduino IDE op het reeds bestaande opdrachtregelprogramma
avrdude
om de bootloader te bedienen.
Answer
De Arduino bestaat uit twee delen: de hardware en de IDE. De IDE beperkt je voornamelijk (zo niet volledig) tot C en C ++ (met wat syntactische suiker die de ontwikkelaars erin hebben gegooid om het een beetje meer op Processing / Java te laten lijken). Er is een kans dat de IDE .s of .S bestanden herkent in dezelfde directory als een standaard sketch (.pde), maar daar zou ik mijn hoed niet aan hangen.
Er is niets speciaal aan de hardware. Het is een aardig, vriendelijk bord met veel handige functies die µC-nieuwelingen zullen waarderen, maar als je de AVR gewoon via de ISP-header wilt programmeren, kun je dat ook doen. Je hebt zoiets nodig als de Atmel AVRISP mkII , of een andere programmeur die werkt met de 2×3 rij-connector op het Arduino-bord. Zoek degene die compatibel zijn met het avrdude-programma dat u zult gebruiken om uw applicaties te uploaden. Blijf weg van Adafruits USBtinyISP; ik heb er vreselijk geluk mee gehad en heb uiteindelijk de Atmel-versie gekocht die ik voor minder dan $ 40 van Mouser heb gelinkt.
Reacties
- Vreemd, ik ‘ heb niets dan goede ervaringen gehad met de Atmel IDE en de usbtiny. Buspirate zal ook dienst doen als een ISP voor veel verschillende platforms, geweldige kleine tool
- Daar ‘ is er geen ICSP-adapter nodig, de bootloader werkt prima met elke vorm van programma-auteurschap
Answer
De Aruduino kan absoluut in assembly worden geprogrammeerd. En je hebt er niet eens een ICSP-kabel voor nodig!
Oké, eerlijk gezegd is dit niet hetzelfde als programmeren in pure assemblage vanaf de grond af.
Maar je kunt inline-assembly in C zetten, wat betekent dat je code op je Arduino kunt laden die inline-assembly heeft, die dan wordt uitgevoerd. Beschouw de TVOut-bibliotheek , waardoor de Arduino NTSC / PAL naar een tv kan uitvoeren.
Die bibliotheek is erg tijdgevoelig (aangezien het naar een tv wordt uitgevoerd, moet elke scanline aan de rechterkant worden geschreven tijd.) Dus het gebruikt inline assembly om het proces te versnellen. Kijkend naar regel 89 van dit bestand uit de bibliotheek, gebruikt de auteur een deel van de assembly-macros die hij schreef.
Nu. Ik vermoed dat hij ze niet heeft geschreven met de standaard Arduino IDE. Maar deze bibliotheek doet een beroep op zijn inline asm-code, die iedereen kan importeren, compileren en uitvoeren via hun interface.
Veel succes!
Comm ents
- Eigenlijk kun je ook assembly source-bestanden maken, je hoeft alleen maar de Arduino IDE over te slaan en te communiceren met de back-end tools zoals avr-gcc (of wat je ook gebruik als een assembler) en avrdude rechtstreeks.
Answer
Ik gebruik Linux als mijn hostplatform, maar ik denk dat deze tools ook beschikbaar zijn voor Windows-varianten.
Ik gebruik ” avra ” voor de montage naar hexadecimale code converter (compiler)
Vervolgens programmeer ik de chip met behulp van een USBTiny-programmeur en de ” avrdude ” programmeertool.
Ik denk dat beide tools open source zijn.