mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMega328PA und MCP2515


Autor: S. G. (goeck)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich brauche mal eure Hilfe. Ich habe eine Platine mit einem ATMega328PA 
und einem MCP2515. Zum Betreiben nutze ich die universelle CAN 
Bibliothek von Fabian Greif (hier zu finden 
http://www.kreatives-chaos.com/artikel/universelle...). Auf 
einer Platine mit einem ATMega8 und einem MCP2515 funktioniert alles 
super, wenn ich allerdings auf der erstgenannten Platine die can_init() 
Funktion aufrufe, bleibt die Kommunikation in einer Endlosschleife 
hängen. Das ganze sieht so aus, wie auf dem angehängten Bild. Oben seht 
ihr MOSI, unten MISO. Obwohl die Init Funktion nur einmal aufgerufen 
wurde findet laufend diese Kommunikation statt und nichts anderes mehr.

Der entsprechende Code sieht so aus

int main(void)
{
    // initialize UART 
    uart_init(UART_BAUD_SELECT(19200UL, F_CPU));

    // activate interrupts
    sei();

    // redirect standardoutput => now we can use printf()
    stdout = &mystdout;

    // switch on Bluetooth
    PORTD |= (1<<PIND4);
  
    // initialize MCP2515
    if (!can_init(BITRATE_250_KBPS)) {
        PRINT("Error: no MCP2515\n");
        for (;;);
    }
    else 
        PRINT("MCP2515 active\n\n");
    ...
    return 0;
}
Hat jemand eine Idee, was da los sein könnte?

Vielen Dank und viele Grüße

Autor: JW (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mega328 / mega8 haben unterschiedliche IntVektoren.

Vermutlich wird ein Vector ohne Inthandler gerufen, was so viel wie JUMP 
0x0000 bedeutet. Also zeigt das Oszi alles richtig an ;-)

Gruß,
Jürgen

Autor: JW (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was ich noch schreiben wollte:
Auch für den richtigen Controller übersetzt ?

Autor: S. G. (goeck)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo JW,

also ich habe den Code für einen ATMega328P übersetzt. Eine passendere 
Auswahl lässt AVRStudio/WinAVR nicht zu.
Ich bin etwas unschlüssig wegen deines Kommentars mit dem Inthandler, 
kann damit nicht soviel anfangen. Wie kann ich das überprüfen ohne 
DebugWire und ggf. ändern?

Schönen Sonntag :-)

Autor: S. G. (goeck)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
JW schrieb:
> mega328 / mega8 haben unterschiedliche IntVektoren.
>
> Vermutlich wird ein Vector ohne Inthandler gerufen, was so viel wie JUMP
> 0x0000 bedeutet. Also zeigt das Oszi alles richtig an ;-)
>
> Gruß,
> Jürgen

Hallo Jürgen,

dein Tipp war richtig. Ich hatte zwar die aktuellste UART Bibliothek von 
Peter Fleurys Website runtergeladen, wo sich auch der ATMEga328P drin 
findet, allerdings sind wohl die Interrupt Vektoren falsch.
Habe dann die aktualisierte Bibliothek von 
http://beaststwo.org/avr-uart/index.shtml verwendet, und die 
funktioniert einwandfrei. Nun bleibt der Controller nicht mehr bei der 
Abfrage hängen.

Danke für eure Hilfe.

Grüße vom Rhein

Autor: Alter Falter (alter_falter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenngleich schon alt, aber für alle künftigen Leser ein wichtiger 
Hinweis bezüglich der Uart Library auf beatstwo.org:

Es hat sich zumindest ein Bug eingeschlichen in der Lib.
Bei den Defines für den 644P steht:

#define UART0_RECEIVE_INTERRUPT  USART0_RX_vect
#define UART1_RECEIVE_INTERRUPT  USART0_UDRE_vect
#define UART0_TRANSMIT_INTERRUPT  USART1_RX_vect
#define UART1_TRANSMIT_INTERRUPT  USART1_UDRE_vect

es sollte aber heißen:

#define UART0_RECEIVE_INTERRUPT      USART0_RX_vect
#define UART0_TRANSMIT_INTERRUPT     USART0_UDRE_vect
#define UART1_RECEIVE_INTERRUPT      USART1_RX_vect
#define UART1_TRANSMIT_INTERRUPT     USART1_UDRE_vect

Der Autor ist mittlereile bereits verstorben, sodaß die Homepage nicht 
mehr aktualisiert wird.


Dies zu Eurer Info.

Autor: S. G. (goeck)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Alter Falter,

Peter Fleury oder Tim Sharpe (beaststwo.org) ist verstorben?

Ist es nicht eh viel ratsamer mittlerweile sich an den Arduino 
Bibliotheken irgendwie zu bediehnen, was UART angeht? Bin da nicht so 
informiert...

Grüße

Autor: Alter Falter (alter_falter)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo S.G.,

habe von Elisa Sharpe erfahren, daß Tim wohl 2009 verstorben sei.


Alter_Falter

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.