- Log ind eller Opret konto for at kommentere
- Anmeld denne kommentar
Hehe... du er for hård PHK.
Jeg roder med noget USB host kode for en kunde og når jeg så alligevel var igang, var det faktisk nemmest at programmere en microcontroller så jeg havde noget at debugge med i den fjerne ende.
Og når jeg så alligevel var igang med at programmere en microcontroller med USB kunne jeg jo ligeså godt bruge det til noget nyttigt.
Med andre ord: Et USB interface til vores RC2000 hulstrimmel-læser.
Interface stikket på en RC2000 er et 38 polet EDAC multistik, kendt af lydfolk overalt og stadig et aktivt varenummer, efter 50 år.
Sådan et stik er jo stort, så man kan faktisk godt klemme en 28 bens DIL microcontroller derind, hvis man barberer den lidt tæt:
Printet holdes på plads ved at akslen for fingerskruen passerer lige hen over chippen.
Benene er klippet af chippen og den er loddet på printkoret i "SMD" stil.
Den flerfarvede ledning er så jeg kan downloade ny kode.
Det viste sig hurtigt nødvendigt, da min USB kode fik Mogens' SUSE kerne til at crashe med en NULL pointer deref (tsk tsk!)
Men idag lykkedes det og som alle de der har set det ved, findes der ikke noget mere imponerende syn, end en RC2000 der sparker hulstrimmel ud i rummet med fem meter per sekund.
PC'en var en fantastisk hardware-hacker venlig platform da den kom frem: veldokumenteret, åben og lige til at gå til.
Men først forsvandt ISA bussen og nu er både LPT og COM porten med hård hånd elimineret fra moderne hardware.
Hverken MCA, EISA, PCI eller noget der er fulgt efter er hacker-venligt, det kræver mere eller mindre en FPGA og VHDL code og så er vi ovre i surface-mount helvedet med 1109 ben, der kun kan loddes med en opvarmet og omhyggeligt tilspidset carbon-nanotube i absolut vacuum og vægtløshed.
Men nu har jeg fået hul på USB bussen, og selvom jeg hader den af et godt og velinformeret hjerte, kan den trods alt bruges både til nytte og skæmt.
Koden er i C, compileret med SDCC, kører på en PIC18F25J50 og ligner en seriel-port på en OpenSolaris, SUSE eller FreeBSD maskine og er naturligvis Open Source.
Hvad har DU hacket idag ?
phk
Hehe... du er for hård PHK.
Med fare for at lyde dum: hvorfor ikke blot bruge en USB 2.0 til RS232 Adapter, og så tage den derfra?
Fordi det ikke altid er et serielt snit man har brug for ?
RC2000 har f.eks et 8+2 parallelt TTL-level interface (Vi har tidligere kørt den via en parallelport)
Poul-Henning
Hej PHK,
Hvorfor fald valget på PIC18F25J50? Bliver også nød til lige også at spørge: Har du prøvet at hacke Arduino ved en anden lejlighed?
Mvh Carsten
Og hvad bruger du som USB driver på PIC'en? Vel ikke Microchips USB pakke?
Jeg fandt en opensource pakke for nogle måneder siden som jeg tilpassede en PIC14K50 under SDCC.
Vi en rettet og buxfixet version liggende til download på vores hjemmeside (dog er jeg ikke selv istand til at finde den, suk!)
.carsten
Jeg har tidligere haft god glæde af den her:
http://apple.clickandbuild.com/cnb/shop/ftdichip?op=catalogue-products-n...
Den kan bringes til at gøre næsten hvad som helst og er let at håndtere rent fysisk. En god erstatning nu hvor parallelporten er død.
@Carsten[0]:
Jeg havde brug for en PIC18 med to serielporte i anden sammenhæng og endte med at have nogle 25j50 til overs fra det projekt.
Jeg har ikke leget meget med arduino endnu, jeg har en tendens til at være hurtigere med C kode end med at lære et nyt sprog, men jeg ser arduino som et enormt pædagogisk redskab.
@Carsten[1]:
Jeg fandt en delvis fungerende USB/HID implementering som Alexander Enzmann havde skrevet på basis af MicroChips kode, den har jeg hovedrenoveret, renset for woodoo og generaliseret.
Poul-Henning
Hej PHK
Jeg kan glæde med at Arduino'en også kodes i C (faktisk C++) med en hulens masse defines for hukommelses adresser, det kode man skriver i deres editor bliver smidt ind i en funktion der bliver kaldt af main.
Hvis nogen er interesserede kan jeg bidrage med et CMake build script og lidt eksempler så man slipper for at skulle rode med deres editor (der er lidt bedaget).
Jeg har ikke leget meget med arduino endnu, jeg har en tendens til at være hurtigere med C kode end med at lære et nyt sprog, men jeg ser arduino som et enormt pædagogisk redskab.
Aurodino er baseret på ATmega168 & ATmega328. Der er intergreret en 8 bit AVR processor i ATmega microcontrolleren. Der findes, som Rasmus skriver, bl.a. C kompilerer til AVR. Jeg tænke du måske havde rodet med det.
Jeg har selv kigget lidt på TinyOS og Contiki, der begge understøtter ATmega controlleren.
Hvis nogen er interesserede kan jeg bidrage med et CMake build script og lidt eksempler så man slipper for at skulle rode med deres editor (der er lidt bedaget).
Hej Rasmus. Jo tak. Jeg ved ikke om det er at reklamere for andre steder men sådan et script og eksempler vil passe meget fint i gruppen Selvgjort er Velgjort på ing.dk (Tænker at det går når det nu er samme mediehus).
Jeg fandt en delvis fungerende USB/HID implementering som Alexander Enzmann havde skrevet på basis af MicroChips kode, den har jeg hovedrenoveret, renset for woodoo og generaliseret.
Jeps, "Xander" USB versionen kan virke med PIC's, det er også den, jeg har fundet. Den er rodet, men kan virke. Jeg fik dog aldrig USB low-speed til at virke...
.c
Jeps, "Xander" USB versionen kan virke med PIC's, det er også den, jeg har fundet. Den er rodet, men kan virke. Jeg fik dog aldrig USB low-speed til at virke...
Hmm, vi burde lige koordinere, det er dumt hvis vi begge sidder og kæmper med at rydde det samme stykke kode op...
Poul-Henning
Hej Kasper (og andre)
Jeg samler lige noget brugbart sammen og så poster jeg et link i Selvjgjort er Velgjort.
Jeg har uploadet koden til min "USB_ICSP" dims en lille bit-bang dims jeg bruger til at programmere PIC18F chips med.
Vi fortsætter i Selvgjort-er-velgjort gruppen:
http://ing.dk/grupper/selvgjort-er-velgjort/forum/122960
Poul-Henning