programmer usb-serieel/usb-parallel adapters

Ik wilde de software van een microcontroller in een oud projectje weer eens updaten. Microcontroller is een ATMega8535. Programmer is het ponyprog-serieel kabeltje.

Omdat mijn oude PC het niet meer doet, dacht ik wel te kunnen programmeren via een USB-serieel convertortje. Dat blijkt tegen te vallen.
Onder linux met avrdude werkt het totaal niet. Onder windows 7 met ponyprog kan het wel, als ik de reset pin handmatig bedien. Programmeren duurt echter wel +/- een uur. Dat is dus ook niet echt een mogelijkheid.
In de usb-serieel adapter zit een CH341 chipje. Op internet lees ik dat dergelijke kabels inderdaad niet erg goed werken.

Wat is nu een betere oplossing voor programmeren?

Werken USB-Parallelle poort adapters wel goed, of heb ik dan vergelijkbare problemen?

Of kan ik beter een kant en klare programmer kopen? Welke is goedkoop en snel geleverd?

Hogepriester in het genootschap der mexicaanse hond. // // Aan 2% van de mensen is 50% van het bezit ; 1% van het bezit is aan 50% van de mensen.
Arco

Special Member

Bij beide (serieel/parallel) converters ben je afhankelijk van hoe goed de usb interfacechip omzet in serieel met de juiste timing.
Welke converter met welk programma goed werkt is niet altijd vooraf te zeggen. FTDI chips doen het meestal wel beter.
PCI-Express naar serieel/parallel werkt meestal ook wel goed.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Gezien ik momenteel alleen toegang heb tot laptops is PCI geen optie. PCMCIA ook niet.

Weet iemand goede en niet te dure USB programmeerkabels?

Anders moet ik op zoek naar een kabeltje met FTDI chip. Maar da's natuurlijk altijd een beetje een gok als het via webshops besteld wordt.

Hogepriester in het genootschap der mexicaanse hond. // // Aan 2% van de mensen is 50% van het bezit ; 1% van het bezit is aan 50% van de mensen.

Die programmers werkte meestal met bitbanging, omdat ze de seriële of parallelle interface misbruiken als I/O lijnen zonder het protocol te gebruiken waar die voor bedoeld zijn. Via USB werkt dat niet lekker omdat je een boel extra latency krijgt, en soms werkt het helemaal niet omdat ze de flow control pinnen niet geïmplementeerd hebben.

Je kunt een Arduino met bootloader gebruiken als ISP programmer om een andere chip (zonder bootloader) the programmeren.

Een manager is iemand die denkt dat negen vrouwen in één maand een kind kunnen maken
buckfast_beekeeper

Golden Member

Als je bij mouser of farnell een ftdi kabel besteld, dan is dat ook een ftdi.

Voor hetzelfde geld heb je een progger die een usb aansluiting heeft. Ben je tenminste zeker dat het werkt.

Van Lambiek wordt goede geuze gemaakt.

Atmel had altijd hele goedkope programmers. Microchip heeft er nu ook eentje die iets van een tientje kost. Werkt echter alleen met MPLAB en niet met Studio.

Volgens mij maakt Olimex een kloon van de Atmel AVR ISP II programmer. Kijk anders even op MP daar staan ook nog wel eens leuke programmers voor weinig.

This is the world we know best, the world of madness

Op 17 november 2018 20:21:03 schreef Arco:
Bij beide (serieel/parallel) converters ben je afhankelijk van hoe goed de usb interfacechip omzet in serieel met de juiste timing.

Ik denk dat het er weinig mee te maken heeft.

Het probleem is: Sommige programmers werden aangesloten op de seriele poort maar waren niet serieel: Die gebruikten de seriele (of parallelle) poort gewoon als "GPIO" poort. Vroeger kon je dan met een enkel "schrijf naar een register" een pinnetje hoog of laag maken. En als dat 100000 x moet, dan is het nog in 1 sec gebeurd. Niets aan het handje.

Krijg je besturingsystemen die het niet leuk meer vinden dat je aan de hardware zit, ga je datzelfde doen met system calls die uiteindelijk in hetzelfde register porren. Wat extra overhead, maar computers zijn toch sneller geworden. Niets aan het handje.

Maar ga je nu een USB_serial ding inzetten, dan kan het gewoon werken als de calls netjes ge-emuleerd worden. Maar USB heeft zo z'n beperkingen. Als je het gebruikt voor dingen waar het niet voor bedoeld is dan kan eea langzamer gaan dan je zou willen. In ieder geval: Als de USB chip even "niets te melden" heeft, dan is ie pas 1ms later weer aan de beurt. Dat 1 µs later de pin hoog wordt kan ie niet doorgeven. Dat kan voor het eerst 1 ms later. /Dat/ is de reden dat het via USB niet goed werkt.

