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?
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.
Hast du die 120 Ohm berechnet oder nur wild geraten? Ich hätte dort mindestens 220 Ohm erwartet, eher mehr.
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.
A. R. schrieb: > Hatte jetzt 3 Jahre kein Projekt mehr gehabt. Und dann sofort übertakten? Wie finde ich das denn?
Ich meine die Taktfrequenz habe ich beim letzten Projekt auch verwendet. Leider habe ich keine Unterlagen mehr davon. Passt die Frequenz nicht?
• Speed Grade: – ATmega2560/ATmega2561: • 0 - 16MHz @ 4.5V - 5.5V
Kann ich die fuses auf intern Takt umstellen zum unstellen und muss dafür der angeschlossene ausgelötet werden?
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.