PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Arduino Nano LED-Blinken geht aber auf Attiny85 läuft nicht



1wire
11.04.2020, 21:40
Hallo Forum,

ich habe einen Arduino Nano und die IDE 1.8.12. Das Beispiel BLINK habe ich auf Pins 2 und 4 abgeändert und entsprechen LEDs angehängt. Und die LED blinken.
Nun hab ich die .hex exportiert und auf einen Attiny85 mit AVR8 Burn-O-Mat geflasht und ebenfalls diese LEDs angeschlossen. Diese leuchten aber nicht nicht.

Wie muss ich die INT Definition für einen Attiny85 abändern. Das die Ports richtig angesprochen werden??

Hab bisher nur fertige .hex geflasht, will jetzt aber mal selber in die Programmierung einsteigen. Hab jetzt schon Stunden nach Pin-Mapping, Wiring und so gesucht.
Auch schon mit Ändern in int ledRot = PB2 aber war alles nicht zielführend.
Bitte wer kann mir helfen und danke schon mal fürs lesen

Viele Grüße
1wire



int ledRot = 2; // definiere Variable für rot
int ledGruen = 4; // definiere Variable für grün

// the setup function runs once when you press reset or power the board
void setup() {
// initialize digital pin LED_BUILTIN as an output.
pinMode(ledRot, OUTPUT); //
pinMode(ledGruen, OUTPUT); //
}

// the loop function runs over and over again forever
void loop() {
// hier kommt jetzt meine LED konfig
digitalWrite(ledRot, LOW); // mache die LEDs aus
digitalWrite(ledGruen, LOW); //
delay(500); // und warte eine Sekunde
digitalWrite(ledRot, HIGH); // mache die rote LED an
delay(500); // und warte eine Sekunde
digitalWrite(ledGruen, HIGH); // danach mache die grüne LED an
delay(200); // und warte eine Sekunde
}

021aet04
11.04.2020, 22:27
Willkommen im Forum,
Es sollte der richtige Controller ausgewählt werden. Am Nano ist soweit ich weiß ein Atmega328 verbaut.

MfG Hannes

1wire
12.04.2020, 09:22
Hallo Hannes,
danke für deine schnelle Antwort. Ja auf dem Nano ist ein 328er drauf. unter Werkzeuge hab ich das auch entsprechend alles eingetragen. Dann mit Sketch/Hochladen auf den Nano geschoben und sofort läuft das Programm richtig.

Als nächstes wähle ich "Sketch/kompilierte Binärdatei exportieren" und die erzeugte DATEI.hex flashe ich mit avrdude -p t85 -c usbasp -B16 -e -U flash:w: DATEI.hex -v auf einen attiny85.
Danach schließe ich diesen mit GND und VCC an und entsprechen die LEDs. Doch leider leuchtet die grüne niemals.

Ich hab dieses Programm ja für den Nano geschrieben und flashe das jetzt einfach auf einen anderen Chip muss ich dann:

1. die INT benennung ändern in zb: PB2 und PB4

2. Wie bekomme ich den Parameter für avrdude -B16 in der IDE durchgereicht? In der C:\Program Files (x86)\Arduino\hardware\tools\avr\etc\avrdude.conf steht drin
"For user-specific additions, use the "-C +filename" commandline option." Ich benötige diesen -B16 unbedingt wegen meinem USBasp.
Dann könnte ich das Proggi mit der IDE flashen, vielleicht gehts dann

3. kann der Reset-Pin offen bleiben?

Frohe Ostern

021aet04
12.04.2020, 10:26
Du kompilierst den Code für den Atmega328 und der ist nicht kompatibel zum Attiny85. Wenn der gleich wäre, wäre es sinnlos den richtigen Controller zu wählen. Du musst den richtigen Controller auswählen und dann erneut kompilieren.

Interne Bezeichnungen musst du nicht ändern. Wenn du PB2 verwenden willst, musst du PB2 wählen. Wenn du statt PB2 aber z.B. PB4 verwenden willst, musst du natürlich das in PB4 ändern.

Resetpin muss immer auf einem definierten Pegel sein. Ist der Pin auf low, läuft der Controller nicht, er läuft nur wenn dieser ein High hat. Zwischen RST und +5V (VCC) muss ein Pullupwiderstand sein. Es gibt einen Sonderfall, den RST Pin kann man auch als normalen I/O Pin verwenden, dann kannst du aber nur mittels HV-Programmierung den Controller beschreiben.

Zu Punkt 2 kann ich nichts sagen, ich programmiere mittels AVR Studio und Atmel Ice.

MfG Hannes

1wire
12.04.2020, 12:36
Hallo Hannes,

danke für deine Ideen, jetzt geht es. Das Problem lag mal wieder vor dem Computer :cool:

Ich musste in Werkzeuge den Attiny85 ohne Optiboot wählen. Übrigens klappt das mit einem 10k Pullup für Reset wie auch ohne diesen. zumindest bei mir aufm Steckbrett.

MfG 1wire

021aet04
12.04.2020, 12:57
Häufig klappt es auch ohne, wenn du im DB schaust (Kapitel 8), erkennst du das der Attiny einen internen Pullup Widerstand hat. Es kann aber sein das der Controller häufig neu startet, wenn du in der Nähe viele Störungen hast (z.B. Bürstenmotoren). Aus diesem Grund ist es vorteilhaft einen Widerstand einzubauen. Ich verwende meist 10k. Früher habe ich auch noch einen 100nF Kerko zwischen RST und GND geschalten, das mache ich aber wegen dW nicht mehr.
Wenn du über dW (Debugwire) debuggen willst, darfst du an der Resetleitung keinen Kondensator haben, es funktioniert sonst nicht.

MfG Hannes