Forum: Mikrocontroller und Digitale Elektronik ATTiny2313 falsch programmiert


von Mark V. (markv)


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

von Stefan B. (stefan) Benutzerseite


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?

von Christian H. (netzwanze) Benutzerseite


Lesenswert?

Sorry, meine Kristallkugel ist überlastet.

Eventuell mal das Testprogramm posten?

von Mark V. (markv)


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_Funk-AVR-Evaluationsboard 
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

von Christian H. (netzwanze) Benutzerseite


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.

von Stefan B. (stefan) Benutzerseite


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?

von Rumpelstilzchen R. (rumpelstilz)


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

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.