- 12V Akku mit 280 Ah bauen         
Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 12 von 12

Thema: Zufallszahl 1-4

  1. #11
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Anzeige

    LiFePo4 Akku selber bauen - Video
    Das blöd jetzt

    Wie wäre es mit rauschen am ADC zu erzeugen und diese Zahl mit einbinden? Aber da kommt man auch langsam an eine Stelle wo man alles mit anderen ICs aufbauen kann und eigentlich keinen µC braucht.

  2. #12
    Erfahrener Benutzer Robotik Einstein Avatar von SprinterSB
    Registriert seit
    09.06.2005
    Ort
    An der Saar
    Beiträge
    2.802
    Was mit Preudozufall geht: Merke dir im EEPROM den letzten Zufallswert als seed für den nächstes Start-- ok, ist etwas stressig für's EEPROM.

    'Richtige' Zufallswerte bekommst du folgendermassen:
    Nach Power-On-Reset berechnest du einen Wert seed aus dem RAM-Inhalt. Dieser ist uninitialisiert und damit mehr oder weniger zufällig; zumindest für AVR-SRAM. Diesen Wert kannst du als Startwert für deine RND-Routine nutzen.
    Ich poste hier mal einen C-Code, der mir nach jedem Einschalten einen anderen 16-Bit-Wert liefert. Habs eben mal abgecheckt

    Meine BASIC-Zeiten sind seit C64 vorbei, vielleicht ist jemand so nett und übersetzt nach BASIC?

    Code:
    #define RAM_START 0x60
    #define RAM_END   (RAM_START + 0x400)
    
    // Deklariere eine 16-Bit Variable seed.
    // Lege sie in Section .noinit, damit sie vom Startupcode (crtm8.o) 
    // nicht überpinselt wird.
    unsigned short seed __attribute__((section(".noinit")));
    
    // Lege get_seed() in die Section .init0
    // Diese wird direkt nach RESET-Interrupt aufgerufen,
    // noch vor dem Startup-Code und Aufruf von main().
    
    __attribute__((section (".init0")))
    __attribute__((naked))
    void get_seed() 
    {
    	unsigned char *pram;
    	unsigned short _seed = 0;
    
    	for (pram = (unsigned short*) RAM_START; pram < (unsigned short*) RAM_END; pram++)
    		_seed += *pram; // Oder sonst was...
    		
    	seed = _seed;
    }
    
    // !!! Wichtig: get_seed() NICHT aufrufen!!!
    void main()
    {
    	...
    	... = seed;
    	...
    }

Seite 2 von 2 ErsteErste 12

Berechtigungen

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

Labornetzteil AliExpress