Forum: Mikrocontroller und Digitale Elektronik Atmega 2560 startet Program nicht


von A. R. (and)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,
ich habe ein Problem mit meinen Atmega 2560.
Ich habe eine eigene Schaltung, welche ich bereits in dieser Form 
erfolgreich angewendet habe.
Das setzten der Fuses, laden des Programm und Reading Device klappen 
einwandfrei über ISP.

Habe jetzt eine Testroutine geschrieben, in welcher einfach ein paar 
Ausgänge angesteuert werden sollen und nach Zeit-X zurückgesetzt werden 
sollen.
Jedoch funktioniert dies nicht.

Kann mir da jemand weiterhelfen, woran das liegen kann?

von Fortranprogrammierer (Gast)


Lesenswert?

Vielleicht mal die Handbremse (Reset) lösen.

von Einer K. (Gast)


Lesenswert?

A. R. schrieb:
> Habe jetzt eine Testroutine geschrieben, in welcher einfach ein paar
> Ausgänge angesteuert werden sollen und nach Zeit-X zurückgesetzt werden
> sollen.
> Jedoch funktioniert dies nicht.

Doch die funktioniert.
Blinkt im 5 sek Takt vor sich hin.

Getestet mit der Arduino IDE und Arduino Mega.


Tipp:
Warnungen einschalten und auch beseitigen.



------------

Diesen ganzen Klumpen
1
 
2
  //++++++++++++++++++ TEST ++++++++++++++++++// 
3
  PORTB |= (1<<PB6);    //Bit setzen
4
  PORTB |= (1<<PB7);    //Bit setzen
5
  PORTA |= (1<<PB0);    //Bit setzen
6
  PORTA |= (1<<PB1);    //Bit setzen
7
  PORTA |= (1<<PB2);    //Bit setzen
8
  PORTA |= (1<<PB3);    //Bit setzen
9
  PORTA |= (1<<PB4);    //Bit setzen
10
  PORTA |= (1<<PB5);    //Bit setzen
11
  PORTA |= (1<<PB6);    //Bit setzen
12
  PORTA |= (1<<PB7);    //Bit setzen
13
  _delay_ms(5000);    // warten
14
  PORTB &= ~(1<<PB7);   // Bit loeschen
15
  PORTB &= ~(1<<PB6);   // Bit loeschen
16
  PORTA &= ~(1<<PA0);   // Bit loeschen
17
  PORTA &= ~(1<<PA1);   // Bit loeschen
18
  PORTA &= ~(1<<PA2);   // Bit loeschen
19
  PORTA &= ~(1<<PA3);   // Bit loeschen
20
  PORTA &= ~(1<<PA4);   // Bit loeschen
21
  PORTA &= ~(1<<PA5);   // Bit loeschen
22
  PORTA &= ~(1<<PA6);   // Bit loeschen
23
  PORTA &= ~(1<<PA7);   // Bit loeschen
24
  _delay_ms(5000);    // warten
25
  //++++++++++++++++++ TEST ++++++++++++++++++//


kannst du ersetzen durch:
1
 
2
  //++++++++++++++++++ TEST ++++++++++++++++++// 
3
  PINB = (1<<PB6)|(1<<PB7);    //Bits toggeln
4
  PINA = 0xff;    //alle Bits toggeln
5
  _delay_ms(5000);    // warten
6
7
8
  //++++++++++++++++++ TEST ++++++++++++++++++//

>  PORTA |= (1<<PB4);    //Bit setzen
Man wird schlecht einen B Pin in Port A setzen können.
auch wenn es technisch funktioniert, ist es dennoch semantisch falsch.

von Stefan F. (Gast)


Lesenswert?

Hast du die 120 Ohm berechnet oder nur wild geraten?

Ich hätte dort mindestens 220 Ohm erwartet, eher mehr.

von A. R. (and)


Lesenswert?

Ja, die 120 Ohm sind fehlerhaft im Plan.
sind natürlich mehr.

Arduino Fanboy D. schrieb:
> Man wird schlecht einen B Pin in Port A setzen können.
> auch wenn es technisch funktioniert, ist es dennoch semantisch falsch.

Oh, ja das habe ich wohl übersehen in der schnelle. Die Zusammenfassung 
macht sin.
Hatte jetzt 3 Jahre kein Projekt mehr gehabt.

von Einer K. (Gast)


Lesenswert?

A. R. schrieb:
> Hatte jetzt 3 Jahre kein Projekt mehr gehabt.

Und dann sofort übertakten?
Wie finde ich das denn?

von A. R. (and)


Lesenswert?

Ich meine die Taktfrequenz habe ich beim letzten Projekt auch verwendet. 
Leider habe ich keine Unterlagen mehr davon.

Passt die Frequenz nicht?

von S. Landolt (Gast)


Lesenswert?

• Speed Grade:
– ATmega2560/ATmega2561:
• 0 - 16MHz @ 4.5V - 5.5V

von A. R. (and)


Lesenswert?

Kann ich die fuses auf intern Takt umstellen zum unstellen und muss 
dafür der angeschlossene ausgelötet werden?

von Einer K. (Gast)


Lesenswert?

ja
nein

von Stefan F. (Gast)


Lesenswert?

Die HAL verleitet zu der Annahme, dass man das Referenzhandbuch (mit den 
Registern und Beschreibung der I/O Funktionen) nicht braucht, weil sie 
ja alles abstrahiert. Wenn man sich als Anfänger mit den über 1000 Seite 
Doku herum schlagen muss, ist man damit erstmal genug belastet.

Allerdings ist der Abstraktionsgrad der HAL nicht so hoch wie bei 
Arduino und weit von Betriebssystemen wie Linux/Windows/MacOS entfernt.

Will sagen: Man muss zusätzlich zur HAL eben doch die Funktionseinheiten 
detailliert kennen, sonst kann man die HAL nicht korrekt anwenden.

Solange ich nur eine einzige STM32 Mikrocontroller Serie (z.B. STM32F1) 
verwende, muss ich mich dann schon fragen, wo dann der Mehrwert der HAL 
ist. Warum soll ich zuerst den Chip und seine Register lernen, und dann 
oben drauf nochmal so viele Seiten zur HAl lesen? Macht auf den ersten 
Blick keinen Sinn.

Zwei Gründe sprechen allerdings für die HAL:

a) Sie enthält umfangreichen Code für einige Sachen, die man als 
Einzelkämpfer sonst nicht hinbekommen würde: zum Beispiel USB
b) Wenn man auf eine andere STM32 Serie umsteigt, kann man weite Teile 
des Quelltextes unverändert übernehmen.

Für a gibt es Alternativen (W.S. und Niklas Gürtler sei Dank), und b 
trifft auf viele Bastler schlicht nicht zu - mich zum Beispiel. Mir 
reicht die STM32F1/F3 Serie für alles, was ich machen will. Wenn die 
nicht mehr lieferbar sind, bin ich längst zu alt für was auch immer 
danach kommt (schätze ich).

Jedem Anfänger empfehle ich allerdings, wenigstens einen STM32 erstmal 
ohne HAL zu erforschen, um dessen Grundlagen kennen zu lernen. Das ist 
Voraussetzung, um die HAL zu verstehen.

von Einer K. (Gast)


Lesenswert?


von Stefan F. (Gast)


Lesenswert?

Arduino Fanboy D. schrieb:
> STM32 != ATMega2560

Oh, das ist im falschen Thread gelandet. Sorry.

Kann das ein Moderator löschen?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.