Mega 2560 als "stand alone" - flashen

Hallo,
jetzt läuft es, reproduzierbar.
Es scheint tatsächlich die lange (10cm) Strippe zum Quarz gewesen zu sein. Ich habe da jetzt 2cm draus gemacht. Den Quarz habe ich einfach nach Standart verdrahtet (Schaltplan, Arduino Mega R3, wie an 16U2). Den werde ich aber gegen einen Quarzoszillator austauschen, dann schwingt da immer etwas.
Ist ein hartes Stück Arbeit gewesen. Andreas sagt, Danke schön.
Gruß und Spaß
Andreas

Skorpi sagt, Bitte schön :slight_smile:
Hätte ich gewusst dass es 10cm sind, hätt ich dich drauf hingewiesen.
Abblockkondensatoren bringt man ja auch in der nähe des Controllers an, so auch der Quarz.
Je weiter der weg ist, desto ungenauer iss er.

Hallo,
"michael_x" hatte mich in Reply26 drauf gebracht.
Ich hatte das ein wenig angezweifelt, aber wie man sieht…
Gruß und Spaß
Andreas

Hallo,
hier der Eindruck vom TestAufbau.
Rechts in der Mitte die kleine Mega 2560 Platine.
Gruß und Spaß
Andreas

Und ich mich sooo doll auf ein Atmega2560 gefreut =( =(

Aber wenn du mir bei meinem Modbus Problemchen helfen könntest, wärst du "mein bester freund" :smiley:

Hallo,
es läuft, aber nicht so richtig…
Wenn ich den BlinkSketch übertrage ist alles in Ordnung.

Wenn ich meinen ProjektSketch (68Kb) übertrage, kommt nachfolgende Fehlermeldung:

"Binäre Sketchgröße: 67.850 Bytes (von einem Maximum von 258.048 Bytes)
avrdude: verification error, first mismatch at byte 0x10000
0x87 != 0xff
avrdude: verification error; content mismatch"

Oberflächlich betrachtet läuft der Sketch aber.
Kann mir jemand mal erklären, woher dieser Fehler rührt.

Es spielt keine Rolle, ob ich über "upload" gehe, oder "upload mit Programmer"
wähle.
Gruß und Dank
Andreas

Siehe mein Modbus Thread

Hallo,
"muss ich den Bootloader nochmal brennen"
Ja! Tolle Wurst, das ist aber nicht Dein ernst!
Also ist es immer noch ein Fehler im BootLoader und im tollen Programm von Nick??
Gruß und Spaß
Andreas

Bei mir liegt es an der IDE 023, Arduino UNO als ISP Programmer und Atmega8

Hallo,

könntest Du mal den Strom messen, den Dein nackter Mega2560 in Idle und in Sleep aufnimmt?
Der Sketch funktioniert auf meinem Arduino Mega2560. Ich hätte gern gewußt, wieviel Strom der nackte µC aufnimmt.
Würdest Du das mal bitte messen? Mit Pin 2 gegen Masse holst Du ihn aus dem Schlafmodus.

/* Sleep Demo Serial
 * -----------------
 * Example code to demonstrate the sleep functions in a Arduino. Arduino will wake up
 * when new data is received in the serial port USART
 * Based on Sleep Demo Serial from http://www.arduino.cc/playground/Learning/ArduinoSleepCode 

 "Aufwach-Taster" an Pin 2 gegen Masse

 Originalboard Arduino Mega 2560
 Idle 59,2mA   Sleep 22,3mA   ohne 16U2 Jumper
 Idle 54,5mA   Sleep 15,5mA   mit Jumper auf GND-Reset für 16U2
 
 ohne Spannungsregler auf Board, abgegelötet
 Idle 55,1mA   Sleep 16,5mA   ohne 16U2 Jumper
 Idle 49,9mA   Sleep  9,8mA   mit Jumper auf GND-Reset für 16U2

 alles Sleep Mode nochmals durchgemessen:
 nur 5V anlegen: 21,4mA
 5V anlegt und Jumper gesetzt: 9,9mA
 Jumper gesetzt gelassen, 5V weggenommen und wieder angelegt: 12,2mA
 5V bleiben angelegt und Jumper entfernt: 16,2mA
 Jumper wieder gesetzt: 9,9mA
 
 Reset Pin 16U2 ergänzt für sicheren und dauerhaften 9,9mA Effekt.
 
*/   
   

#include <avr/sleep.h>

//#define RESET16U2  22       // Reset für 16U2 an Pin 22

int sleepStatus = 0;        // variable to store a request for sleep
int count = 0;              // counter

int ledPin = 13;            // LED connected to digital pin 13
//int interruptPin = 10;      // LED to show the action of a interrupt
int wakePin = 2;            // active LOW, ground this pin momentary to wake up
//int sleepPin = 12;          // active LOW, ground this pin momentary to sleep
int ledState = LOW;

void wakeUpNow()        // here the interrupt is handled after wakeup
{
  // execute code here after wake-up before returning to the loop() function
  // timers and code using timers (serial.print and more...) will not work here.
  // digitalWrite(interruptPin, HIGH);  // LED an Pin 10 ein
}


void sleepNow()
{
    /* Now is the time to set the sleep mode. In the Atmega8 datasheet
     * http://www.atmel.com/dyn/resources/prod_documents/doc2486.pdf on page 35
     * there is a list of sleep modes which explains which clocks and 
     * wake up sources are available in which sleep modus.
     *
     * In the avr/sleep.h file, the call names of these sleep modus are to be found:
     *
     * The 5 different modes are:
     *     SLEEP_MODE_IDLE         -the least power savings 
     *     SLEEP_MODE_ADC
     *     SLEEP_MODE_PWR_SAVE
     *     SLEEP_MODE_STANDBY
     *     SLEEP_MODE_PWR_DOWN     -the most power savings
     *
     *  the power reduction management <avr/power.h>  is described in 
     *  http://www.nongnu.org/avr-libc/user-manual/group__avr__power.html
     */  
       
  set_sleep_mode(SLEEP_MODE_PWR_DOWN);   // sleep mode is set here

  sleep_enable();          // enables the sleep bit in the mcucr register
                           // so sleep is possible. just a safety pin 
  
    /* Now it is time to enable an interrupt. We do it here so an
     * accidentally pushed interrupt button doesn't interrupt
     * our running program. if you want to be able to run
     * interrupt code besides the sleep function, place it in
     * setup() for example.
     *
     * In the function call attachInterrupt(A, B, C)
     * A   can be either 0 or 1 for interrupts on pin 2 or 3.  
     *
     * B   Name of a function you want to execute at interrupt for A.
     *
     * C   Trigger mode of the interrupt pin. can be:
     *             LOW        a low level triggers
     *             CHANGE     a change in level triggers
     *             RISING     a rising edge of a level triggers
     *             FALLING    a falling edge of a level triggers
     *
     * In all but the IDLE sleep modes only LOW can be used.
     */
 
  attachInterrupt(0,wakeUpNow, LOW); // use interrupt 0 (pin 2) and run function
                                     // wakeUpNow when pin 2 gets LOW 
      
  sleep_mode();            // here the device is actually put to sleep!!
 
                           // THE PROGRAM CONTINUES FROM HERE AFTER WAKING UP
  sleep_disable();         // first thing after waking from sleep:
                           // disable sleep...
  
  detachInterrupt(0);      // disables interrupt 0 on pin 2 so the
                           // wakeUpNow code will not be executed
                           // during normal running time.
    
}


void setup()
{
  //pinMode(RESET16U2,OUTPUT);       // 16U2 wird dauerhaft
  //digitalWrite(RESET16U2, LOW);    // im Reset Mode gehalten, spart 2mA
  
  pinMode(ledPin, OUTPUT);         // LED connected to digital pin 13
 
  pinMode(wakePin, INPUT);         // active LOW, ground this pin momentary to wake up
  digitalWrite(wakePin, HIGH);     // Pullup aktiv
      
  attachInterrupt(0,wakeUpNow, LOW);   // use interrupt 0 (pin 2) and run function
                                       // wakeUpNow when pin 2 gets LOW 
                            
}


void loop()
{
  
   if ( digitalRead(2) == LOW ) {
     digitalWrite(ledPin, HIGH);      
   } 
   else {
     digitalWrite(ledPin, LOW); 
     sleepNow();                   // sleep function called here
   }
      
 
}

Hallo,
das kann ich mal machen.
"Mit Pin 2 gegen Masse holst Du ihn aus dem Schlafmodus"

"Pin 2" ist HIER der Pin des Arduino Mega 2560- und NICHT Pin 2 des Mega 2560?
Alle von Dir aufgeführten Pin´s beziehen sich auf den Arduino, NICHT auf den Mega 2560?
Richtig?
Gruß und Spaß
Andreas

Hallo,

genau. Mein Pin 2 ist der Arduino Pin 2. Laut Pinout müßte das der echte physikalische Pin 6 sein am nackten µC bei Dir. Auch mit INT4 bezeichnet. Bitte mit 5V wenn möglich, 16MHz und nackter Beschaltung messen.

Hallo,
Mega 2560 mit 16MHz Quarz und BlinkSketch.

max. 50,4mA
min. 48,7mA

Dein "ichlegedichschlafenSketch" habe ich noch nicht probiert.
Dafür muss ich das Ding erst einmal halbwegs ordentlich verdrahten.

So richtig gefällt mir auch nicht, das im Sketch der 16U2 angesprochen wird.
Nicht das ich den 2560 schlafen lege- und dann keinen Wecker habe…
Gruß und Spaß
Andreas

Hallo,

Deine Bedenken sind völlig unbegründet. Habe das extra auskommentiert. Da passiert gar nix. Außerdem hast Du gar keinen 16U2 auf Deinem nackten Mega 2560. Ich kann Dein Problem nicht wirklich nachvollziehen. Jemand anderes mit Arduino Mega2560 Board müßte den 16U2 wie ich vorher auch mit Jumper in Reset halten mit dem Sketch wie gepostet.

Ich wünsche mit nichts weiter wie eine Strommessung von Deinem nackten 2560 auf dem Steckbrett im Sleepmode, ohne weitere Beschaltung, außer einer LED für den Idle Zustand vielleicht. Die kannste aber auch weglassen. Theoretisch müßtest Du unter 7,5mA kommen.

Hallo,

und Skoby, wie sieht es aus? Was ist der Stand der Dinge?

Tippe mal hat keine Zeit für solche spielchen, will an seinem Projekt weitermachen.

Hallo,
"und Skoby, wie sieht es aus? Was ist der Stand der Dinge?"
Die Dinge liegen zerstört, wie ich übringens auch- am Boden der Realität.
Deine Anfrage geht nicht unter.
Vertraue mir ]:smiley: Alles wird gut ]:smiley: Ich mach das schon :*
Gruß und Spaß
Andreas

Hallo,

upps, was ist denn passiert und zerstört? Deine Schaltung rum um den nackten Mega oder der Maga selber? Was wolltest Du bauen?

Hallo,
siehe hier, Reply#4:

http://forum.arduino.cc/index.php?topic=264888.0

Gruß und Spaß
Andreas