Hi Leute, ich bin Neuling und habe ein Problem mit mit einem selbst geschriebenen C-Code. Ich möchte eigendlich nur eine LED auf dem STK-Board ein- und wieder ausschalten. Als HW habe ich ein Stk600-Board, eine RCUC3C1-38 Routing Platine und darauf eine TQFP100 für den MC. Der MC ist ein AVR32C3C1512C. Hier mein Code: #define FPBA_HZ 8000000 #define FCPU 64000000 #define TC_INSTANCE &AVR32_TC0 #define TC_INSTANCE_IRQ AVR32_TC0_IRQ0 #define TC_CHANNEL 0 #include <asf.h> #include <AVR32/io.h> int main (void) { board_init(); while (1) { gpio_clr_gpio_pin(AVR32_PIN_PC06); gpio_clr_gpio_pin(AVR32_PIN_PC07); gpio_set_gpio_pin(AVR32_PIN_PC06); gpio_set_gpio_pin(AVR32_PIN_PC07); } } Die LED kann ein- aber nicht mehr ausgeschalten werden was ich nicht verstehe warum. Ich denke, dass ich einen Fehler im C-Code gemacht habe. Zum Code: Ich verwende AtmelStudio 6, dort habe ich ein neues Projekt erstellt. UserBoard->UC3C anschließend habe ich einen Namen vergeben und den o.g. Controller ausgewählt. Danach habe ich im ASF-Wizard GPIO,TC,SCIF, delay funktions und Generic board support hinzugefügt. Sonst habe ich keine weiteren Einstellungen vorgenommen. Nun hoffe Ich, dass mir von euch jemand einen Fehler oder eine falsche Einstellung sagen kann. Evtl. bin ich heute Nachmittag nicht mehr am PC, so dass ich spätestens morgen zurückschreiben werde. Besten Dank schon mal im Vorraus Hunner
Also den Fehler habe ich gefunden. Ich habe die Anweisungen aus der While-Schleife genommen und schon gings. Das Problem war nur, dass der MC so schnell arbeitet, dass ich das Ausschalten der LEDs nicht bemerkt habe. Nun aber ein anderer Fehler. Ich habe zum Verzögern der Zeit zwischen dem Einschalten der beiden LEDs eine For-Schleife programmiert. egal was ich da für Zahlenwerte hineinschreibe, werden die beiden LEDs immer gleichzeitig eingeschalten. Ich habe auch mal die Funktion gpio_tgl_... zum toggeln eines Pins versucht, was aber keine Wirkung zeigte. Evtl. hat jemand dazu eine Idee
Hallo Christian, die While-Schleife ist eine Endlosschleife. Wenn Du die frei laufen läßt, dann wird die LED so schnell ein- und ausgeschaltet, dass Du die korrekten Vorgänge nur am Osziskop erkennen kannst. Ich gehe davon aus, dass Du keinen Debugger benutzt. Dann könntest Du Schritt für Schritt schauen, ob die Befehle richtig abgearbeitet werden. Alternativ könntest Du eine For schleife einbauen, die einfach nur hochzählt, um so eine Verzögerung zu erzeugen. Nimm einen großen Datentyp und taste Dich langsam heran. Als Startwert lass sie bis 1000 zählen. Beid er Optimierungsoption solltest Du O0 (None) einstellen, sonst könnte Sie entfallen, weil der Kompiler keinen ausführbaren Code erkennt. Außerdem sehe ich nicht, dass Du der GPIO-Funktion mitteilst, dass PC6_PIN06 und PIN07 als Ausgang funktionieren sollen. Also überprüfe, ob in der board_init() so etwas Ähnliches drin steht: gpio_configure_pin(AVR32_PIN_PC06,GPIO_DIR_OUTPUT | GPIO_INIT_HIGH); gpio_configure_pin(AVR32_PIN_PC07,GPIO_DIR_OUTPUT | GPIO_INIT_HIGH); Wenn nicht, denn hinzufügen. Du hast einen Timer definiert und instanziert. Wenn benutzt Du ihn? Wozu brauchst Du ihn? Ich kann nirgends eine Stelle im Code finden, wo Du ihn abfragst. Wird in Deiner Board-init die sys_clk_init() des ASF aufgerufen? Ansonsten bleiben die Einstellungen für FPBA und FCPU wirkungslos, weil als Standard-Oszillator der RC-Oszilllator mit 115 kHz benutzt wird. Tipp: Im Zweifel empfiehlt es sich die Beispiele zu benutzen. Hoffe das reicht erst einmal, für den Anfang Viel Erfolg ...
Hey, vielleicht hier noch zwei hilfreiche Links: http://blog.anujrai.com/ https://www.kth.se/social/upload/191/Writing%20your%20own%20program%20(AVR32%20Studio)_mg_20100831.pdf und hier hats zippi auch ganz gu erklärt: Beitrag "AVR32UC3A Port setzen" hier das TUT von ihm was sich im Aufbau befindet: http://avr32-wiki.de/
Habe den Fehler gefunden. Mir hat jemand erzählt, dass AtmelStudio leere for-Schleifen wegrationalisiert. Ich würde jtzt gerne einen Baustein mittels TWI ansteuern. Hat jemand ein Beispielcode für meinen Controller?
Mein Program funktioniert jetzt so weit. An dieser Stelle mal vielen Dank an Karsandra und Henry. Das mit dem TWI werde ich wohl erst noch mal stehen lassen und die Grundlagen anschauen. Allen beteidigten an dieser Stelle vielen Dank für die Hilfe.
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.