Forum: Mikrocontroller und Digitale Elektronik Taster an Atmega8 -> PC HILFE ( VB 2008 )


von Sebastian M. (sebastian_m58)


Lesenswert?

Hallo, Ichbin grad an einem Projekt und zwar will ich mir e-drums bauen 
...

ich habe bereits platinenlayout fertig wo ich Piezo-Elemente mit einer 
transistorschaltung als taster benutze..
(Ich benutze einen USB To TTL UART Wandler.)

also hardwaremäßig ist alles gut..

Ich schaff es z.b. mit visual basic am atmega etwas zuschalten ( Z.B. 
LED ) aber andersherum nicht..

Ich möchte es schaffen dass ich dann diese taster "Drücke" am Atmega als 
sound in VB2008 ausgeben will

Und meint ihr es gibt eine große verzögerung zwischen tasterdruck und 
sound von VB ??

Schonmal danke (:

(Und Sorry für Rechtschreibfehler)
Mfg Sebastian

von Volker S. (volkerschulz)


Lesenswert?

Sebastian M. schrieb:
> [...]
> also hardwaremäßig ist alles gut..
>
> Ich schaff es z.b. mit visual basic am atmega etwas zuschalten ( Z.B.
> LED ) aber andersherum nicht..

Woran genau scheitert es bei dem "andersherum" denn? Und wie genau 
funktioniert das Zuschalten bereits?

> [...]
> Und meint ihr es gibt eine große verzögerung zwischen tasterdruck und
> sound von VB ??

Davon musst Du ausgehen. Bei vielen USB-Wandlern lassen sich FIFO und 
andere Puffer nicht mal deaktivieren. An Deiner Stelle wuerde ich mich 
mal in Richtung MIDI-Interface schlau lesen...


Volker

von Sebastian M. (sebastian_m58)


Lesenswert?

Also andersherum .. ich kann mit VB 2008 schon mit dematmega connecten 
und über buttons leds aus und an schalten .. aber ich möchte einen 
taster an atmega8 anschließen und in vB einlesen und sound ausgeben

Ps der wandler hat den chipsatz

cp2102

von Sam .. (sam1994)


Lesenswert?

Volker Schulz schrieb:
> Davon musst Du ausgehen. Bei vielen USB-Wandlern lassen sich FIFO und
> andere Puffer nicht mal deaktivieren. An Deiner Stelle wuerde ich mich
> mal in Richtung MIDI-Interface schlau lesen...

Das wird allgemein sehr sportlich werden. Selbst Midi hat Latenzen im 
ms-Bereich (Hörbar).

Sebastian M. schrieb:
> Also andersherum .. ich kann mit VB 2008 schon mit dematmega connecten
> und über buttons leds aus und an schalten .. aber ich möchte einen
> taster an atmega8 anschließen und in vB einlesen und sound ausgeben

Du musst deine Daten vom Atmega zum PC senden.

von Sebastian M. (sebastian_m58)


Lesenswert?

Ja aber wie SerialPort1.Read ?

Mit wie viel verzögerung muss ich rechnen ..

Link von Wandler: 
http://www.ebay.de/itm/USB-2-0-to-UART-TTL-6PIN-Module-Serial-Converter-CP2102-/370532286388?pt=PCC_Drives_Storage_Internal&hash=item564571ffb4


Edit: oder mit Print schicken und einlesen und vereibeten lassen mit VB 
?

von Sam .. (sam1994)


Lesenswert?

Sebastian M. schrieb:
> Ja aber wie SerialPort1.Read ?

Ja würde gehen. Nur dass SerialPort1.Read das ganze Programm blockiert. 
Nimm ein Event dafür.


Und ich würde dir trotzdem Midi empfehlen, da du die Software am PC dann 
nicht mehr schreiben musst. Einfach deinen Avr Midifähig machen und an 
den PC anschließen.

von Sebastian M. (sebastian_m58)


Lesenswert?

Das mit dem midi versteh ich ned ? also gleich ohne ttl wandler an pc ? 
oder wie ?

(Bin VB2008 Neuling.. weis so gut wie nix)

von Sam .. (sam1994)


Lesenswert?

http://de.wikipedia.org/wiki/Musical_Instrument_Digital_Interface

Mit Midi brauchst du am PC nichts mehr zu programmieren.

von Sebastian M. (sebastian_m58)


Lesenswert?

Was für ein gerät kansnt du mir z.b. empfehlen ( vielleicht nicht so 
teuer.. und wie schließt mann soetzwas am µC an ^^) ( Sowas ist das doch 
odeR ? http://www.megadrum.info/ )

Is das dann so wie ein DrumModul ?

Wenn ich das richtig vertsanden hab dann misst das dann auch die stärker 
des singales ?

( Würde ja auch mit mehreren Atmega8 gehen oder ? weil Die Piezo 
elemente erzeugen strom ... und mehr um so stärker man es "antippt".. 
Hald an ADC anschließen .. aber da wird die Software zur qual ^^)

von Sebastian M. (sebastian_m58)


Lesenswert?

aber was denkst du wie lange es dauer wird das vb den sound apspielt .. 
also von Piezo Element -> Transistor -> Atmega8 -> USB to TTL UART -> 
VB2008 ????

von Volker S. (volkerschulz)


Lesenswert?

Sebastian M. schrieb:
> aber was denkst du wie lange es dauer wird das vb den sound apspielt ..
> also von Piezo Element -> Transistor -> Atmega8 -> USB to TTL UART ->
> VB2008 ????

Wie schon angedeutet, befuerchte ich dass die Latenzen weder bestimmbar 
noch konstant sind...

Volker

von Sebastian M. (sebastian_m58)


Lesenswert?

Die schnelligkeit hat was mit Baud Rate zu tuhn oder ?


Aber das mit verzögerung is eigentlich ein kleines problem .. dass soll 
nur ein test sein.. mich interresiert es hauptsächlich wie ich mit 
atmega8 an pc senden kann und mit vb empfangen .. (Dadurch kann ich dann 
auch Z.b. extra pad für pc bauen)

von Sam .. (sam1994)


Lesenswert?

Volker Schulz schrieb:
> Wie schon angedeutet, befuerchte ich dass die Latenzen weder bestimmbar
> noch konstant sind...

Bei Midi müssten sie konstant sein.


Ein Midigerät senden die Mididaten über den gameport. Das kann dein 
Atmega machen. Du brauchst keine zusätzlichen ICs. Am Computer wird über 
die Systemsteuerung der Gameport als MidiIn eingestellt.

Sebastian M. schrieb:
> mich interresiert es hauptsächlich wie ich mit
> atmega8 an pc senden kann und mit vb empfangen

Sag das doch gleich und nimm dir kein riesenprojekt vor. Sende ein paar 
Bytes per Uart und empfange sie erstmal mit einem UartTerminal, dann per 
VB.

von Sebastian M. (sebastian_m58)


Lesenswert?

gibt es sowas wie eine probeschaltung wo ich vvergrößern kann für mein 
aufbau... ?? ich brauch nähmlich 7 signale

Ja dann mal ende mit dem Midi thema XD ^^

Ehm Wie verschick ich Bytes Via. Uart .. des is mei erstes projekt .. 
sonst habe ich nur mit attiny2313 oder den attiny13 ganzz wenig 
gearbeitet

von Volker S. (volkerschulz)


Lesenswert?

Sebastian M. schrieb:
> Die schnelligkeit hat was mit Baud Rate zu tuhn oder ?

Nicht ausschliesslich.


> [...] mich interresiert es hauptsächlich wie ich mit
> atmega8 an pc senden kann und mit vb empfangen [...]

Beides geht noch nicht? Benutz auf PC-Seite erst mal ein 
Terminalprogramm bis das Senden vom µC funktioniert. Dann kuemmerst Du 
Dich um die VB-Seite (Schau Dir die Events des SerialPort-Objekts an).


Samuel K. schrieb:
> Volker Schulz schrieb:
>> Wie schon angedeutet, befuerchte ich dass die Latenzen weder bestimmbar
>> noch konstant sind...
>
> Bei Midi müssten sie konstant sein.

Ja, aber dahingehend ist der TO ja (noch) beratungsresistent. ;)


Volker

von Sebastian M. (sebastian_m58)


Lesenswert?

Soll ich das dann mit dem Print befehl und z.b. dem terminal von Bascom 
probieren ?


( kann ich für diesen versuch auch einen attiny2313 benutzen.. atmega8 
kommt erst die tage )


Und muss ich dann Den µC und den wandler so anschließen ?

Computer        µC
===================
TX  --------->  RX
RX  <---------  TX
GND ----------  GND


#####################################

$regfile = "M8def.dat"
$crystal = 1000000
$hwstack = 100
$swstack = 100
$framesize = 100
$baud = 4800 ( ist glaube ich maximum von Dem wandler )

Print "Hallo"

End

####################################

von Peter R. (peterfido)


Lesenswert?

4800 ist mit Sicherheit nicht das Maximum vom "Wandler". Aber von der 
Fehlerabweichung her der höchste bei 1MHZ. Takte den Mega8 auf 8 MHZ, 
dann kannst Du mit 38400 senden, was ein guter Wert ist. Den virtuellen 
ComPort, bzw das Terminalprogramm (oder Dein VB Programm) musst Du dann 
auf auf 38400 stellen.

Unter VB6 sind da kaum spürbare Verzögerungen vom Senden bis zum 
Empfang. Wenn Du "schnell" eine MP3 Datei abspielen möchtest, wenn der 
entsprechende Befehl kommt, kannst Du die Datei schon in den Puffer 
laden, sodass diese dann nur noch aus diesem wiedergegeben werden 
braucht. Dafür eignet sich MCI oder auch die BASS.DLL.

Unter VB2008 kann es zu etwas größeren Verzögerungen kommen, da das .NET 
Framework etwas umfangreicher ist und erst geladen werden muss. Meist 
ist nur der erste Vorgang verzögert, spätere laufen gefühlt schneller 
los.

Dafür würde ich einfach mal in einem Visual Basic Forum stöbern. Die 
Frage brauchst Du eigentlich nicht stellen, sondern nur die Suche 
anwerfen und die Lösungsvorschläge ansehen.

MIDI kannst Du fast vergessen, kaum ein aktueller PC hat noch eine 
Soundkarte mit analogen 15 poligem Joystick Anschluß, welcher dann auch 
gleichzeitig als MIDI Schnittstelle dient.

von Volker S. (volkerschulz)


Lesenswert?

Peter R. schrieb:
> Unter VB6 sind da kaum spürbare Verzögerungen vom Senden bis zum
> Empfang. [...]
> Unter VB2008 kann es zu etwas größeren Verzögerungen kommen, da das .NET
> Framework etwas umfangreicher ist und erst geladen werden muss. Meist
> ist nur der erste Vorgang verzögert, spätere laufen gefühlt schneller
> los.[...]

Das ist beides nicht ganz richtig. Es gibt einfach zu viele Layer (bzw. 
"Zwischenstationen") zwischen µC und PC-Applikation, deren Latenzen 
nicht vorhersagbar sind, insbesondere beim Einsatz von 
USB-Seriell-Wandlern und deren Treibern. Selbst wenn man es schafft die 
Schnittstelle auf Kernel-Level anzusprechen, koennte immernoch der FIFO 
im Wandler Probleme machen. Mit einer echten seriellen Schnittstelle 
haette man dann evtl. noch eine Chance, aber keinesfalls eine Garantie. 
Und das kann man auch niemandem zum Vorwurf machen, weil die 
Schnittstelle (im Gegensatz zu MIDI) fuer solch eine 
"Real-Time-Uebertragung" nie vorgesehen war. Dein Beispiel mit der 
MP3-Datei funktioniert auch nur so lange, wie Du schon "nachlaedst" und 
pufferst (was aber bei einem Drum-Pad nicht ginge).


> [...]
> MIDI kannst Du fast vergessen, kaum ein aktueller PC hat noch eine
> Soundkarte mit analogen 15 poligem Joystick Anschluß, welcher dann auch
> gleichzeitig als MIDI Schnittstelle dient.

Naja, MIDI ist genau das, was er eigentlich sucht. PCI-Soundkarten mit 
MIDI-Port gibt es schon im einstelligen Euro-Bereich. Ebenso 
USB-MIDI-Wandler. Letztere haben dann im allgemeinen keinen 
"Joystick-Port" sondern je einen DIN-Stecker fuer MIDI-IN und -OUT. So 
schnell wird die Schnittstelle auch nicht aussterben, da sie immer noch 
die Schnittstelle zum Anschluss von Musik-Equiptment ist.

Hinzu kommt, dass ein anstaendiges Drum-Pad mehr als 1 und 0 pro Schlag 
uebertragen sollte (um z.B. die Staerke des Schlags zu uebermitteln). 
Wenn man dann auf dem µC noch ADC-samplen muss um die Daten dann digital 
ueber die serielle Schnittstelle zu schieben, ist das Chaos wohl 
komplett. ;)

Ich wuerde dem TO aber durchaus an's Herz legen, das alles auch mal mit 
der seriellen Schnittstelle zu probieren und ausfuehrlich zu messen. 
Geht ja bekanntlich ueber studieren... Vielleicht erst mal Tx und Rx auf 
der TTL-Seite verbinden und in VB(.NET) die Latenzen eines Echos messen. 
Nur um ein "Gefuehl" fuer die (Un-)Moeglichkeiten der Schnittstelle zu 
bekommen...

Volker

von Sebastian M. (sebastian_m58)


Lesenswert?

Ja dann bestell ich mir nächstes wochende wenn Vater daheim is bei 
cornad einen atmega8 lass einen print befehl über den wandler via taster 
schicken und schau mal ob es verzögerungen gibt.. bei z.b. zu schnellen 
"schlägen" hintereinander... wenn ich dann ned grad ne verzögerung von 
0,5 sekunde hab dann is es mal ok ^^

Ehm Notfalls bau ich es mit 6,3klinkebuchsen und verkaufs für 50 euro in 
ebayals billig drumodul ^^ .. Spaß ^^



Die sound daten sind Microsoft Wave Soundformat

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.