- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 15

Thema: Anfänger Quellcode

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #4
    Moderator Robotik Visionär Avatar von radbruch
    Registriert seit
    27.12.2006
    Ort
    Stuttgart
    Alter
    62
    Beiträge
    5.799
    Blog-Einträge
    8
    Hallo

    Vielleicht funktioniert es auch nur mit Busy:

    Code:
    // Druckeransteuerung mit AVR über Centronics-Schnittstelle                     mic 7.4.2012
    
    // https://www.roboternetz.de/community/threads/57421-Anf%C3%A4nger-Quellcode
    
    // PORTE ist D0-D7
    // PORTF sind die Steuersigale:
    
    // PF0: Selin    Out Low = Drucker ausgewählt
    // PF1: nc       Out
    // PF2: Strobe   Out fallende Flanke = Datenübernahme
    // PF3: Busy     In  Low = nicht beschäftigt
    // PF4: ACK      In  Low = Übernahmebestätigung
    // PF5: INIT     Out Low = Drucker initialisieren
    // PF6: ERROR    In  Low = Fehler aufgetreten
    // PF7: Autofeed Out Low = Linefeed bei CR
    
    // http://www.hardwareecke.de/berichte/schnittstellen/centronics.php
    // http://de.wikipedia.org/wiki/IEEE_1284
    
    #define     F_CPU 16000000  // Taktfrequenz des myAVR-Boards
    #include    <avr\io.h>      // AVR Register und Konstantendefinitionen
    #include    <util/delay.h>
    
    int main(void)
    {
    	unsigned char i;
    	unsigned char text[14] = "Hello World!\n\r"; //Text string + LFCR
    
    	DDRE = 0b11111111; // Datenleitungen DATA0-7
    	DDRF = 0b10100111; // Steuerleitungen vom/zum Drucker
    	DDRK = 0b00000000; // An alle Pins sind Taster angeschlossen
    	PORTK= 0b00000000; // Wie sind die Taster angeschlossen?
    	//PORTK= 0b11111111; // bei Bedarf Tastenpullups einschalten
    
    	PORTF |= (1<<PF7); //Schaltet Autofeed aus
    	PORTF |= (1<<PF2); //Setzt Strobe auf high
    
    
    	while(PINK == 255); //Wartet auf einen Tastendruck
    
    	for (i = 0; i<14; i++) //Liest alle Stellen des String (Index 0 bis 13!)
    	{
    		while(PINF & (1<<PF3)); // Warten wenn Drucker beschäftigt (busy=high)
    		PORTE = text[i]; // Legt die Zeichen an den Datenausgang
    
    		PORTF &= ~(1<<PF2); // Setzt Stobe auf low = Drucker Daten übernehmen
    		_delay_ms(1);
    		PORTF |= (1<<PF2); // Setzt Strobe wieder auf high
    		_delay_ms(1);
    	}
    
    	while(1); // Programm darf nie beendet werden!
    	return(0);
    }
    (ungetestet)

    Gruß

    mic

    P.S.:
    Achtung, alle nicht extra gesetzte Steuersignale zum Drucker sind low!
    Geändert von radbruch (07.04.2012 um 11:35 Uhr) Grund: LFCR senden + while(PINF & ...
    Bild hier  
    Atmel’s products are not intended, authorized, or warranted for use
    as components in applications intended to support or sustain life!

Ähnliche Themen

  1. [ERLEDIGT] Ideen zum Quellcode
    Von Tobias Stosius im Forum Asuro
    Antworten: 13
    Letzter Beitrag: 25.05.2011, 14:18
  2. LDR Quellcode
    Von Jada im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 0
    Letzter Beitrag: 03.06.2010, 19:26
  3. Quellcode für Geschwindigkeitsmessung
    Von Tanja1986 im Forum C - Programmierung (GCC u.a.)
    Antworten: 17
    Letzter Beitrag: 12.10.2008, 12:53
  4. Bootloader 1.3 quellcode???
    Von raid_ox im Forum Asuro
    Antworten: 41
    Letzter Beitrag: 10.11.2007, 11:25
  5. Quellcode zu RNKC10
    Von Kjion im Forum Bauanleitungen, Schaltungen & Software nach RoboterNetz-Standard
    Antworten: 3
    Letzter Beitrag: 19.06.2005, 15:26

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress