Über 2 AT90CAN LED steuern

OP #4362514
Lesenswert?

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.
Angehängte Dateien:
Gast #4362594
Lesenswert?

Wo ist das Problem in der /demo/main.c:
1
while (1)
2
  {
3
    // Check if a new messag was received
4
    if (can_check_message())
5
    {
6
      can_t msg;
7

8
      // HIER DEIN LED_GEBLINKE EINZUBAUEN???
9

10
      // Try to read the message
11
      if (can_get_message(&msg))
12
      {
13
        // If we received a message resend it with a different id
14
        msg.id += 10;
15
        
16
        // Send the new message
17
        can_send_message(&msg);
18
      }
19
    }
20
  }

Egal, iwer wird dir schon ein Copy/Paste Code schreiben...

Hans
#4362651
Lesenswert?

Bitteschoen, das hier sollte mit minimalen Anpassungen dein Problem 
lösen:
1
#define CAN_RX_LED_MSG 1
2

3
while (1)
4
{
5
   // Check if a new messag was received
6
     if (can_check_message())
7
    {
8
      can_t msg;
9

10
      while(CAN_RX_LED_MSG)
11
      {
12
         __asm("nop");
13
      }
14

15
     // Try to read the message
16
      if (can_get_message(&msg))
17
      {
18
        // If we received a message resend it with a different id
19
        msg.id += 10;
20

21
        // Send the new message
22
        can_send_message(&msg);
23
      }
24
     }
25
   }

Viel Spaß damit :)
Gast #4362733
Lesenswert?

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
OP #4363698
Lesenswert?

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 ..
#4363706
Lesenswert?

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?
#4363780
Lesenswert?

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?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren