Daten für Drucker abfangen

OP #758863
Lesenswert?

Hi @ all,

Ich hab vor mit einer kleinen Schaltung einen Drucker zu simulieren.

Die Schaltung soll einem Messstem das die Druckerdaten zu einem Uralten 
HP Thinkjet 2225C sendet (Parallel) die Daten ab nehmen und seriell an 
einen PC senden, der wiederum der Schaltung ein ACK Signal sendet 
nachdem er die Daten (8Bit) in ein File geschrieben hat. der µC in der 
schaltung soll dann die ACK BUSY und STROBE Leitungen der Parelellen 
Schnitstelle entsprechend schalten.

Meine Frage ist nun ob mein Schema grundsätzlich richtig ist.

Was für einen µC empfehlt ihr mir, was für einen Pegelwandler etc.

Vielen Dank im Voraus.

Elias
Angehängte Dateien:
#758871
Lesenswert?

@ Elias B. (bouni)

>Die Schaltung soll einem Messstem das die Druckerdaten zu einem Uralten
>HP Thinkjet 2225C sendet (Parallel) die Daten ab nehmen und seriell an

hatten wird das thema nicht gerade?

>einen PC senden, der wiederum der Schaltung ein ACK Signal sendet
>nachdem er die Daten (8Bit) in ein File geschrieben hat. der µC in der
>schaltung soll dann die ACK BUSY und STROBE Leitungen der Parelellen
>Schnitstelle entsprechend schalten.

Deinen PC nach JEDEM Zeichen ein ACK senden zu lassen ist Unsinn, das 
wird langsam wie Sau. RS232 in "echt" nimmt man heute nicht mehr, eher 
einen virtuellen COM-Port über USB. Dann kannst du sogar 3 Mbaud fahren.

>Meine Frage ist nun ob mein Schema grundsätzlich richtig ist.

Fast. Das Schieberegister ist völlig deplatziert. Ein kleiner uC (AVR 
tiny2313 oder so) reich völlig. der muss nur ein Byte parallel einlesen, 
in seinen UART schreiben und ACK zum Drucker senden. Der PC empfängt 
alles und schriebt es in eine Datei. Dazu braucht man kein grosse 
Handshake, USB ist schnell genug.

>Was für einen µC empfehlt ihr mir, was für einen Pegelwandler etc.

AVR, tiny2313 oder mega8. FTDI 232 RL

MfG
Falk
OP #759205
Lesenswert?

Danke erst mal für die Antworten,

Ja Ich hab schon mal n Thread gestartet aber da het keiner mehr 
zurückgeschrieben :)

Nicht desto Trotz:

"virtuellen COM-Port über USB" An was dachtest du da, an einen COM auf 
USB Adapter ??

Kann ich den Mit der PC Software bzw. Hyper Terminal ansprechen wie 
einen normalen Com Port ??

Hab mal den Editierten entwurf beigefügt.

http://bouni.owee.de/stuff/Schema2.jpg

Gruß und Danke für Alles :)


Elias
OP #759252
Lesenswert?

Ich komm mit dem Datenblatt nicht ganz zu streich,

PIN 20 VCC   -> Versorgungs spannung +5V vom USB !?
PIN 21 GND   -> Masse für die Versorgungs spannung vom USB

PIN 4 VCCIO  ->   ist das die spannung mit der die Signale an den UART 
des ATTIny gehen ??
PIN 7 GND    -> GND vom VCCIO

PIN 1 RXD -> zum UART
PIN 5 TXD -> zum UART

Brauch ich sonst noch was ??



Gruß Bouni
Angehängte Dateien:
#759262
Lesenswert?

@ Elias B. (bouni)

>PIN 20 VCC   -> Versorgungs spannung +5V vom USB !?

Ja, siehe Figure 18 Seite 29

>PIN 21 GND   -> Masse für die Versorgungs spannung vom USB

