Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
projekte:epson-stylus-sx100 [2016-06-04 17:41] crackiprojekte:epson-stylus-sx100 [2016-06-04 18:43] – [Arduino] cracki
Line 50: Line 50:
   * 10 Vref (sollte auf GND fest)   * 10 Vref (sollte auf GND fest)
     * wenns hoeher ist, gibts kein gescheites bild mehr     * wenns hoeher ist, gibts kein gescheites bild mehr
-  * 11 DPI Mode (0/L: 300 dpi ~2600 pixel; 1/H: 600 dpi ~5200 pixel)+  * 11 DPI Mode
     * macht auf jeden Fall, wieviele Clocks man pro Zeile rausholen kann     * macht auf jeden Fall, wieviele Clocks man pro Zeile rausholen kann
 +    * 0/L: 300 dpi ~2600 clocks
 +    * 1/H: 600 dpi ~5268 clocks
 +    * nach anderen datenblaettern hat man 82 clocks "output period", dann kommen die pixel (inkl. vorne und hinten dummypixeln)
 +    * 600 dpi: 5184 pixels
 +    * 300 dpi: 2592 pixels
   * 12 Analog Out   * 12 Analog Out
     * bei steigender Clock gehts scheinbar los (kommt von GND hoch fuer jeden Pixel neu, gefuehlte 100ns hier)     * bei steigender Clock gehts scheinbar los (kommt von GND hoch fuer jeden Pixel neu, gefuehlte 100ns hier)
Line 78: Line 83:
     * warte, 0-20 Millisekunden haben geklappt     * warte, 0-20 Millisekunden haben geklappt
  
 +==== Arduino ====
 +
 +<code>
 +#define START 2
 +#define CLOCK 3
 +#define DPIMODE 4
 +
 +bool dpimode = 1;
 +uint16_t pixels = dpimode ? 5184 : 2592;
 +
 +uint32_t linetime = 20000; // us
 +uint32_t sched = 0;
 +
 +void setup() {
 +  pinMode(START, OUTPUT);
 +  pinMode(CLOCK, OUTPUT);
 +  pinMode(DPIMODE, OUTPUT);
 +
 +  digitalWrite(DPIMODE, dpimode);
 +
 +  sched = micros();
 +}
 +
 +void loop() {
 +  digitalWrite(START, HIGH);
 +  digitalWrite(CLOCK, HIGH);
 +  digitalWrite(CLOCK, LOW);
 +  digitalWrite(START, LOW);
 +
 +  for (uint16_t counter = 0; counter < 82 + pixels; counter += 1)
 +  {
 +    PORTD |= _BV(PORTD3);
 +    //delayMicroseconds(1);
 +    PORTD &= ~_BV(PORTD3);
 +    //delayMicroseconds(1);
 +  }
 +
 +  sched += linetime;
 +  int32_t dt = sched - micros();
 +  while (dt > 0x4000)
 +  {
 +    delayMicroseconds(0x4000);
 +    dt -= 0x4000;
 +  }
 +  if (dt > 0)
 +    delayMicroseconds(dt);
 +}
 +</code>
 ==== coloring code ==== ==== coloring code ====
 <code> <code>
Navigation



You are not allowed to add pages