Hallo Community, im Anhang seht ihr eine CAN-Bibliothek, mit der man mit 4 Tastern 4 Led s ansteuern kann. Ich möchte so etwas ähmliches umsetzen und zwar: Ich habe zwei crumb at90 can und möchte einfach nur über can eine nachricht von einem mikrocontroller(1) zum anderen schicken und bei erfolgreicher übertragung eine led an mikrocontroller (2) blinken lassen. kann mir da jemand weiterhelfen? (bin wahrlich nicht der geborene programmierer) es wäre wirklich wichtig. Ich gebe mich auch schon mit denkanstößen zufrieden.
Gast
#4362516
Dann denk gleich mal an die Abschlußwiderstände und zwar an beiden Seiten, egal wie kurz dein Kabel wird! ;-) Hans
ok bitte so schlimm ist mein kenntniswiderstand auch nicht. mir fehlts nur an programmierwissen
Gast
#4362538
:-S Das wollt ich damit nicht ausdrücken. Dann nimmst die Lib ausm Anhang, die hab ich auf den gleichen Boards verwendet. Hans
Hans M. schrieb: > :-S Das wollt ich damit nicht ausdrücken. > > Dann nimmst die Lib ausm Anhang, die hab ich auf den gleichen Boards > verwendet. > > Hans Danke dir ! Und das löst mein Problem?
Gast
#4362575
MArkus S. schrieb: > mir fehlts nur an programmierwissen löst die Lib nicht. Aber mit ein wenig lesen ( http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial )und anschaun der Demo (main.c), hast alles an der Hand um dein Problem selbst zu lösen ;-) Hans
Alles klar. Falls doch jemand den absoluten Tatendrang verspürt sich diesem Problem näher zu widmen, der soll sich gerne melden.
Gast
#4362594
Wo ist das Problem in der /demo/main.c:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
Egal, iwer wird dir schon ein Copy/Paste Code schreiben... Hans
Bitteschoen, das hier sollte mit minimalen Anpassungen dein Problem lösen:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
Viel Spaß damit :)
Michael K. schrieb: > while(CAN_RX_LED_MSG) > { > __asm("nop"); > } was bedeutet dieser befehl?
Plus eine weitere Frage: Was mache ich mit dem makefile bzw. wie binde ich das ein? Muss es eingebunden werden?
Ich bekomme jetzt nämlich die Fehlermeldung: undefined reference to 'can_init' (und weitere Funktionen). Ich weiß da nicht mehr weiter...
Gast
#4362733
Ich kann's zwar an deinen Fragen ableiten, aber definiere doch bitte mal: "mir fehlts nur an programmierwissen". Es würde denen mit MArkus S. schrieb: > absoluten Tatendrang helfen, dir Denkanstöße auf deinem "Level" zu geben. Gern verweise ich noch einmal auf: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial Alternative schau doch mal im bascom-forum.de vorbei. Das sollte deinem Unwillen, sich mit C zu beschäftigen, entgegen kommen ;-) Aber dann wirds mit der Lib nix mehr ( oder kann bascom auch c-files händeln? ) . Hans
Wie gesagt, im moment scheitert es sogar am einbinden des makefiles. Das muss ich ja machen oder?
Hatte jemand mal diesen Fehler: #error only 16 MHz for F_CPU supported! ??
nein, hatte noch niemand bis jetzt.
MArkus S. schrieb: > Michael K. schrieb: >> while(CAN_RX_LED_MSG) >> { >> __asm("nop"); >> } > > was bedeutet dieser befehl? Es hält sich hartnäckig die Mär, ohne diesen unsäglich überflüssigen NOP Befehl würde die While-Schleife wegoptimiert werden. Ist natürlich Humbug.
folgendes steht ja in der at90can_private.h: #if F_CPU != 16000000UL #error only 16 MHz for F_CPU supported! #endif in der delay.h steht: # define F_CPU 1000000UL somit kann das ja nicht funktionieren. Könnt ihr mir jetzt nur sagen, ob ich dafür das einbinden des makefiles benötige? denn man kann die delay.h ja nicht abändern ..
MArkus S. schrieb: > folgendes steht ja in der at90can_private.h: > > #if F_CPU != 16000000UL > #error only 16 MHz for F_CPU supported! > #endif > > in der delay.h steht: > > # define F_CPU 1000000UL > > somit kann das ja nicht funktionieren. > Könnt ihr mir jetzt nur sagen, ob ich dafür das einbinden des makefiles > benötige? denn man kann die delay.h ja nicht abändern .. F_CPU sollte NICHT in der delay.h stehen. Mit F_CPU stellst du deine Controllerfrequenz ein. Das sollte man im makefile bzw. in der verwendeten IDE einstellen. Und nicht irgendwo in den Code klatschen. D.h. du musst deinen Controller mit 16 MHz takten lassen und dies dem Compiler mit dem F_CPU Symbol mitteilen. Keine Ahnung ob du ein makefile einbinden musst. Wo schreibst du was zu deiner Entwicklungsumgebung? Im Atmel Studio muss man es nicht. In den meisten IDEs muss man es nicht. Du hast doch sicher schon andere Projekte in deiner Umgebung gemacht oder?
Nein leider nicht. Ist mein erstes projekt mit atmel und auch mit dem at90can
Kann denn niemand beim Einbinden eines Makefiles helfen?
MArkus S. schrieb: > Kann denn niemand beim Einbinden eines Makefiles helfen? Warum willst du unbedingt ein makefile einbinden?
Cyblord -. schrieb: > Warum willst du unbedingt ein makefile einbinden? Weil ich nicht weiß, wie ich sonst die CPU ändern soll. Wo in der IDE soll das gehen?
MArkus S. schrieb: > Cyblord -. schrieb: >> Warum willst du unbedingt ein makefile einbinden? > > Weil ich nicht weiß, wie ich sonst die CPU ändern soll. > Wo in der IDE soll das gehen? Welche nutzt du überhaupt? Atmel Studio? Das macht man einfach in den Projekteinstellungen, dort wo man auch den Controller einstellt. Läuft dein Controller dann auch wirklich mit 16 MHz? Hast du einen entsprechenden Taktgeber/Quarz dran und die Fuses entsprechend eingestellt?
Cyblord -. schrieb: > Welche nutzt du überhaupt? Atmel Studio? Das macht man einfach in den > Projekteinstellungen, dort wo man auch den Controller einstellt. > > Läuft dein Controller dann auch wirklich mit 16 MHz? Hast du einen > entsprechenden Taktgeber/Quarz dran und die Fuses entsprechend > eingestellt? Ja atmel ja mit 16 MHz quarz ist dran fuses?
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.