Platformio, Attiny24, falsches Pinmapping!?

OP #6596292
Lesenswert?
• ▲
▼
Hallo zusammen,
ich möchte über die Platformio-IDE einen Attini24 mit dem Arduino 
Blink-Sketch programmieren um die LED am PA0-Pin blinken zu lassen. Die 
Konpilierung und Programmierung funktioniert ohne Fehler, allerdings mit 
einer Warnung (Siehe unten) und ich glaube, da liegt der Hund begraben, 
denn die angegebene LED will nicht blinken!
1
#include <Arduino.h>
2

3
void setup()
4
{
5
  // initialize LED digital pin as an output.
6
  pinMode(PA0, OUTPUT);
7
}
8

9
void loop()
10
{
11
  // turn the LED on (HIGH is the voltage level)
12
  digitalWrite(PA0, HIGH);
13
  // wait for a second
14
  delay(1000);
15
  // turn the LED off by making the voltage LOW
16
  digitalWrite(PA0, LOW);
17
  // wait for a second
18
  delay(1000);
19
}
1
Platformio-ini:
2
[env:attiny24]
3
platform = atmelavr
4
board = attiny24
5
framework = arduino
6
; change MCU frequency
7
;board_build.f_cpu = 1000000L
8

9
upload_protocol = custom
10
upload_port = COM5
11
upload_speed = 19200
12
upload_flags =
13
    -C
14
    ; use "tool-avrdude-megaavr" for the atmelmegaavr platform
15
    $PROJECT_PACKAGES_DIR/tool-avrdude/avrdude.conf
16
    -p
17
    $BOARD_MCU
18
    -P
19
    $UPLOAD_PORT
20
    -b
21
    $UPLOAD_SPEED
22
    -c
23
    avrispv2
24
upload_command = avrdude $UPLOAD_FLAGS -U flash:w:$SOURCE:i

Bei der Kompilierung wird folgende Warnmeldung ausgegeben:
C:\users\xxx\.platformio\packages\framework-arduino-avr-attiny\variants\ 
tinyX4/pins_arduino.h:156:2:  warning: #warning "This is the 
COUNTERCLOCKWISE pin mapping - make sure you're using the pinout diagram 
with the pins in counter clockwise order" [-Wcpp]
 #warning "This is the COUNTERCLOCKWISE pin mapping - make sure you're 
using the pinout diagram with the pins in counter clockwise order"

Hier stecke ich gerade fest! Wie und wo kann ich eine "counter clockwise 
order" angeben?

Grüße RM
#6596537
Lesenswert?
• ▲
▼
Hallo,

mit Arduino werden alle Pins mit durchnummerierten Nummern angesprochen. 
Für jeden unterstützten Controller gibts Pinouts. Da mir die Ausschrift 
bekannt vorkommt, vermute ich du hast ein Package von Spencekonde der 
IDE hinzugefügt. Er hat vor langer Zeit einmal seine 
Pindurchnummerierung geändert. Seitdem lässt er das beim kompilieren als 
Hinweis mit anzeigen. Einstellen kann man das im Boardmenü, falls man 
das abweichend von default ändern möchte. Also wenn du das von 
Spencekonde verwendest ist hier alles beschrieben. 
https://github.com/SpenceKonde/ATTinyCore
#6596635
Lesenswert?
• ▲
▼
Veit D. schrieb:
> vermute ich du hast ein Package von Spencekonde der IDE hinzugefügt.

Ja sicher. Das ist aber nicht das Problem.
Da hat der nicht die Arduino-Pinnnummer, sondern die Pinnummern 
innerhalb des Ports verwendet:

V. T. schrieb:
> pinMode(PA0, OUTPUT);

Das Makro "PA0" ist eine 0. Blöd, dass das Makro "PB0" auch eine 0 ist.

Da Frage ich mich aber, warum man in der Lib nicht die Pinnummern der 
ICs selbst nimmt. Oder man macht es von vornherein wie von peda 
vorgeschlagen, aber da würde man sich ja mit der Hardware beschäftigen 
müssen.

mfg mf
Gast #6596729
Lesenswert?
• ▲
▼
Hallo zusammen,

genau so ist es ;-). Das Problem lag an der falsch angegebenen 
Pin-Nummer.

Wenn ich die Makros aus: 
SpenceKonde/ATTinyCore/blob/139f872c6ccecef7b5fe6f7b3d81b8e6f00762a4/var 
iants/tinyX4/pins_arduino.h#L86-L98

Bsp. "PIN_A0" verwende, ist es auch egal, ob ich "counter clockwise
order" oder "clockwise" angegeben habe.

Diese Meldung wird immer ausgegeben.
#ifdef ARDUINO_MAIN
#warning "This is the COUNTERCLOCKWISE pin mapping - make sure you're 
using the pinout diagram with the pins in counter clockwise order"

Info zur Zählorder:
In der JSON-Datei zum Attiny24 ist die Variante angegeben "variant": 
"tinyX4":

    "build": {
      "core": "tiny",
      "extra_flags": "-DARDUINO_AVR_ATTINYX4",
      "f_cpu": "8000000L",
      "mcu": "attiny24",
      "variant": "tinyX4"
    },

im SpenceKonde/ATTinyCore gibt es noch die andere Variante, die man über 
die Platformio.ini auswählen kann:

board_build.variant = tinyX4_reverse

Dann hätte man das Pinmapping umgestellt. Ist aber nicht notwendig, wenn 
man oben beschriebenes Makro verwendet.

Kaum macht man's richtig, schon tuts :-)

Danke und schöne Grüße V.T.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.