>PIN 4 VCCIO  ->   ist das die spannung mit der die Signale an den UART
>des ATTIny gehen ??

Ja.

>PIN 1 RXD -> zum UART
>PIN 5 TXD -> zum UART

Nö.

MFG
Falk
OP #759279
Lesenswert?

Ok,

Die Kondensatoren in dem letzten Bild, sind das normale Elkos ??
Gibt es da ne Faustregel bei der Auswahl der Kondensatoren welche man 
wofür nimmt?
Also Keramik, Tantal, Elko, Folien usw. ??


nun zum Attiny:

Ich hab gelesen das extern getaktet werden sollte wenn eine UART 
verbindung gemacht werden soll.

Hängt die spätere BAUD Rate vom Quarz Takt ab ??

Was für Kondensatoren nehm ich für den Quarz ??


Mfg Bouni
#759340
Lesenswert?

@  Elias B. (bouni)

>Die Kondensatoren in dem letzten Bild, sind das normale Elkos ??

Nein. Die 100nF sind Keramik, der 4,7u kann ein Elko oder Tantal sein.

>Gibt es da ne Faustregel bei der Auswahl der Kondensatoren welche man
>wofür nimmt?
>Also Keramik, Tantal, Elko, Folien usw. ??

Ja. Die kleinen unter 1uF Keramik, darüber Tantal. Grösser als 200uF 
gibt es meist nur Elkos.

>Ich hab gelesen das extern getaktet werden sollte wenn eine UART
>verbindung gemacht werden soll.

Im Prinzip ja.

>Hängt die spätere BAUD Rate vom Quarz Takt ab ??

Und ob!

>Was für Kondensatoren nehm ich für den Quarz ??

Gar keine. Der FTDI kann einen 6 MHz Takt ausgeben, damit kannst du 
deinen AVR takten. Du musst ja keine Standardbaudraten nutzen. Bei 6 MHz 
erreichst du bis zu 750kBaud.

MfG
Falk
#760267
Lesenswert?

@ Elias B. (bouni)

>http://bouni.owee.de/stuff/Schema5.jpg

>Ist das so ok ??

Fast.Schaltpläne sollten als PNG gespeichert werden. Warum, siehe 
Bildformate, das aber nur nebenbei.

>Die beschaltung vor dem FTDI hab ich aus dem Datenblatt und mal so
>interpretiert.

Du musst aber RXD und TXD kreuzen. RXD vom FTDI geht an TXD vom AVR.
Man sollte noch dem AVR 100nF spendieren.

>Was soll dieser "Ferrite Bead sein" ??

Eine kleine Ferritperle, quasi eine Induktivität, die aber besonders 
verlustbehalftet ist, um die HF-Energie zu schlucken.

>Welchen von den CBUS ich nehm für die 6Mhz ist egal oder ??

AFAIK ja.

Mfg
Falk
#762258
Lesenswert?

@ Rupplyn (Gast)

>Und, kannste doch machen. Der FT2232 hat 2 Ports. Einen kannste als
>Datenport verwenden, den anderen für deine Steuersignale...

Im Prinzip ja, ABER

- mit AVR "vor Ort" wird das Ganze WESENLTICH schneller
- man braucht keinerlei spezielle Software, einfach nur die Daten mit 
einem beliebigen Terminalprogramm vom virtuellen COM-Port mitschneiden 
und fertig.

Der Tiny kostet 1,30 Euro, das ist es allemal wert.

MfG
Falk
#764620
Lesenswert?

Hallo,

setze statt ACK Busy, alle mir bekannten Geräte kommen damit klar und 
das Timing ist sicherer. Es gab 2 Versionen, wann ACK kommen durfte, die 
nicht 100% kompatibel sind.

Mit der Folge Daten vom "PC" mit Strobe einlesen, dann sofort Busy 
setzen.
Wenn man die nächsten Daten haben will, Busy zurück und auf Strobe 
warten.

Gruß aus Berlin
Michael
#764633
Lesenswert?

