-
        

Ergebnis 1 bis 10 von 10

Thema: C-Code zu RN-Control 1.4 + DIP + Display robotikhardware???

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    05.03.2005
    Beiträge
    36

    C-Code zu RN-Control 1.4 + DIP + Display robotikhardware???

    Anzeige

    Hallo erstmal,

    hat jemand schon Erfahrung mit o.g. Verbindung und kann C-Quellcode beisteuern?
    Viele Lösungen hier sind Bähscom, damit will ich mich (und hinterfragt das einfach nicht) nicht beschäftigen.

    Ausserdem: Ich bin absoluter Neubeginner in Mikrocontroller-Programmierung!

    many thanxs

    Banzai

  2. #2
    Benutzer Stammmitglied
    Registriert seit
    05.03.2005
    Beiträge
    36
    Hallo zweitmal,

    ich habe jetzt von der Wissensseite/Quell-Code den Code von Peter Fleury ausprobiert und versucht die entsprechenden Anpassungen vorzunehmen (die Pins scheinen ja nicht dem Beispiel zu entsprechen, wenn man die Doku zum Adapter und zum Display anschaut).

    Aber:
    Essig wars... nix wars... totales Versagen!!!

    Kann mir nicht jemand sagen, was im Quellcode des Beispiels angepasst werden muss, damit ich wenigstens dieses blöde "Hello World" angezeigt kriege? Ich wollte mir die Problematik bei etwas "Learning&Doing" näher bringen, aber inzwischen könnte ich den Mist bloss noch in die Ecke pfeffern....

    Bitte helft.....


  3. #3
    Benutzer Stammmitglied
    Registriert seit
    05.03.2005
    Beiträge
    36
    Hallo drittmal,

    jetzt weiß ich es sicher.. Das Display funktioniert . Das auf der CD enthaltene Bascom Programm für ATMega32 angepasst und schon zeigt das Display auch was an.

    Fehlt nur noch eine vernünftige Lösung in C......

    Keine Ideen, Leute?????

  4. #4
    Benutzer Stammmitglied
    Registriert seit
    05.03.2005
    Beiträge
    36

    HIIIILFE

    Hallo erstmal,

    schön wie dieser Thread besucht wird, auch wenn hilfreiche Antworten bisher ausblieben. Toll ist auch, dass der Ansichtszähler trotzdem steigt.... entweder hat keiner eine Lösung, jeder sucht danach oder ich bin in Forums-Ungnade gefallen?!?

    OK, auch wenn in mehreren anderen Threads dieses Thema schon angesprochen wurde und anscheinend einige Leute ihre Displays mit AVR-GCC auch zum laufen gebracht haben, warte ich momentan noch auf die göttliche Eingebung.

    Das schlimmste ist allerdings, dass die Einträge hier völlig ignoriert werden. Kann mich nicht wenigstens ein Moderator beschimpfen, dass ich schon wieder einen neuen Thread aufgemacht habe?

    Es würde aber auch schon ein funktionierender Code reichen. Die ganzen Tipps aus diesem Forum, von www.mikrocontroller.net und AVR Freaks und was weiss ich, haben mir aufgrund vieler Wissenslücken meinerseits auch nicht viel geholfen. Trotzdem danke dafür, da ich jetzt (glaube) zumindest schon teilweise zu verstehen, wie die grobe Vorgehensweise ist.

    Also, eine letzte Bitte um Unterstützung:

    Hat bitte jemand einen funktionierenden C-Code für RN-Control 1.4, KS0073 Display und Adapter von robotikhardware????

    Mein Hauptproblem ist (so denke ich ) die Initialisierung, welcher Schritt wann, wieoft, welche Pausen usw.. Das Beispiel im Datenblatt (das von Samsung und das von robotikhardware) brachte mich auch nicht weiter, weder im < 4 Zeilen Modus noch mit 4 Zeilen.

    Jetzt habe ich (nachdem ich vorher das umgeschriebene BASCOM-Beispiel eingespielt habe, danach meinen Code ), zumindest einen blinkenden Cursor in der 3. Zeile gehabt, auch wenn das Display die Return Home und Clear Display mal fein ignoriert hat. Dann einen &-Fehler im Code geändert, der für das senden der Zeichendaten zuständig ist und schon wars wieder nix. Display leer und an, ohne Cursor..... ich flipp noch aus.
    Code:
    #include <avr/io.h>
    
    #include <util/delay.h>
    
    /* Port Definition */
    #define LCD_PORT    PORTB
    #define LCD_DB0     0
    #define LCD_DB1     1
    #define LCD_DB2     2
    #define LCD_DB3     3
    #define LCD_DB4     0
    #define LCD_DB5     1
    #define LCD_DB6     2
    #define LCD_DB7     3
    #define LCD_LIGHT   4
    #define LCD_EN      5
    #define LCD_RW      6
    #define LCD_RS      7
    
    #define LCD_DDR     DDRB
    #define LCD_BUSY    PINB.7
    
    unsigned char lcd_is_busy()
    {
        _delay_ms( 50 );
    
        return 0;
    }
    
    void lcd_enable()
    {
        LCD_PORT |=  ( 1 << LCD_EN );
        _delay_us( 10 );
        LCD_PORT &=  ~( 1 << LCD_EN );
    }
    
    void lcd_cmd( unsigned char command )
    {
        unsigned char tmp = ( command >> 4 ) & 0x0F; // High-Nibble nach unten schieben
       
        LCD_PORT |= tmp; // senden
    
        lcd_enable(); // EN umschalten
    
        tmp = command & 0x0F; // Low-Nibble nehmen
    
        LCD_PORT |= tmp; // senden
    
        lcd_enable(); // EN umschalten
        
        while( lcd_is_busy() );
    }
    
    void lcd_data( unsigned char data )
    {
        unsigned char tmp = ( data >> 4 ) & 0x0F; // High-Nibble nach unten schieben
    
        tmp |= ( 1 << LCD_RS );    // Daten senden vorbereiten
    
        LCD_PORT |= tmp; // senden
    
        lcd_enable(); // EN umschalten
    
        tmp = data & 0x0F; // Low-Nibble nehmen
    
        tmp |= ( 1 << LCD_RS );    // Daten senden vorbereiten
    
        LCD_PORT |= tmp; // senden
    
        lcd_enable(); // EN umschalten
        
        while( lcd_is_busy() );
    }
    
    void init_display()
    {
        _delay_ms( 50 ); // power up wait
    
        LCD_PORT = ( 1 << LCD_DB5 );   // Init
        lcd_enable();
        _delay_ms( 10 );
        lcd_enable();
        _delay_ms( 10 );
        lcd_enable();
        _delay_ms( 10 );
            
        LCD_PORT = ( 1 << LCD_DB5 );    // 4-Bit Modus
        lcd_enable();
        LCD_PORT = 0;                   // RE = 0
        lcd_enable();
        _delay_ms( 10 );
    
        // Extension Function Setting
        LCD_PORT = ( 1 << LCD_DB5 );    // 4-Bit Modus
        lcd_enable();
        LCD_PORT = ( 1 << LCD_DB2 );    // RE = 1
        lcd_enable();
        _delay_ms( 10 );
        
        LCD_PORT = 0;    // Extension Function Set
        lcd_enable();
        LCD_PORT = ( 1 << LCD_DB0 );    // 4-Zeilen-Modus
        lcd_enable();
        _delay_ms( 10 );
        
        LCD_PORT = ( 1 << LCD_DB5 );    // 4-Bit Modus
        lcd_enable();
        LCD_PORT = 0;                   // RE = 0
        lcd_enable();
        _delay_ms( 20 );
        
        // Display On
        LCD_PORT = 0;
        lcd_enable();
        LCD_PORT = ( 1 << LCD_DB3 ) | ( 1 << LCD_DB2 ) | ( 1 << LCD_DB1 ) | ( 1 << LCD_DB0 );
        lcd_enable();
        _delay_ms( 10 );
        
        // Clear Display
        LCD_PORT = 0;
        lcd_enable();
        LCD_PORT = ( 1 << LCD_DB0 );
        lcd_enable();
        _delay_ms( 10 );
        
        // Entry Mode Set
        LCD_PORT = 0;
        lcd_enable();
        LCD_PORT = ( 1 << LCD_DB2 ) | ( 1 << LCD_DB1 );
        lcd_enable();
        _delay_ms( 10 );
    
        // Return Home
        LCD_PORT = 0;
        lcd_enable();
        LCD_PORT = ( 1 << LCD_DB1 );
        lcd_enable();
        _delay_ms( 10 );
        
        // Licht an
        LCD_PORT = ( 1 << LCD_LIGHT );
    }
    
    int main( void )
    {
    
        DDRB = 0xff;        /* Port als Ausgang deklarieren */ 
        PORTB = 0x00;       /* alles aus */
    
        init_display();
        
        _delay_ms( 10 );
    
        lcd_data( 0b01010011 );
        lcd_data( 0b01010011 );
        lcd_data( 0b01010011 );
        lcd_data( 0b01010011 );
        lcd_data( 0b01010011 );
        lcd_data( 0b01010011 );
    
        return 0;
    }
    Man riecht sich

    Banzai

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    10.08.2004
    Ort
    Großbardorf
    Alter
    30
    Beiträge
    674
    Ich kann jetzt leider nicht den ganzen code durchschauen, ein wenig was ist mir aber trotzdem auf-/eingefallen:
    - hast du den mcu-takt angepasst? (auch beim beispiel von fleury, das sollte ja eigentlich schon funktionieren)

    - in ein avr-programm gehört immer eine endlosschleife, ansonsten kann man nicht vorhersagen, was passiert

  6. #6
    Benutzer Stammmitglied
    Registriert seit
    05.03.2005
    Beiträge
    36
    DANKE
    DANKE
    DANKE

    Werd's ausprobieren.... auch wenn ich schon alle möglichen Wait's reingesetzt habe...


    Danke, Danke, Danke

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    05.03.2005
    Beiträge
    36
    Hmmmm....

    also einen GROSSEN Mistbock habe ich bei der PIN-Verteilung geschossen.

    Die Zuordnung PIN1 = DB0 usw. ist genau umgedreht (jaja, wer lesen kann ist klar im Vorteil ). Ich werde mich bei Gelegenheit persönlich dafür bestrafen.

    Allerdings.... das Dingens geht immer noch nicht. Inzwischen habe ich herausgefunden, dass die Fleurys-LCD-LIB beim Busy-Flag stehen bleibt. Hat der DIP-Adapter dieses Feature nicht?!? Da muss doch eine bestimmte Leitung High sein, damit das mit dem Busy funktioniert?!?

    Abgesehen davon, selbst wenn man das Busy-Warten in eine 100ms Warteschleife tauscht, geht nix. Das Display versucht auch 6dot statt 5dot anzuzeigen, obwohl nirgends das 6dot gesetzt wird.

    Der Cursor flitzt zwar inzwischen flott über die Anzeige, aber entweder sind die Zeichen von irgendwelchen Vorversuchen noch drin, oder es bleibt leer (bis auf einen irgendwo blinkenden Cursor, der sich seine Position bei jedem Reset neu sucht..... ARGHHH ).

    Hat noch jemand eine Idee oder fertigen funktionierenden Code?

    Greetings

    Banzai

  8. #8
    Benutzer Stammmitglied
    Registriert seit
    05.03.2005
    Beiträge
    36

    ICH KRIEGS KOTZEN

    SO EIN DRECKSDING

    Anscheinend ist ein Wunder, dass unsere moderne Zivilisation mit ihren elektronischen Errungenschaften überhaupt überlebt, wenn es schon ein unendlicher Akt ist, so ein Drecksdisplay zum Laufen zu bringen!

    ICH HASSE ES

    Entweder lügen alle, die behaupten so ein Sch****ding zur Anzeige bewegt zu haben, sind selbst der Konstrukteur von so einem Mist oder ich bin echt zu blöd dazu, selbst vorgefertigten Code zum Laufen zu bringen!

    Sagte ich schon ICH HASSE ES?

    Schliesslich bin ich jetzt dem endgültigen Nervenzusammenbruch nahe. Robotikhardware wird Pleite gehen, weil so gesehen nur ich Hammel so ein Display gekauft habe, weil jeder andere so schlau war, davon die Finger zu lassen.

    Erwähnte ich schon DAS ICH ES HASSE?

    Die Hoffnung auf passende Hilfe gebe ich inzwischen auch auf, da ich der einzige auf der Welt bin, der so simple Sachen einfach nicht versteht und es verlorene Liebesmüh ist, es mir zu erklären.

    Konnte ich schon loswerden, DAS ICH ES HASSE?

    Vielleicht findet sich für das Sch****-Display ein schöner Platz zwischen anderen vergessenen Projekten in einer unscheinbaren Pappschachtel im hintersten Eck eines dunkelen Kellers.....

    Sorry, musste mich jetzt mal auskotzen.

    Banz

  9. #9
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    21.10.2005
    Beiträge
    165
    wenn's dir hilft: ich habe schon zwei displays erfolglos anzusteuern versucht. ausgehend von der annahme, dass ich's auch ein drittes mal verbocken würde, beschäftige ich mich lieber wieder mit einfacheren sachen... quantenphysik, relativitätstheorie, frauen etc... eben allem, was jedes grundschulkind einfach so versteht

    ernsthaft: ich kapier die teile auch nicht. versuch's irgendwann noch mal, aber nich heut und nich morgen.

  10. #10
    Benutzer Stammmitglied
    Registriert seit
    05.03.2005
    Beiträge
    36
    Hallo corone...

    ...du beschäftigst dich mit

    FRAUEN

    Was ist das? Ein neues RN-Modul? Noch schwerer zu verstehen als ein Display? Welche Version denn? Ich hab' gehört die Version 7 soll Schwierigkeiten machen....

    Danke für deine tröstenden Worte.... mal sehen mit welchem Thema ich mich jetzt beschäftige... hmmm... he! SERVOS! PWM... häh... naja... vielleicht kommen die auch noch in die selbe Pappschachtel

    Banz

Berechtigungen

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