mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Soft-USB AVR


Autor: J. K. (rooot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

Ich soll die Steuerung eines Lüfters bauen, der Später in einem 
mini-Windkanal in meiner Schule als Lehrmittel eingesetzt wird (ich bin 
Schüler). Die Regelung des Lüfters gestaltet sich als denkbar einfach. 
Dieser hat einen Eingang, welcher je nach Spannung die Drehzahl regelt. 
Dieser Eingang zieht keinen Strom (vll ein paar µA). Der Lüfter soll 
aber über den PC gesteuert werden.

Derzeiteiges Konzept: PWM ATMega16 (ich weis,der langweilt sich zu 
tode), RS232

Das problem ist, dass neuere PC ja keine RS232 mehr  haben, jetzt wäre 
USB schön.

für wie aufwändig würdet es ihr halten, die Software von UlrichRadig 
umzuschreiben? (ich mach das nämlch mehr oder weniger freiwillig)
http://www.ulrichradig.de/home/index.php/avr/usb-relaiskarte
die virtuelle RS232 würde mir sehr gefallen.

zum µC muss eigentlich nur immer eigentlich nur 1 Wert gesendet werden 
(zB Drehzal aus der der µController dann den Timer/Spannungswert 
errechnet)

Hardware USB Lösungen mit zusätzlichen IC's möchte ich eher vermeiden.

mfg
J.K.

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Das problem ist, dass neuere PC ja keine RS232 mehr  haben, jetzt wäre
>USB schön.

Dann nimm einen fertigen USB-RS232 Wandler und schon gehts wieder.
Tu dir das mit dem USB Kram im AVR nicht an.

Autor: Igor Metwet (bastel-wastel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier gibts nen USB zu RS232 Wandler auf AVR-Basis:
http://www.recursion.jp/avrcdc/

Erzeugt über den Windows-Treiber eine virtuelle COM-Schnittstelle.

Das einfachste Wäre der Einsatz von zwei µCs. Einer als 
Schnittstellenwandler und einen für die Lüftersteuerung. Wäre das 
einfachste, da du nicht in dem Programm mit der USB-Software 
herumdoktern musst.

Ansonsten hier mal schauen:
http://www.obdev.at/products/avrusb/prjall.html

PS: Oder natürlich einen fertigen Wandler (das allereinfachste ;-)  ) 
oder einen USB zu RS232 Wandler IC (FTDI).

Autor: Tobias Plüss (hubertus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
RS232 ist wieder am kommen.
Richtige Desktop-PCs werden wieder mit einer RS232 ausgerüstet. (Meiner 
hat jedenfalls eine)
Okay, in Billigpcs vielleicht nicht unbedingt.

Autor: Hmm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Tobias:

> RS232 ist wieder am kommen.

Das würde mich als  Bastler freuen, allerdings glaub ich da nicht dran. 
Die RS232-Schnittstelle wird es genau solange geben, wie es Geräte damit 
im Consumerbereich geben wird. Wenn ich mich allerdings in Mediamärkten 
so umschaue, find ich leider kein Gerät, welches eine physikalischen 
RS232-Schnittstelle hat.

Das heißt jetzt nicht, das es nicht etliche RS232-über-USB Varianten 
(FTDI oder Prolific) gibt/geben wird. Aber für die breite Masse lohnt 
sich RS232 einfach nicht, da

1. es aufgrund der riesigen Stecker viel Platz am Gerät braucht
   (der IPOD säh schon bissl schräg mit 'ner SUB D9 aus, oder? ;) )

2. es verglichen mit USB 2.0 extrem langsam ist

3. es kein einheitliches Treiber-Schema gibt und somit Plug&Play im
   Gegensatz zu USB wo es zumindest auf dem Papier möglich ist, nicht 
funzt

4. es zu teuer ist, so ein MAX232+Hühnerfutter kostet nunmal etwas mehr 
als
   3 Widerstände

Die Liste kann man ewig fortsetzen. RS232 lohnt nur bei klobigen Geräten 
in kleiner STückzahl, wo die Entwicklungskosten nennenswert ins Gewicht 
fällt. Und auch die Entwicklungskosten werden aufgrund der Verbreitung 
freier USB-Stacks im Laufe der nächsten Jahre bald kein nennenswerter 
Grund mehr sein..

Autor: Atmega8 Atmega8 (atmega8) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also RS232 mit 0/5V oder 0/3.3V Logiklevel mit einer etwas höheren 
Datenrate ( variabel oder mit ein paar Stufen, Low, Normal und High) wär 
ganz interessant.

Irgend etwas was hardwaretechnisch leicht zu realisieren ist und 
softwareseitig leicht zu nutzen.

Es sollte ohne Treiber auskommen, man wählt einfach nur die Buchse an 
der das Gerät steckt.

So ähnlich wie USB, nur besser.

Autor: Igor Metwet (bastel-wastel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da wäre wohl RS485 auch interessant. Schneller und störsicherer als 
RS232. Aufwand ist leicht erhöht. Zudem ist RS485 in der Industrie als 
Feldbus weit verbreitet.

Ich denke nicht, dass sich diese alten Schnittstellen am PC-Markt wieder 
behaupten können. USB ist (in Massen) spottbillig. Plug&Play, hohe 
Datenrate, liefert gleich ne Versorgungsspannung, BUS, kompakte 
Stecker,...

Für den Heimanwender hat USB eigentlich nur Vorteile - da spricht 
eigentlich nichts für die alten Legacy-Schnittstellen.

Mal schauen, ob die µC-Hersteller mal ordentliche USB-Hardware 
integrieren. Im einfachsten Fall einen Wandlerchip (wie FTDI) oder eben 
eine getrennte Recheneinheit, die das USB-Protokoll verwaltet. Einfacher 
wird es natürlich nicht als RS232.

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine virtuelle RS-232 über Software-USB auf dem AVR ist, streng
genommen, Murks. Warum?

Software-USB auf dem AVR geht nur mit Low-Speed (1,5 MBit/s). Virtuelle
RS-232-Schnittstellen über USB nutzen den Bulk-Transfer, der aber nach
USB-Standard nur für Full- und High-Speed vorgesehen ist. Wenn
Bulk-Transfer mit Low-Speed trotzdem funktioniert, liegt das am
Wohlwollen des PC-seitigen USB-Controller-Treibers, der dies nicht
abprüft.

Solche "wohlwollenden" Treiber sind bspw. der von Win XP und der
Linux-Treiber für OHCI-Controller. Pedantisch ist hingegen der
Linux-Treiber für UHCI-Controller, weswegen dort diese Soft-USB-
RS232-Lösungen ohne Kernel-Patch nicht funktionieren.

Wie es bei anderen Betriebssystemen aussieht, weiß ich nicht. Die
sauberere Lösung ist es aber auf jeden Fall, einen hardwaremäßigen
USB-Seriell-Konverter an den AVR dranzupappen. Der FT232RL bspw. kommt
fast ohne externe Komponenten aus und kann deswegen problemlos in der
Anwendung.

Autor: J. K. (rooot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Hier gibts nen USB zu RS232 Wandler auf AVR-Basis:
>http://www.recursion.jp/avrcdc/

danke, das dürfte der source sein den urlich radig verwendet hat.

ich schau mal ob ich es schaff diesen für den mega16 umzuschreiben. 
(momentan ärgert mich das makefile ein bisschen)

am ende wird wohl noch platz für eine pwm sein..


>Eine virtuelle RS-232 über Software-USB auf dem AVR ist, streng
>genommen, Murks.
naja, das Ding soll ja nicht verkauft werden. Auf dem PC läuft XP, mit 
Vista soll es ja auch noch funktionieren.

mfg
J.K

Autor: J. K. (rooot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so, hab mich ein wenig mit dem Programm beschäftigt und sehe 
optimistisch in die Zukunft ... ... ;-)

ich will jetzt den code editieren von http://www.recursion.jp/avrcdc/ 
und zwar die CDC - IO


download:
http://www.recursion.jp/avrcdc/CDC-IO.2008-08-25.zip

in der main.c Datei gibt es eine
void usbFunctionWriteOut( uchar *data, uchar len )

funktion. In dieser werden die Steuerzeichen abgefrag und abgearbeitet.

die empfangenen Daten stehen im data-Array.

Ich stell mir das jetzt so vor, dass ich den Code in dieser Funktion 
einfach durch meinen ersetze. also

-wert auslesen
-timer berechnen
-hw-pwm timer setzten

da die pwm durch Hardware realisiert wird, beeinflusst es auch nicht die 
usb Kommunikation.


Jetzt zu meinem Problem:
Was ich noch nicht genau weiß: wie/wann wird diese funktion aufgerufen 
und was steht dan im rbuf array?

auf der virtuellen COM Schnittstelle wird was eingegeben, mit Enter 
bestätigt. Das wird jetzt über USB an den AVR gesendet und die 
usbFunctionWriteOut aufgerufen. Im "data"-Array steht der eingegebene 
String, im "len" eben die Länge.

Stimmt das soweit?

mfg
J.K

Autor: Martin (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

vielleicht passt meine Frage nicht hier aber ist auf jedem Fall von USB 
to RS232!

wenn ich ein Adapter baue mit dem code bzw. Schaltplan USB zu RS232 
Wandler auf AVR-Basis von http://www.recursion.jp/avrcdc/ wie bekomme 
ich die 5V an der Ding?
funktioniert das nur dann wenn ich es in eine Platine wie 
http://www.ulrichradig.de/home/index.php/avr/usb-relaiskarte baue? oder 
wird es von der USB mit dem 5V versorg?

vielen Dank
Gruß

Autor: Igor Metwet (bastel-wastel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kannst du machen wie du willst. Kannst die USB-Versorgung direkt 
anzapfen.
Trick: Einfach zwei Si-Dioden in Reihe zwischen AVR und 5V Versorgung. 
So läuft der AVR mit ~3,3V und du musst dann keine Pegeländerung mehr 
für die USB-DAtenleitungen vornehmen, die ebenfalls mit 3,3V arbeiten. 
Du musst dann nur eins beachten: Wenn dein 3,3V AVR mit einem 5V AVR 
zusammenarbeitet, dann musst du eine Pegeländerung vornehmen, d.h. dass 
das TX-Signal vom 5V AVR über nen Spannungsteiler auf ca. 3,3V begrenzt 
wird. Umgekehrt sollte der 5V AVR ein 3,3V Signal als high-Signal 
erkennen.
PS: Die Versorgung über die zwei Dioden ist in dem Link:
http://www.recursion.jp/avrcdc/
aber auch eingezeichnet. Der Kreis mit dem Strich durch soll als Symbol 
für die Versorgungsspannung des AVR herhalten.

Hab das Ganze hier schonmal als Prototyp aufgebaut - funktioniert 
bisher.
ABER: Benutze- wenn möglich- nicht sehr hohe Baudraten. Hab mir ein 
kleines Testprogramm auf dem AVR geschrieben, der mit das empfangene 
USART-Signal als Echo zurücksendet. Wenn ich größere Datenmengen am 
Stück (1000 Byte) mit 115000 Baud geschickt habe, wurden manchmal 
Zeichen verschluckt. Vielleicht könnte man dies mit einem Pufferspeicher 
verbessern. Bei einer lansameren Übertragungsrate gabs keine Probleme.
Wenn du die Version mit ATmega8/48/88 aufbaust, kannst du über den 
Windows-Treiber bzw. deinem Terminal-Programm oder sonstwas die 
Übertragungsrate bequem einstellen. Brauchst also keine Jumper oder 
sonstwas an der AVR-Hardware rumbasteln.

PS: Wenn du Versorgungsspannung vom USB anzapfst, dann denke bitte 
daran, dass deine Schaltung nicht mehr als 100mA zieht. Bzw. Versorge 
NUR den 3,3V AVR damit. Die Restliche Hardware mit einer weiteren 
Spannungsquelle (GNDs natürlich verbinden)

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Igor,

vielen Dank für die SUPER Antwort, bin leider nicht der Profi :-( bin 
noch Anfänger in Mc aber habe fast alles verstanden. Ich bastle gerne 
daher war meine Frage ob ich es sowas bauen könnte.

>> PS: Wenn du Versorgungsspannung vom USB anzapfst,
genau das möchte ich, das heißt ein Adapter unabgängig von Platine oder 
sonst was.

>> dann denke bitte
>> daran, dass deine Schaltung nicht mehr als 100mA zieht. Bzw. Versorge
>> NUR den 3,3V AVR damit.
das ist klar!

aber
>> Die Restliche Hardware mit einer weiteren
>> Spannungsquelle (GNDs natürlich verbinden)

wie andere Spannungsquelle wenn ich aber nur über USB Spannung verfüge?

Autor: Igor Metwet (bastel-wastel)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du z.B. POWER-LEDs betreiben willst. Dann bräuchtest du noch ne 
andere Spannungsquelle für die stromhungrigen Komponenten. Z.B. wenn du 
den USB zu RS232 Wandler direkt in eine Schaltung integrierst, wo schon 
ein µC sitzt.

Willst du dir nur einen USB zu RS232- Umsetzer bauen? Falls ja, dann 
brauchst du nur die USB-Versorgung.

Autor: J. K. (rooot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich probier jetzt einfach mal das RS232 Projekt aus.

Wenn ich das Ding anstecke wird ein unbekanntes USB-Gerät entdeckt.
Das liegt wahrscheinlich daran, dass ich die .inf datei noch verwenden 
muss.

Wo kopier ich die hin das es funktioniert?

Autor: J. K. (rooot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab rechte maustaste > installieren probiert

nichts erscheint

soll ich das mitbekommen wenn sich das ding installiert?

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
du muß den Treiber für den NEUEN Gerät einfach wie jeder andere 
installieren.

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das neue Gerät, erschein dann (wenn alles gut läuft) in Gerätemanager 
unter Anschlüsse
Gruß

Autor: J. K. (rooot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, es erscheint ein unbekanntes Gerät,

wollte für dieses einen neuen Treiber anlegen > diese .inf datei

Fehlermeldung: Datei enthält keine Informationen über die Hardware.

Hab auserdem ein kleines Problem mit den Z-Dioden. Kann es an dem 
liegen?
Beitrag "z-diode 2,7 statt 3,9"


Was kann passieren, wenn ich die Z-Dioden ganz weglasse? USB arbeitet 
doch mit 5V ?

mfg
J.K

Autor: J. K. (rooot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mhm, wahrscheinlich liegts am Code.

Hab jetzt die Leitungen zum µC abgesteckt, es erscheint immer noch die 
selbe Meldung.

Ich wollte mir die Anwendung auf nen mega16 umschreiben. Hab das 
Makefile vom MEGA168 auf MEGA16  umgestellt und einfach compiliert. 
Keine Fehler. Gibt es tükische Unterschiede vom 16er zum 168er außer, 
dass der 16er nicht auf 20Mhz läuft?

mfg
J.K

Autor: Martin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hast du die Fuse richtig eingestellt??

Autor: J. K. (rooot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
welche?

oszillator? ja

Autor: Atmega8 Atmega8 (atmega8) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@ J. K.
Data+ und Data- vertauscht ?
PullUp-Widerstand an D+ oder D- ?

Autor: J. K. (rooot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nein hab ich nicht, auch schon mehrere varianten probiert

Pull up an d-

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Pull up an d-

Wenn ich mir meine Schaltungen mit FT245BM ansehe gehört
der Pullup an d+.

Autor: J. K. (rooot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
http://avrusb.wikidot.com/hardware

danach an d-

wenn ich ihn an d+ hänge tut sich gar nichts.


der dient ja dazu, dass ein gerät erkannt wird

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Wenn ich mir meine Schaltungen mit FT245BM ansehe gehört
>der Pullup an d+.

Hab mir gerade mal meine Schaltungen mit PIC18F2550
angesehen. Da hängt er auch an d-. Der PIC ist ein Slowspeed
Device. Der FT245 ein Fullspeed Device. Macht wohl den
Unterschied. USB ist grausam!

Autor: J. K. (rooot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
oh mann

habs aufgegeben gehabt

jetzt file noch mal runtergeladen, neu geöffnet, auf mega16 eingestellt, 
compiliert...

jetzt gehts!

device wird erkannt!

danke für eure hilfen! (hat mir mental sehr geholfen es immer wieder zu 
versuchen!!! :-) )

mfg
J.K

(ps: als "Z-Dioden" verwende ich 2 gelbe Leds ^^ )

Autor: Unbekannt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich habe mir auch die Schaltung mit dem Mega8  aufgebaut. Habe den 
Controller geflasht und die Fusebits eingestellt. Als ich die Schaltung 
an meinem Laptop(WinXP) ansteckte, bekam ich keine(!!!) Meldung. Weder 
dass das Gerät erkannt / nicht erkannt wurde. Jedoch konnte ich keine 
Spg zwischen GND und VCC messen!
Meine Frage: benötigt USB eine Mindest-Last, um ein Device zu erkennen?

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Jedoch konnte ich keine Spg zwischen GND und VCC messen!

Kurzschluss auf der Platine? Dann schaltet der USB Port sich ab.

>Meine Frage: benötigt USB eine Mindest-Last, um ein Device zu erkennen?

Nein.

Autor: Unbekannt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich habe nocheinmal nachgemesssen:
Nein ich habe keinen KS zw. Vcc und GND!

Wenn ich das Gehäuse des Steckers mit GND verbinde, bekomm ich die 
Fehlermeldung, Stromüberhöhung...

MFG Unbekannt

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>>Jedoch konnte ich keine Spg zwischen GND und VCC messen!
>Kurzschluss auf der Platine? Dann schaltet der USB Port sich ab.

Hätte ich fast vergessen. VCC oder GND nicht angeschlossen
könnte auch noch sein. Also irgendwo eine offene Leitung.

Autor: Unbekannt (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier ist meine Schaltung:

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mal ne ganz blöde Frage:
Wo hast du die Schaltung her?

Autor: Unbekannt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist die Schaltung von der obdev-Seite.

Ich habe im Code nur die Pins geändert (D+, D-)...

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich habe im Code nur die Pins geändert (D+, D-)...

Und das solltest du besser NICHT tun.

Autor: Unbekannt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
D.h.: ich sollte die Schaltung besser neu ätzen?
MFG Unbekannt

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>D.h.: ich sollte die Schaltung besser neu ätzen?

Fummel die auf das Original um. Das sollte reichen.

Autor: Unbekannt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke hoger!

Ich werde meine Platine nun ein bisschen verändern...

MFG Unbekannt

Autor: J. K. (rooot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Und das solltest du besser NICHT tun.

wieso?
#define USB_CFG_DMINUS_BIT      3
/* This is the bit number in USB_CFG_IOPORT where the USB D- line is connected.
 * This may be any bit in the port.
 */
#define USB_CFG_DPLUS_BIT       2
/* This is the bit number in USB_CFG_IOPORT where the USB D+ line is connected.
 * This may be any bit in the port. Please note that D+ must also be connected
 * to interrupt pin INT0! [You can also use other interrupts, see section
 * "Optional MCU Description" below, or you can connect D- to the interrupt, as
 * it is required if you use the USB_COUNT_SOF feature. If you use D- for the
 * interrupt, the USB interrupt will also be triggered at Start-Of-Frame
 * markers every millisecond.]
 */


Hab jetzt auch wieder ein Problem ;-)

Wollte jetzt den Beispeil-Code von http://avrusb.wikidot.com/driver-api 
mal ausprobieren.
static uchar buffer[64];
static uchar currentPosition, bytesRemaining;
 
usbMsgLen_t usbFunctionSetup(uchar setupData[8])
{
    usbRequest_t *rq = (void *)setupData;   // cast to structured data for parsing
    switch(rq->bRequest){
    case VENDOR_RQ_WRITE_BUFFER:
        currentPosition = 0;                // initialize position index
        bytesRemaining = rq->wLength.word;  // store the amount of data requested
        if(bytesRemaining > sizeof(buffer)) // limit to buffer size
            bytesRemaining = sizeof(buffer);
        return USB_NO_MSG;        // tell driver to use usbFunctionWrite()
    }
    return 0;                               // ignore all unknown requests
}
 
uchar usbFunctionWrite(uchar *data, uchar len)
{
    uchar i;
    if(len > bytesRemaining)                // if this is the last incomplete chunk
        len = bytesRemaining;               // limit to the amount we can store
    bytesRemaining -= len;
    for(i = 0; i < len; i++)
        buffer[currentPosition++] = data[i];
    return bytesRemaining == 0;             // return 1 if we have all data

Bekomme immer die Fehlermeldung, dass VENDOR_RQ_WRITE_BUFFER nicht 
existiert, hab ich auch "per hand-suchfunktion" nicht gefuden.

hat das schon mal wer verwendet? kennt sich damit jemand aus?

source http://www.obdev.at/products/avrusb/download.html

mfg
J.K

Autor: J. K. (rooot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab jetzt doku ducht, hab irgendwie nichts mehr über
VENDOR_RQ_WRITE_BUFFER gefunden?!

Autor: J. K. (rooot)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ganzer Code im Anhang!

Ich hab auch schon alle restlichen Files durchsucht. Mich wundert es gar 
nicht dass VENDOR_RQ_WRITE_BUFFER nicht gefuden wird. ich find es auch 
mit der Suchfunktion nicht.

Autor: J. K. (rooot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hab die umschreibevariante jetzt aufgebeben

möchte jetzt den rs232 - Wandler nachbauen. die einzige Änderung ist, 
dass ich einen mega16 verwende, dürfte ja kein Problem sein - dachte 
ich.

copiliert > makefile mega16 eingestellt > hat funktioniert > controller 
bespielt > treiber installiert

schalt ich auf die virtuelle com Schnittstlle erscheint nach jedem 
Tastendruck auf der Tastatur ein <CE-995>. Von usb nach 
rs232(2.terminal) wird nichts übertragen. ist das <CE-995> eine art 
Fehlercode?

Autor: J. K. (rooot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach, die blöden uart register heissen beim 16er wieder anders als beim 
8er

problem gelöst

mfg
J.K

Autor: J. K. (rooot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Projekt fast fertig:

Mein Lösungsweg (falls jemand mal die Suchfunktiohn verwendet und auf 
diesen Beitrag stößt):

RS232->USB Wandler Software auf MEGA16 aufgespielt. In der uart.c wird 
das senden/empfangen abgefangen. Die Daten werden nicht auf die 
sereielle Schnittstelle weitergegeben sondern im Controller verarbeitet. 
Nicht die schönste Lösung, aber die einfachste ;-).

mfg
J.K

Autor: Unbekannt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Bei mir funktioniert so weit alles -> Der PC erkennt das USB-Device und 
erstellt mir einen virtuellen Com-Port...

Wie kann ich jetzt mit dem Controller kommunizieren?
-> Verwende Hyper-Terminal

Autor: quotschmacher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
J. K. schrieb:
> In der uart.c wird
> das senden/empfangen abgefangen.

Sorry, das ich nen alten Thread auskrame, aber ich stehe zur Zeit vor 
dem Problem, das ich mir die uart.c angucke und nicht weiß, wo ich da 
ansetzen soll.
Wo genau fängt man denn da das Senden (was ja dann das Empfangen vom USB 
wäre) ab?

Autor: J. K. (rooot)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@quotschmacher:
Wenn du die uart.c gefunden hast, wo ist das problem?

in der Funktion

void uartPoll(void)


ist schön komentiert:
/* transmit */

Das "wo?" wäre somit geklärt.

Schau es dir mal genauer an, und denk über das "Wie?" nach. Eigentlich 
gar nicht so schwierig.

MfG
Jürgen

PS.: Möchte jetzt nicht arroganterweise Infos vorenthalten, aber wenn 
man das "wie" nicht selbst versteht, geht das "wie mach ich weiter" auch 
nicht.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.