Atmega 2560 startet Program nicht

OP #6090492
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?
Angehängte Dateien:
Gast #6090509
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.
Gast #6090639
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.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.