- Akku Tests und Balkonkraftwerk Speicher         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 16 von 16

Thema: RS232 senden mit AtMega128

  1. #11
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.07.2006
    Ort
    nähe Rottweil
    Alter
    40
    Beiträge
    240
    Anzeige

    Powerstation Test
    Nabend!

    Also ich hab die serielle Schnittstelle jetzt mit diesem Code dazu gebracht das Zeichen "H" an meinen PC zu senden:
    Code:
    #include <avr/io.h>
    #define F_CPU 12000000L
    #include <util/delay.h>
    #define BAUD 9600L
    #define UBRR (F_CPU/(BAUD*16L))-1
    
    
    
    int main(void)
    
    {
    	UBRR1L = (unsigned char) UBRR;
    	UCSR1B = (1<<RXEN)|(1<<TXEN);
    	UCSR0C = (1<<UCSZ11)|(1<<UCSZ10); 
    	//while (!(UCSR1A & (1<<UDRE)))		//warten bis Senden möglich
    	//{
    	//}	
    	UDR1 = 'H';						//schreibt das Zeichen x auf die Schnittstelle
    	_delay_ms (100);
    	return 0;							
    }
    Ich hab aber immernoch ein paar offene Fragen. Ich hab die while Schleife jetzt weggelassen da im Debugger das Programm immer im zweiten Anlauf in dieser Schleife hängen geblieben ist. Meine Frage hierzu ist warum muss ich diese Schleife jedesmal aufrufen bevor ich ein Zeichen senden will? Es sollte doch eigentlich einmal zu Beginn des Sendevorgangs ausreichen oder? Könnt ihr mir das bitte erklären? Dann frage ich mich noch warum ich eine Pause (in meinem Fall jetzt 100ms) brauch damit das ganze funktioniert. Ich weiß dass diese Pause bestimmt nicht so groß sein muss, aber wenn ich die Pause komplett weg lass kommt keine Datenübertragung zustande. Wie kurz die Pause im besten Fall sein kann hab ich noch nicht ausprobiert. Wäre schön wenn ihr mir diese Fragen noch beantworten könntet. Ansonsten noch einmal vielen Dank für die Hilfestellungen!! Ist echt klasse wenn am Ende mal wieder was funktioniert.

    Grüße!!

    Bean

  2. #12
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Hallo,
    Hast Du mein Post oben gelesen , scheinbar nicht ?
    zu Deinem _delay_ms(100) ?
    Du hast ein Quarz von 12 Mhz und laut avr-libc beträgt die maximale Delayzeit damit
    262.14 ms / F_CPU in MHz.
    bei Dir also 21 mS.

    Der debugger unterstützt auch manche Sachen nicht, das ist u.a. UART das
    kann man auch unter known issues nachlesen.
    Vertraue hier also nicht auf den Debugger sondern auf uns.

    Antwort auf warum man UDRE1 pollen muß ist wohl ganz einfach.
    UART kann ja nur byteweise übertragen und nachdem man ihm sagt, es soll was senden muß man halt warten, bis es damit fertig ist und das steht halt im UDRE drin.

    Und eine Endlosschleife ist immer noch nicht drin.

    Ich kopiere Dir nochmal von oben was
    Code:
    void sendchar(char message){
          while(!(UCSR1A&(1<<UDRE1)));
          UDR1 = message;
        }
    jetzt sendest Du aus Deinem main Zeichen an die Funktion, etwa so
    Code:
    sendchar('H');
    sendchar('a');
    sendchar('l');
    sendchar('l');
    sendchar('o');
    Gruß Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  3. #13
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.07.2006
    Ort
    nähe Rottweil
    Alter
    40
    Beiträge
    240
    Hey das ging ja schnell mit der Antwort!

    Ja hast recht, die Endlosschleife ist immernoch nicht drin. Ich hab Deinen Beitrag schon gelesen. Und hab wenn ich mich nicht irre sogar auch etwas aus Deinen Codeschnipsel verwendet.
    Tut mir Leid dass ich nicht alles gleich verwendet hab So wie ihr gesagt hatte. Hatte eben meine eigene Vorstellung wie das fuunktionieren sollte.
    Sehe ich das richtig dass wenn ich zum senden jedes Zeichen die whileschleife verwende ich die Pause nach jedem gesendeten Zeichen nichtmehr brauche? Dann ist mir nämlich mal wieder einiges klar... Vielen Dank dafür. Ich muss halt noch viel lernen. Aber dank eurer Hilfe hat man immerwieder ein Erfolgserlebniss. [-o< [-o< [-o<
    Dachte ich arbeite halt auch mal etwas mit dem Debugger, weil jedes mal das Programm in den Controller laden ging mir zu lang...

    Also denn in diesem Sinne!!

    Gute Nacht!!

    Bean

  4. #14
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    08.05.2005
    Ort
    Issum
    Alter
    52
    Beiträge
    2.236
    Hey das ging ja schnell mit der Antwort!
    Naja, wenn man nicht pennen kann, kriegt man so manches mit

    Ja, debugger ist schon ganz gut, wenn man nur bedenkt, daß manches damit halt nicht geht.
    Und ja, wenn Du UDRE prüfst brauchst Du auch keine Wartezeiten
    Die Funktion, wie ich die geschrieben habe will auch etwas ausgebaut werden
    aber sehe selber Klick
    Arbeite Dich da mal durch, ist eine sehr gute Seite.

    weil jedes mal das Programm in den Controller laden ging mir zu lang...
    Womit lädst Du das Programm denn normalerweise spricht mal hier von ein paar Sekunden, bei dem Miniprogramm bruchteile einer Sekunde
    Ich mach mir eher Gedanken um die Flashhäufigkeit

    Auch gute Nacht

    Sebastian
    Software is like s e x: its better when its free.
    Linus Torvald

  5. #15
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.220
    Also um die Flashhäufigkeit braucht man sich keine Gedanken machen, wenn man den Controller drei mal am Tag neu flasht, kann man das fast 10 Jahre lang machen. Ich glaube nicht das ich in 10 Jahren noch den selben Controller bearbeite wie jetzt.

  6. #16
    Erfahrener Benutzer Roboter-Spezialist
    Registriert seit
    26.07.2006
    Ort
    nähe Rottweil
    Alter
    40
    Beiträge
    240
    Hallo

    Ich programmiere meinen Controller mit dem PonyProg über einen sehr einfachen seriellen ISP Programmer (sind nur ein paar Dioden, Widerstände und ein Transistor drauf). Das Programmieren des Programmteils ist eigentlich auch recht schnell, aber das Verify geht ewig.
    Um die Flashhäufigkeit mach ich mir auch eher weniger Gedanken.

    Hab meinen Mega8 schon zig mal programmiert, da ist auch noch nie ein Problem aufgetreten oder es waren vorher die Beinchen verbogen...

    MFG

    Bean

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Solar Speicher und Akkus Tests