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


von Franz (Gast)


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. (Gast)


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.

von Spess53 (Gast)


Lesenswert?

Hi

> Atmega328PB <> Atmeg 328pa!

MfG Spess

von Wolfgang (Gast)


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)


Lesenswert?

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

von Franz (Gast)


Angehängte Dateien:

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. (Gast)


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)


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. (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.