Über 2 AT90CAN LED steuern

OP #4362514
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
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
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
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
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
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
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?
OP #4363846
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

Eine eigene Frage? Dieser Thread ist über 10 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.