@  Michael U. (amiga)

>setze statt ACK Busy, alle mir bekannten Geräte kommen damit klar und
>das Timing ist sicherer. Es gab 2 Versionen, wann ACK kommen durfte, die
>nicht 100% kompatibel sind.

Hmm,ist wohl auch so im Link beschrieben. Aber wer ist denn so doof 
solchem Murks zusammenzubasteln? Da ist das EEP Handshake tausendmal 
solider!

Aber der AVR @12MHz wirds schon richten ;-)

MFG
Falk
OP #764783
Lesenswert?

Danke für die Antworten erstmal,

Ich versteh das jetzt so:

1. Ich bekomme 8Bit auf dem Parellel Port und direkt danach das strobe 
Signal vom PC.

2. Ich setze sofort Busy auf High.

3. Ich verarbeite die 8 Bit.

4. Ich setzte busy wieder auf Low und warte auf die nächsten 8Bit.

Hab ich das jetzt so richtig verstanden ?

Mfg aus dem sonnigen Baden

Elias
#764861
Lesenswert?

Hallo,

hab gerade in meinen alten Sourcen geschaut: die kommenden Daten habe 
ich im IRQ INT1 geholt, dort hing Strobe vom Rechner dran.

Die vom Rechner "gedruckten" Daten wurden RAW auf eine MC-Card 
geschrieben und später vom AVR auf einen echten Drucker geschickt.

Busy wird in main zurückgesetzt, wenn es weitergehen durfte, alle 256 
Byte wurde auf die MC geschrieben, nach 2 solcher Blöcke der nächste 
Sektor adressiert.

Clock ist 8MHz.

Die IRQ bedient ACK:

;*********************************************************************
;  STB-IRQ
;  Holt Byte vom Par-Port nach PAR_BYTE
;*********************************************************************
1
irq_par_read:
2
        push    TEMP_A                      ; Temp retten
3
        in      TEMP_A,SREG                 ; Status-Register retten
4
        push    TEMP_A
5
        in      PAR_BYTE,PAR_D_PIN          ; Daten holen
6
        sbi     PAR_C_PORT,PAR_BUSY         ; auf nicht bereit setzen
7

8
irq_par_read_0:
9
        sbis    PAR_C_PIN,PAR_STB           ; auf Ende von Strobe warten
10
        rjmp    irq_par_read_0
11
        cbi     PAR_C_PORT,PAR_ACK          ; ACK senden
12
        sbr     FLAGS,(1<<F_PAR_BYTE)
13
        nop
14
        nop
15
        nop
16
        sbi     PAR_C_PORT,PAR_ACK
17

18
        pop     TEMP_A
19
        out     SREG,TEMP_A
20
        pop     TEMP_A
21

22
        reti

Gruß aus Berlin
Michael
#764871
Lesenswert?

@ Elias B. (bouni)

>Ich wollte eigentlich in C programmieren,

Mach das einfach, das Programm ist so einfach, das kann auch der 
C-Compiler nicht versauen.

> aber ist schon mal nicht
>schlecht um das Prinzip zu verstehen!!!

Aber Strobe würde ich nicht per ISR auswerten, sondern per Polling. Ist 
schneller und hier vollkommen auseichend.

MFg
Falk
#794255
Lesenswert?

@ Christoph Kessler (Firma db1uq) (christoph_kessler)

>Zur Zeit macht eine Firma für ihre Druck-Konverter viel Reklame:
>http://www.ipcas.de/produkte/hardware.html
>da kann man anscheinend z.B. auch von Centronics auf USB-Stick drucken

Sieht ja recht schick aus. Dürfte aber nicht für paar Mark Fuffzig über 
den Ladentisch gehen. Bei dem Leistungsumfang und Industriequalität 
würde ich mal schätzen 300 Euro++
Ausserdem, kaufen kann doch jeder ;-)

MfG
Falk

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren