www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATTiny2313 falsch programmiert


Autor: Mark Vybiral (markv)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe mit PonyProg über ein Pollin Funk-AVR-Evaluierungsboard einem 
ATTiny2313 ein Testprogramm zum sekundenweisen abwechselnden Blinken der 
beiden Test-LEDs des Boards an PD5 und PD6 geflasht; soweit 
funktionierte es.

Danach habe ich wollte ich dasselbe zusätzlich mit den Ausgängen PB4 und 
PB5 machen. Das war wohl ein Fehler, denn nun flackert nur noch die LED 
an PD6 mit etwa 10 Hertz.

Der Controller läßt sich nun auch weder auslesen noch schreiben. Was 
habe ich da falsch gemacht und kann man den Controller noch retten ?

Danke und Grüße
Mark

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
An PB4 und PB5 sind auf der Platine keine LEDs angeschlossen. Ich 
vermute daher, du hast da was eigenes angeschlossen, oder?

PB5 hat als zweite Funktion MOSI und das ist eine wichtige fürs 
Programmieren benötigte Leitung.

Hast du bereits versucht alle eigene Hardwareerweiterungen - besonders 
die an PB5 - zu entfernen bevor neu programmiert wird?

Autor: Christian H. (netzwanze) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, meine Kristallkugel ist überlastet.

Eventuell mal das Testprogramm posten?

Autor: Mark Vybiral (markv)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
erstmal danke für die schnellen Reaktionen :-)

@Stefan:
an PB4 und PB5 sind auf dem Board keine LEDs, aber die Pins sind ja über 
einen Pfostenstecker herausgeführt. An diesen kann man den Pollin 4-fach 
SUB-D-Adapter (Subd-D Port "Schrittmotorplatine 1") über ein 40poliges 
Flachbandkabel anschließen. Dort werden dann PB4 und PB5 auf die Sub-D 
Pins 2 und 3 verbunden. So wollte ich dann die Pollin Relaiskarte K8 IO 
anschließen; aber ersteinmal nur zwei LEDs und das ist ja leider auch 
schon schiefgegangen.

@Netzwanze:
von der Webseite 
http://www.mikrocontroller.net/articles/Pollin_Fun... 
habe ich ein Testprogramm zum Blinken der beiden Onboard LEDs genommen 
und um die im nachfolgenden Code auskommentierten Zeilen bzgl. PB4 und 
PB5 ergänzt.

/////////////////////////////////////////////////////////////////
/*
    Atmega8
    Pollin Funk-AVR-Evaluationsboard v1.1

    Project -> Configuration Options in AVR Studio:
    Frequency:    1000000 bzw. 12000000
    Optimization: -Os

*/
#include <avr/io.h>
#include <util/delay.h>

// LEDs sind active-high geschaltet
#define LED_AN(LED)  (PORTD |=  (1<<(LED)))
#define LED_AUS(LED)  (PORTD &= ~(1<<(LED)))
#define LED_TOGGLE(LED)  (PORTD ^=  (1<<(LED)))
#define LED1    PD6
#define LED2    PD5
#define TASTER          PB1

int main(void)
{
  DDRB &= ~(1<<TASTER);          // Port B: Eingang für Taster
  DDRD |= (1<<LED1) | (1<<LED2); // Port D: Ausgang für LED1 und LED2

  // Anfangseinstellung
  LED_AN(LED1);
  LED_AUS(LED2);

  //LED_AN(PB4);
  //LED_AUS(PB5);

  while(1)
  {
    _delay_ms(1000);  // Wert 1000 erlaubt ab avr-libc 1.6
    LED_TOGGLE(LED1);
    LED_TOGGLE(LED2);
    //LED_TOGGLE(PB4);
    //LED_TOGGLE(PB5);
  }
}
/////////////////////////////////////////////////////////////////

Danke und Grüße
Mark

Autor: Christian H. (netzwanze) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mark Vybiral schrieb:

> #define LED_AN(LED)  (PORTD |=  (1<<(LED)))
> #define LED_AUS(LED)  (PORTD &= ~(1<<(LED)))
> #define LED_TOGGLE(LED)  (PORTD ^=  (1<<(LED)))
> #define LED1    PD6
> #define LED2    PD5

Da wird PORTD verwendet.

>   //LED_AN(PB4);
>   //LED_AUS(PB5);

Hier gibst Du zwar PB4 und PB5 an, es wirkt sich aber auf PD4 und PD5 
aus!

PD4 und PB4 hat den gleichen Wert, und zwar 4.

>   while(1)
>   {
>     _delay_ms(1000);  // Wert 1000 erlaubt ab avr-libc 1.6
>     LED_TOGGLE(LED1);
>     LED_TOGGLE(LED2);
>     //LED_TOGGLE(PB4);
>     //LED_TOGGLE(PB5);

dito.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das angegebene Programm hat ja schon Christian kommentiert, deshalb hier 
nix dazu.

Wenn du nur die LEDs ohne Vorwiderstände angeschlossen hast, hast du 
elektrisch gesehen bei richtiger Polung der LEDs potentielle 
Kurzschlüsse geschaltet, weil die LEDs den Geist aufgeben können. Bei 
falscher Polung hast du die potentiellen Kurzschlüsse zufällig umgangen.

Nochmal die Frage: Hast du bereits versucht alle eigene 
Hardwareerweiterungen - besonders die an PB5 - zu entfernen bevor neu 
programmiert wird?

Autor: Rumpelstilzchen Rumpel (rumpelstilz)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mark Vybiral schrieb:
> Danach habe ich wollte ich dasselbe zusätzlich mit den Ausgängen PB4 und
> PB5 machen. Das war wohl ein Fehler, denn nun flackert nur noch die LED
> an PD6 mit etwa 10 Hertz.
>
> Der Controller läßt sich nun auch weder auslesen noch schreiben. Was
> habe ich da falsch gemacht und kann man den Controller noch retten ?

Haaaahaaaaa

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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.
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.

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