aber jetzt kommts : wenn ich die leuchtlogik umdrehe (set <-> reset, wie
in den kommentarzeilen) geht nichts !
auch wenn ich ne blinkschleife einbaue : nichts !!
ich werd wahnsinnig ...
Reiner Doll schrieb:> aber warum gehts dann so wie im text ??
Vielleicht ein Zufall. Wenn man Controller außerhalb der Spezifikation
betreibt passieren komische Dinge. Außerdem hast du ja gar nicht gesagt,
was "geht nichts" und "läuft prima" bedeutet.
Reiner Doll schrieb:> egal. verzeih die dummy-frage : wie schalt ich den gpioa an den takt ?
Genauso wie bei GPIOD, und da hast du es ja schon erfolgreich gemacht.
Hier bitte Transferleistung erbringen.
Reiner Doll schrieb:> bringt nix, geht genausowenig ...
Erlätuere doch mal genau, was das heißt. Und auch, was in der 1.
Variante funktioniert. Zwischen den Tests mal das Board komplett vom
Strom trennen, um einen "echten" Neustart des Controllers zu
garantieren.
Reiner Doll schrieb:> bringt nix, geht genausowenig ...
Ohne zu wissen, was Dein (...->IDR &0x0001) überhaupt macht, prüfst Du
doch, ob der User-Button benutzt wurde, oder?
Prbiere mal folgenden Code:
habs ausprobiert.
der code von frank macht das gleiche wie meiner : auf knopfdruck wird
die blaue led geschalten. in der "frank-variante" :
if (button_pressed ())
{
GPIO_ResetBits(GPIOD,GPIO_Pin_15);
//GPIO_SetBits(GPIOD,GPIO_Pin_15);
}
else
{
GPIO_SetBits(GPIOD,GPIO_Pin_15);
//GPIO_ResetBits(GPIOD,GPIO_Pin_15);
}
so gehts. druck auf den schwarzen taster -> blaue led aus.
aber so :
if (button_pressed ())
{
//GPIO_ResetBits(GPIOD,GPIO_Pin_15);
GPIO_SetBits(GPIOD,GPIO_Pin_15);
}
else
{
//GPIO_SetBits(GPIOD,GPIO_Pin_15);
GPIO_ResetBits(GPIOD,GPIO_Pin_15);
}
gehts eben nicht. es passiert gar nix. (ob : RCC_AHB1Periph_GPIOA,
ENABLE gesetzt ist, ändert auch nix. hab ich jetzt natürlich, danke
dafür nochmal)
Reiner Doll schrieb:> so gehts. druck auf den schwarzen taster -> blaue led aus.
Auf den SCHWARZEN Taster?!?!?!?
Das ist der RESET-Button! :-))))))))))))
Du musst schon den blauen Taster nehmen.
Hahahahaaaa, der war echt gut!
das ist der knaller ...
es geht aber mit der blauen taste überhaupt nicht, beide varianten
nicht.
wenn der schwarze reset macht, erklärt das meinen testfehler : das
schaut genauso aus, als würde die eine variante funktionieren ..
während des reset ist die led aus.
also : es geht keines von meinen programmen. ;-((
Reiner Doll schrieb:> also : es geht keines von meinen programmen. ;-((
Das wundert mich aber. Die oben von mir skizzierten Funktionen habe ich
selbst so ausprobiert und im Einsatz. Das kann ich aber erst heute abend
testen.
Matthias Lipinsky schrieb:> Du solltest hier anfangen:>> http://www.diller-technologies.de/stm32.html#start
Genau da ist er doch gerade, nämlich beim Schalten von LEDs. Leider
kann man das Diller-Beispiel genau hier nicht verwenden, weil die
Port-Definitionen von der Numerierung her für den STM32F1 komplett
anders sind.
Reiner hat das schon richtig gemacht. Er sollte aber trotzdem mal die
GPIO_WriteBit() Funktion nehmen.
danke für den tipp mit diller. hatte ich schon probiert, wegen der nicht
kompatilen libraries (f10) dann aber aufgegeben.
auch das habe ich schon probiert :
if (button_pressed ())
{
//GPIO_ResetBits(GPIOD,GPIO_Pin_15);
//GPIO_SetBits(GPIOD,GPIO_Pin_15);
GPIO_WriteBit(GPIOD, GPIO_Pin_15, SET);
}
else
{
//GPIO_SetBits(GPIOD,GPIO_Pin_15);
//GPIO_ResetBits(GPIOD,GPIO_Pin_15);
GPIO_WriteBit(GPIOD, GPIO_Pin_15, RESET);
}
... no go. (trotz gezieltem druck auf den BLAUEN taster ;-)
wahnsinn. ich habe vor nem jahr ungefähr mit dem atmega128 gespielt. da
hat die einarbeitung genau einen nachmttag gedauert. das hier ist ne
andere liga.
Weißt du was AVR oder STM32 sind?
Reiner Doll schrieb:> ich beginne mit dem stm32f4 discovery. em::blocks als ide, mit dem> avr-gcc compiler ("bare metal").
den gleichen Fehler hatten wir hier schonmal im Forum
diese Zeile ist schuld :
SysTick_Config(SystemCoreClock/100);
du schaltest den Timer ein, hast aber keine ISR dafuer
programmiert
ergo landet die CPU im HardFaultHandler und
macht eine while(1)
Gruss Uwe
Reiner Doll schrieb:> wahnsinn. ich habe vor nem jahr ungefähr mit dem atmega128 gespielt. da> hat die einarbeitung genau einen nachmttag gedauert. das hier ist ne> andere liga.
Ich spiele auch erst seit 2 Wochen mit dem STM32F4-Disco-Board herum.
Wenn man einmal die (vermeintlichen) Einstiegshürden überwunden hat,
dann fluppt es danach wesentlich einfacher als bei den AVRs. Hab etwas
Geduld :-)
Schau Dir mal die einzelnen Projekte von
http://mikrocontroller.bplaced.net/wordpress/?page_id=744
an... schön von oben nach unten. Das hat mir mehr als alles andere (div.
Tutorials etc) gebracht. Eigentlich ist von allem, was das Disco-Board
so bietet, etwas dabei.
Reiner Doll schrieb:> ich beginne mit dem stm32f4 discovery. em::blocks als ide, mit dem> avr-gcc compiler ("bare metal").
Stimmt!
Franz hats gesehen... Wäre mir nicht gleich aufgefallen.
Stell mal statt dem AVR-GCC den STM32-Compiler ein (müßte "ARM-GCC"
heißen).
probier doch erstmal die LED überhaupt blinken zu lassen ohne jegliche
Benutzerinteraktion...
ne Schleife, Pausen und On/Off
desweiteren Beitrag "STM32F4 Taster"
schmeiss also mal dein systick_config rasu und schau was dann passiert.
Würde auch zu deiner Beschreibugn passen. Der Code läuft einmal durch
und setzt die LED ohne Tastendruck, danach hängt das Ding in der Systick
Schleife.
Änderst du den Code dahingeghend das die LED nach Tastendruck gesetzt
wird, siehst du nix, da dein Code nach 100us in der Schleife hängt
Halt doch mal den Taster gedrückt bei Variante 2 und starte den uC dann.
Theoretisch müsste die LED dann ja leuchten
Hat em::Blocks keinen Debugger Support?
da wär ich nie draufgekommen. danke !!
jetzt geht alles einwandfrei ;-)
@franz : avr/arm verwechselt oben (arm gcc), sorry.
jetzt mal blinken, dann ein wenig uart, dann a/d-wandler, das wird
sicher heiter mit dem ding.
Reiner ich kann dir das aktuellle emblocks und die aktuelle stm32cubef4
von stm empfehlen sowie das cubemx. Nimmt einem doch schon was an Arbeit
mit der ganzen initialisierung etc. und Ansteuerung der peripherie ab.
Und wenn du ganz genau wissen möchtest wie das alles so funzt kannste
dir auch immer noch den quellcode der libs anschauen, die Jungs von STM
wissen doch schon eigentlich ganz gut was sie da tun... obwohl es immer
noch ein paar "bugs" darin gibt, aber dazu findet sich genug in diversen
foren etc.
Grobi schrieb:> die Jungs von STM> wissen doch schon eigentlich ganz gut was sie da tun...
Ahaha, der war gut. Sobald die ST-Leute irgendwas mit Software
anfassen, gehts schief. Die "Cube" Libraries sind da noch schlimmer als
die alten "Standard Peripheral Libraries" - Struktur noch vermurkster,
noch (unnötig!) ineffizienter...
Problem: "Das API unserer Library ist so umständlich und kompliziert"
Normale Programmierer: "Wir verbessern das API"
ST-Programmierer: "Wir bauen einen Code-Generator (STM32CubeMX), um die
Library-Aufrufe zu generieren"
Dr. Sommer schrieb:> Grobi schrieb:>> die Jungs von STM>> wissen doch schon eigentlich ganz gut was sie da tun...> Ahaha, der war gut. Sobald die ST-Leute irgendwas mit Software> anfassen, gehts schief. Die "Cube" Libraries sind da noch schlimmer als> die alten "Standard Peripheral Libraries" - Struktur noch vermurkster,
Ja? Finde ich nicht. meinem Eindruck nach wurde da etwas entschlackt.
> noch (unnötig!) ineffizienter...
Ok, darüber kann man reden :-)
> ST-Programmierer: "Wir bauen einen Code-Generator (STM32CubeMX), um die> Library-Aufrufe zu generieren"
Den Generator finde ich nicht schlecht - auch weil man da sich sehr
schön den passenden Chip raussuchen kann ohne sich durch die
gehäusetypen wühlen zu müssen und direkt sieht, wo Pinbelegungen sich
gegenseitig ausschließen.
ST zwingt einen ja auch nicht dazu, die Bibliotheken zu nutzen :-)