USB kan prima waar het voor bedoeld is: keyboards en muizen. USB kan prima seriele dongles aansturen. Maar dan moet je ze wel voor "serieel" gebruiken en niet als "gpio poort".

Ik heb een bordje ontworpen met een FTDI chip er op. De bedoeling was om de FTDI als GPIO port te gebruiken en daarmee AVR chips te kunnen programmeren. Ik heb een driver voor AVRDUDE geschreven en: Ontzettend traag wegens dat steeds 1ms moeten wachten. Nu kan het beter, door een "streaming" mode te gebruiken, maar dan moest eea in AVRDUDE op de schop. Nooit aan toegekomen. Een een of andere japanner heeft het uiteindelijk gedaan en nu gebruik ik m'n eigen programmer weer. Echt in een paar seconden is ie klaar. (met mijn driver duurde het iets van drie kwartier).

DUS: als je de boel puur als GPIO gebruikt, en je software is er niet speciaal op voorbereid, dan wordt de boel ontzettend traag (of werkt niet). Pas je de boel wel aan op de "nukken" van USB dan kan het prima snel werken.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
Arco

Special Member

Een goede usb -> serieel/parallel omzetter moet ook met bit-banging gewoon werken. Maar dat is lastig door de eerder genoemde latency van een USB poort.
Zelfde geldt voor een Midi USB -> serieel omzetter. De 'echte' serieele versie is veel beter, doordat er geen extra latency is. (terwijl USB toch vele, vele malen sneller is...)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Bitbangen over USB werkt niet. Ook niet met FTDI.
Beter een echte programmer kopen.
Bijv https://benselectronics.nl/w110-programmer-usbasp/

buckfast_beekeeper

Golden Member

Mijn Tuxgraphics programmer is via usb met bitbang geprogrammeerd onder linux. Duurde ruim een uur. Zat een ftdi chip op het printje. Nadat het programma in de atmega8 zat, was het een ISP II kloon.

Van Lambiek wordt goede geuze gemaakt.
Arco

Special Member

Bij goedkopere programmers zonder intelligentie hangt het ook van de timing zelf af. Als die kort is en in de nS loopt, zal het inderdaad meestal niet goed gaan.

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Bedankt allemaal voor de info. Op moderne computers is het dus gewoon niet mee goed mogelijk om dergelijke hardware te gebruiken. Ik kan gewoon byte voor byte een lampje zien knipperen tijdens informatieoverdracht.

Ik ga die usbasp eens proberen. Dat ziet er beter uit...

Hogepriester in het genootschap der mexicaanse hond. // // Aan 2% van de mensen is 50% van het bezit ; 1% van het bezit is aan 50% van de mensen.

Ik heb tot nu toe altijd goed kunnen werken met de Sitecom CN-104, werkt direct onder Linux.
Deze heb ik tijden gebruikt icm met een Wisp PIC programmer.

En anders deze: https://www.startech.com/Cards-Adapters/Serial-Cards-Adapters/1-Port-U…

Staat het bij dat het FTDI is.

GJ_

Moderator

Op 17 november 2018 21:32:59 schreef Arco:
Een goede usb -> serieel/parallel omzetter moet ook met bit-banging gewoon werken.

Dit blijft gokken. Er is absoluut geen garantie dat welke omzetter dan ook werkt.

Lambiek

Special Member

Op 20 november 2018 13:44:18 schreef GJ_:
Dit blijft gokken. Er is absoluut geen garantie dat welke omzetter dan ook werkt.

Inderdaad, bij de één werkt het wel en bij de ander niet. Het blijft altijd een gok met die dingen.

Als je haar maar goed zit, GROETEN LAMBIEK.
Arco

Special Member

