Forum: Mikrocontroller und Digitale Elektronik Performance auf unterschiedlichen Ports beim Atmega328PB


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Franz (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich versuche gerade zwischen zwei Atmega328PB via PJON-Bitbanging eine 
Verbindung herzustellen.

Mein Code ist quasi analog zu 
https://github.com/gioblu/PJON/blob/master/examples/ARDUINO/Local/SoftwareBitBang/BlinkTest/Transmitter/Transmitter.ino 
und 
https://github.com/gioblu/PJON/blob/master/examples/ARDUINO/Local/SoftwareBitBang/BlinkTest/Receiver/Receiver.ino

nur mit dem Unterschied, dass ich keine LED leuchten lasse sondern 100 
Nachrichten pro Sekunde an den Empfänger versende und dort die Anzahl 
der eingetroffenen Nachrichten pro Sekunde ausgebe.

Das funktioniert auch ganz ordentlich, aber nur auf den Pins von Port B. 
Dort bekomme ich auf allen Pins ca. 66 Nachrichten/s.

Auf den Pins an Port B oder E hingegen schwankt das ganze stark zwischen 
0 und 20. Noch schlimmer wirds, wenn ich auch das Versenden über einen 
Pin von Port C mache - dann kommt nämlich überhaupt nix mehr am zweiten 
Atmega an.

Probehalber habe ich das auch mal auf einem Arduino Nano nachgebaut, da 
bekomm ich auf allen Ports die 66 Nachrichten/s.

Hat da jemand eine Idee, an was das liegen könnte? Am Unterschied 
zwischen P und PB dürfte es laut entsprechender Doku von Atmel wohl 
nicht liegen.

von Stefan ⛄ F. (stefanus)


Bewertung
2 lesenswert
nicht lesenswert
Sollen wir über hypotetisch quasi analogen Code diskutieren, oder zeigst 
du uns deinen code und bitte den exakten Download Link oder Quelltext 
der verwendeten Bibliothek? Bei der Gelegenheit kannst du auch gleich 
noch die FUSES nachreichen.

> Das funktioniert auch ganz ordentlich, aber nur auf den Pins von Port B.
> Auf den Pins an Port B ...  hingegen schwankt das ganze stark.

Kannst du dich für eine der beiden Aussagen entscheiden?

Auf deinem Arduino Nano gibt es keinen Port E. Also hast du Unterschiede 
nur auf Port C beobachtet, richtig?

Hast du den Code zwischendurch neu compiliert? Es wäre spannend, zu 
erfahren, ob sich das Programm vom ATmega328P auf dem PB anders verhält.

: Bearbeitet durch User
von Spess53 (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Hi

> Atmega328PB <> Atmeg 328pa!

MfG Spess

von Wolfgang (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Franz schrieb:
> Noch schlimmer wirds, wenn ich auch das Versenden über einen
> Pin von Port C mache - dann kommt nämlich überhaupt nix mehr am zweiten
> Atmega an.

Du solltest die Versorgungsspannung für Port C über den Pin AVCC bereit 
stellen. Sonst tut sich auf dem Port gar nichts.

von Wolfgang (Gast)


Bewertung
0 lesenswert
nicht lesenswert
p.s.
Zeig mal deinen Schaltplan, so wie du die Schaltung aktuell aufgebaut 
hast.

von Franz (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Stefan ⛄ F. schrieb:
> Kannst du dich für eine der beiden Aussagen entscheiden?
>
> Auf deinem Arduino Nano gibt es keinen Port E. Also hast du Unterschiede
> nur auf Port C beobachtet, richtig?
>
> Hast du den Code zwischendurch neu compiliert? Es wäre spannend, zu
> erfahren, ob sich das Programm vom ATmega328P auf dem PB anders verhält.

Oh, sorry, vertippt.
Korrekt sollte sein: Port D läuft gut, alle anderen machen Probleme.
Code wurde jedes mal neu kompiliert. Allein, weil einmal standard 
Arduino und einmal via MiniCore (https://github.com/MCUdude/MiniCore/).


Ich hatte jetzt keinen Schaltplan angehängt, weil ich erstmal nur die 
Theorie dahinter wissen wollte, sprich ob es irgendeinen Faktor geben 
kann, der für diese Unterschiede in den Ports sorgen könnte. Aber im 
Anhang dann trotzdem der aufs Wesentliche reduzierte Schaltplan.

Ich nutze also PD3, PD5, PD2, PC4, PC2 und PC1. Das ganze ist schon als 
echte Platine vorhanden. Die Tests mit den Ports B und E habe ich 
entsprechend in fliegender Verdrahtung gemacht.

von Stefan ⛄ F. (stefanus)


Bewertung
1 lesenswert
nicht lesenswert
Vergiss mal deinen Minicore und dass das gleiche Binary (vom ATmega328P) 
auch auf dem ATmega328PB laufen.

Damit kannst du die erste Entscheidungs-Weiche stellen: Software oder 
Hardware.

von Franz (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Stefan ⛄ F. schrieb:
> Vergiss mal deinen Minicore und dass das gleiche Binary (vom ATmega328P)
> auch auf dem ATmega328PB laufen.

Oh, wow - das Arduino Nano-Kompilat läuft tatsächlich problemlos.
Da wäre ich ja nie drauf gekommen, vielen Dank!

von Stefan ⛄ F. (stefanus)


Bewertung
1 lesenswert
nicht lesenswert
Franz schrieb:
> Oh, wow - das Arduino Nano-Kompilat läuft tatsächlich problemlos.

Damit ist also klar, dass der Unterschied in der Software steckt. Jetzt 
muss man wohl einen Blick in die Quelltexte werfen.

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]
  • [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.

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