Ik ben bezig een projectje voor school te doen om gewichten te meten met een luidspreker. We hebben het een en ander al uitgedokterd, maar zitten nog met een dilemma, namelijk hoe we de gemeten data uit een ADC naar de PC toe krijgen. Onze docent is nogal simpel daarin en roept dat we de parallele poort moeten gebruiken omdat dat makkelijker is, nu ben ik niet zo'n fan hiervan, ik wil het met de seriele poort uitlezen.
Onder Windows 98 niet zo'n probleem maar onder Windows 2000 en XP wordt dit een wat lastiger klus. De opzet van het project is als volgt:
De spoel van de luidspreker zit in een osscilatiekringetje en de varierende blokgolf die hieruit komt wordt aan een one-shot aangeboden, van deze spanning wordt de gemiddelde waarde genomen en aan een ADC gegeven. Deze ADC (TLC549) geeft hem serieel uit op de neergaande flanken van de clockpuls.
Deze TLC549 heeft (voor de uitlezing) een chipselect, een clock ingang en een data uitgang waar 8 bits de analoge waarde aan de ingang weergeven. Ik had zo gedacht dat we de chipselect aan 1 van de pennen van de RS232 interface hangen bijvoorbeeld aan DTR en de clock aan RTS. Ik kan echter nergens iets vinden hoe ik dit in een DLL voor elkaar kan krijgen zodat ik in Delphi/C++/Labview zonder omslachtige functies de waarde uit kan lezen.
De data komt dan als volgt binnen:
1.) CS=1, ADC is bezig met conversie (DTR=1)
2.) CS=0, ADC zet waarde op uitgang, het MSB eerst (DTR=0)
3.) 7 clockpulsen geven de andere bits uit op RxD (RTS=1/0)
4.) CS=1, ADC gaat verder met conversie totdat volgende waarde opgevraagd dient te worden (DTR=1)
Geconcludeerd wil ik graag weten hoe ik zelf een DLL schrijf voor Windows 95 tot en met XP, die de DTR en RTS pennen een bepaalde waarde kan geven zo dat de DLL een waarde uitgeeft die juist is met de ingangswaarde van de ADC.
Onder Windows 98 niet zo'n probleem maar onder Windows 2000 en XP wordt dit een wat lastiger klus. De opzet van het project is als volgt:
De spoel van de luidspreker zit in een osscilatiekringetje en de varierende blokgolf die hieruit komt wordt aan een one-shot aangeboden, van deze spanning wordt de gemiddelde waarde genomen en aan een ADC gegeven. Deze ADC (TLC549) geeft hem serieel uit op de neergaande flanken van de clockpuls.
Deze TLC549 heeft (voor de uitlezing) een chipselect, een clock ingang en een data uitgang waar 8 bits de analoge waarde aan de ingang weergeven. Ik had zo gedacht dat we de chipselect aan 1 van de pennen van de RS232 interface hangen bijvoorbeeld aan DTR en de clock aan RTS. Ik kan echter nergens iets vinden hoe ik dit in een DLL voor elkaar kan krijgen zodat ik in Delphi/C++/Labview zonder omslachtige functies de waarde uit kan lezen.
De data komt dan als volgt binnen:
1.) CS=1, ADC is bezig met conversie (DTR=1)
2.) CS=0, ADC zet waarde op uitgang, het MSB eerst (DTR=0)
3.) 7 clockpulsen geven de andere bits uit op RxD (RTS=1/0)
4.) CS=1, ADC gaat verder met conversie totdat volgende waarde opgevraagd dient te worden (DTR=1)
Geconcludeerd wil ik graag weten hoe ik zelf een DLL schrijf voor Windows 95 tot en met XP, die de DTR en RTS pennen een bepaalde waarde kan geven zo dat de DLL een waarde uitgeeft die juist is met de ingangswaarde van de ADC.
Speed kills, but beauty lives forever...