Wat ik al zei:
Bij devices met een trage timing (uS of mS) zal het eerder werken als bij devices met nS timing (da's kansloos)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com
GJ_

Moderator

Heeft niet speciaal met de devices te maken. Wat op de ene laptop wel werkt werkt op de andere niet, ondanks zelfde OS (mijn ervaring met XP vanaf dezelfde CD, tegelijk geïnstalleerd).
Er valt gewoon echt niks zinnigs over te voorspellen.

Op 17 november 2018 21:45:46 schreef deKees:
Bitbangen over USB werkt niet. Ook niet met FTDI.

Been there, done that. Ik heb het persoonlijk gemaakt en geprogrammeerd. Niet bruikbaar, zo langzaam, maar het werkt. Jou ongefundeerde stelling is onjuist.

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/
bprosman

Golden Member

Ben er een paar maanden geleden ook mee aan het kl*ten geweest en de eenvoudigste oplossing uiteindelijk was een Arduino Uno “opofferen” en daar de ISP software in laden.
Die USBAsp kreeg ik onder Windows 10 , 64 Bit ook niet lekker aan de praat.

Zit er standaard bij , bij de Arduino software.
Later op MP nog een Atmel programmer (origineel) op de kop getikt , die doet het ook.

[Bericht gewijzigd door bprosman op woensdag 21 november 2018 01:44:01 (26%)

De jongere generatie loopt veel te vaak zijn PIC achterna.

Precies!

Vroeger kostten programmers tientallen euros/guldens. Dan kon je voor veel minder geld zo'n bitbang-via-ser/par poort programmer in mekaar klussen. Nu tegenwoordig programmers veel goedkoper zijn, kan je beter gewoon iets kopen wat iets moderner is en de boel gebruikt zoals het bedoeld is. Dus bijvooreeld een SERIEEL protocol naar de programmer die dan de bitjes voor je bedient. (bprosman z'n "Uno opofferen" is daar een voorbeeld van).

four NANDS do make a NOR . Kijk ook eens in onze shop: http://www.bitwizard.nl/shop/

@(Z)weetvoetje

Ik heb nog wel een (als het goed is) werkende oude computer staan met com-port. Als je belang hebt bij deze (gratis) ga ik kijken of hij nog werkt.
Volgens mij is het een AMD athlon 1800xp of iets dergelijks.
Laat maar weten, ik ben zondag a.s. in Utrecht, ga op bezoek bij vrienden. Dus kan hem wel brengen.

Bedankt Bernard, maar ik heb ondertussen de usbasp besteld. Duimen dat deze goed werkt.

Als ik het zo begrijp zit het dus vooral in de aansturing van de USB door de laptop in combinatie met de seriele poort driver. Daar zitten natuurlijk flinke vertragingen op.

Ik kan me van vroeger herinneren hoe computers altijd retetraag werden bij gebruik van seriele of parallele poort, omdat de processor dan waarschijnlijk zoveel interupts te verwerken kreeg dat er verder niets meer gebeurde.
Via USB is dat natuurlijk niet meer zo.

Daarnaast is er volgens mij ook een issue met de kabel of de driver dat de pinnen niet allemaal goedom werken. Nouja, ik heb geen geduld om voor een paar euro hier moeite in te steken.

Hogepriester in het genootschap der mexicaanse hond. // // Aan 2% van de mensen is 50% van het bezit ; 1% van het bezit is aan 50% van de mensen.
Arco

Special Member

Ik heb nog nooit vertragingen gehad het serieel of parallelpoorten (behalve bij DOS, maar da's onvermijdelijk... :) )
De interruptverschillen zijn vanaf Windows NT4 niet veel veranderd (blijft tenslotte een pre-emptive OS), alleen de pc's zijn veel sneller geworden.
Een USB poort is sowieso niet erg geschikt voor tijdkritische zaken, omdat er altijd latency is. (met een speciale geoptimaliseerde driver kun je nog wel wat bereiken)

Arco - "Simplicity is a prerequisite for reliability" - hard-, firm-, en software ontwikkeling: www.arcovox.com

Onder Linux zou ik inderdaad nog iets kunnen proberen met een low-latency kernel. Maar onder Linux is er volgens mij iets mis met de driver. De pinout lijkt niet te kloppen.

Onder windows klopt dat wel, maar ik zou niet weten hoe ik daar de latency van mijn kernel kan beinvloeden.

Daarnaast is halverwege het werk hieraan mijn oscilloscoop overleden, dus ik kan nu ook die timing niet meer meten totdat ik een vervangende OM548 heb gevonen, maar ik denk dat ik eerder de usbasp heb. Die ligt als het goed is morgen in de brievenbus :)

Als ik het me goed herinner van vroeger waren ook relatief moderne PC's (Athlon200-+ en AMD64 3500+) niet vooruit te branden als de parallelle poort gebruikt werd door de printer. En dat kan niet direct liggen aan die enkele tientallen kb per seconde die de printer nodig heeft. Dat is volgens mij toch iets met timing, of wachten op data oid.

Hogepriester in het genootschap der mexicaanse hond. // // Aan 2% van de mensen is 50% van het bezit ; 1% van het bezit is aan 50% van de mensen.

Usbasp doet het prima. :)
Programmeren in een seconde of vijf. Scheelt toch behoorlijk.

Hogepriester in het genootschap der mexicaanse hond. // // Aan 2% van de mensen is 50% van het bezit ; 1% van het bezit is aan 50% van de mensen.