- fchao-Sinus-Wechselrichter AliExpress         
Ergebnis 1 bis 10 von 15

Thema: Anfänger Quellcode

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #6
    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

    Bin ja kurz davor 'nen alten Drucker zu reanimieren. ;)

    Hier nun eine verbesserte Variante:

    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 Steuersignale:
    
    // PF0: nc       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 strobe (1<<PF2)
    #define busy (1<<PF3)
    #define ack (1<<PF4)
    #define init (1<<PF5)
    #define error (1<<PF6)
    #define autofeed (1<<PF7)
    
    #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, t;
    	unsigned char text[14] = "Hello World!\n\r"; //Text string + LFCR
    
    	DDRE = 0b11111111; // Datenleitungen DATA0-7
    
    	DDRF = strobe | init | autofeed; // Steuerleitungen zum Drucker (Ausgänge)
    	PORTF = strobe | init | autofeed; // Kein strobe, kein init und kein autofeed
    	PORTF = busy | ack | error; // PullUps für die Eingangssignale aktivieren
    
    	t=PINK; // Tastenstatus einlesen
    	while(PINK == t); // Hat sich was geändert?
    
    	for (i = 0; i<14; i++) //Liest alle Stellen des String (Index 0 bis 13!)
    	{
    		while(PINF & busy); // Warten wenn Drucker beschäftigt (busy=high)
    		PORTE = text[i]; // Legt die Zeichen an den Datenausgang
    
    		PORTF &= ~strobe; // Setzt Stobe auf low = Drucker Daten übernehmen
    		_delay_ms(1);
    		PORTF |= strobe; // Setzt Strobe wieder auf high
    		_delay_ms(1);
    	}
    
    	while(1); // Programm darf nie beendet werden!
    	return(0);
    }
    (ebenfalls ungetestet)

    Ich vermute, der Drucker wurde dauernd im Init gehalten. Diese Version setzt nun auch das Init-Bit.

    Nach dem Reset ist Port K sowieso Eingang, deshalb braucht man keine zusätzliche Initialisierung. Allerdings weiß ich immer noch nicht, wie die Taster angeschlossen sind. Schalten sie gegen Vcc oder gegen GND? Externe PullUps/PullDowns?

    Der String endet mit LFCR, deshalb kann man das Autofeed beim Drucker deaktivieren. Wenn's mal klappt kannst du das ja ändern...

    Die PullUps an den Eingängen sind eher ein Versuch, scheint mir vernünftig. Port K wird bei mir (KamAVR) akzeptiert.

    Gruß

    mic

    P.S.: Der Mega2560 hat tatsächlich einen Port K: http://www.atmel.com/Images/doc2549.pdf
    (Über 'nen Mega32u4 bin ich noch nicht hinausgekommen...)
    Geändert von radbruch (07.04.2012 um 18:39 Uhr)
    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
  •  

LiFePO4 Speicher Test