Performance auf unterschiedlichen Ports beim Atmega328PB

Gast #6528315
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.
Gast #6528337
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.
Gast #6528471
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.
Gast #6529014
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.
Angehängte Dateien:

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