Raspberry PI und ATmega328 serielle Schnittstelle

Gast #4705652
Lesenswert?
• ▲
▼
Servus Leute,

ich bin gerade dabei, einen RaspberryPI3 und einen Atmgega328p über die 
serielle Schnittstelle der GPIOs des PI miteinander zu verbinden.
Der ATmega läuft mit 3,3V um auf einen Pegelwandler verzichten zu können 
und ist auf 8 MhZ mit internem Taktgeber gefused.

Die Erfolgsquote liegt aber nur bei 50%.
Es gelingt, von dem AVR Daten an den Pi zu senden und diese mit dem 
Terminalprogramm Cutecom auszulesen.
Jedoch klappt es nicht, mit Cutecom über die gesendeten Strings "l0\n" 
oder "l1\n" eine LED am Pi ein- und auszuschalten.

Die Hardwareverbindungen habe ich alle geprüft und sie sind in Ordnung.
Im Anhang ist der C-Quellcode für den AVR.

Hoffentlich könnt ihr mir helfen!
Danke im Vorraus.

Viele Grüße,

Jonas Wühr
Angehängte Dateien:
#4705754
Lesenswert?
• ▲
▼
Narbend,
ich glaube, an dieser Stelle verwendest du die falschen Indices für 
rxBuffer. MMn findest du die empfangenen Zeichen ab Offset 0 und nicht 
ab Offset 1.
1
  if(stringRxFlag == 1)
2
  {
3
    if(rxBuffer[1]=='l')
4
    {
5
      if(rxBuffer[2]='1')
6
      {
7
        PORTB=(1<<PB1);
8
      }
9
      if(rxBuffer[2]='0')
10
      {
11
        PORTB&=~(1<<PB1);
12
      }
13
    }
14
  }

dh richtig wäre:
1
  if(stringRxFlag == 1)
2
  {
3
    if(rxBuffer[0]=='l')
4
    {
5
      if(rxBuffer[1]='1')
6
      {
7
        PORTB=(1<<PB1);
8
      }
9
      if(rxBuffer[1]='0')
10
      {
11
        PORTB&=~(1<<PB1);
12
      }
13
    }
14
  }

Ansonsten alle Teile mal unabhängig voneinander Testen, d.h. LED mit 
_delay_ms periodisch Blinken lassen, wenn das geht, den empfangenen 
String 1:1 wieder zurücksenden, erst wenn das geht, das gewünschte 
Programm aus getesteten Fragmenten zusammenbasteln.

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