www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Tiny13 Anfängerfrage - Pin lesen


Autor: tobi_weis_nix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo ..

ich hab folgenden C-Code (AVRStudio 4 + WinAVR):
#include <inttypes.h>
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/eeprom.h>
#include <inttypes.h> 

uint8_t eeFooByte EEMEM = 123;
uint8_t eeFooByte2 EEMEM = 0xAA;

int main()
{
unsigned char einbyte = 0x01;
uint8_t myByte;

myByte = 0xAA;
eeprom_write_byte(&eeFooByte2, myByte);
eeprom_write_byte(&eeFooByte2+2, myByte);
eeprom_write_byte(&eeFooByte2+3, myByte);

// Config
DDRB = 0x02;
PORTB = 0x00;

while(1)
{
  if((PINB&0x08)>0)  // Ist Pin auf High
  {
    myByte = 0x01;      
    eeprom_write_byte(&eeFooByte, myByte);
    myByte = 0xCC;
    eeprom_write_byte(&eeFooByte2, myByte);
  }

  einbyte = eeprom_read_byte(&eeFooByte);
  if(einbyte == 0x01)
  {
      PORTB |= 0x02;
  }
  else
  {
      PORTB = 0;
  }
}



Ich bin Anfänger und wollte einfach ein kleines Programm schreiben .. 
Wenn der Pin PB3 vom Tiny13 auf High Pegel ist, dann soll der Tiny ein 
0x01 ins EEPROM schreiben, sonst nix machen.
Außerdem soll der Tiny13 lesen ob im EEPROM eine 0x01 steht und dann 
ggf. PB1 auf High machen, sonst auf Low.
An PB3 hab ich noch einen Pull-Down auf Masse dran. Leider liest der AVR 
den Status nicht. Die Tests zum schreiben (0xAA) ins EEPROM klappen, das 
ist immer da wenn ich lösche/programmiere/auslese. Aber die 0x01 fehlt. 
Der Pin ist über ein Widerstand (100Ohm) fest auf VCC, also immer High.

Kann mir jemand weiterhelfen? Wie gesagt .. bin Anfänger auf dem Gebiet.

Dankeschön!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tobi_weis_nix wrote:

> An PB3 hab ich noch einen Pull-Down auf Masse dran. Leider liest der AVR
> den Status nicht. Die Tests zum schreiben (0xAA) ins EEPROM klappen, das
> ist immer da wenn ich lösche/programmiere/auslese. Aber die 0x01 fehlt.
> Der Pin ist über ein Widerstand (100Ohm) fest auf VCC, also immer High.

Wie gross ist der Pull-Down?

Nimm den 100Ohm mal raus und hänge den Pin direkt an Vcc.

Autor: tobi_weis_nix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Pull down sind 6.7k .. 100ohm hab ich auch schon raus gemacht, 
geholfen hat es leider nix ... :(

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
tobi_weis_nix wrote:
> Der Pull down sind 6.7k .. 100ohm hab ich auch schon raus gemacht,
> geholfen hat es leider nix ... :(

Am Programm kann ich so nichts auf den ersten Blick fehlerhaftes
erkennen.

Vereinfachen wir das Pgm doch mal
#include <avr/io.h>

int main()
{
  DDRB = 0x02;

  while( 1 ) {
    if( PINB & 0x08 )
      PORTB = 0x02;
    else
      PORTB = 0x00;
  }
}

PB1 sollte dem Zustand von PB3 folgen:
Legst du PB3 auf Vcc, sollte auch PB1 auf High gehen.
Nimmst du PB3 von Vcc weg (dann zieht der Pull-Down den Pin auf 0),
geht auch PB1 auf 0.

Autor: tobi_weis_nix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So klappt jetzt .. keine Ahnung wo wirklich der Fehler lag.. Hab alles 
nochmal gelöscht (Chip Erase und neu programmiert).

THX!

Achso, kann man sich so ein Debug Wire Interface eigentlich auch selber 
bauen?

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um DebugWire zu nutzten, bräuchte man schon einen JTAG mkII oder Dragon.
Gerade beim Verkaufspreis des Dragons hat sich jeder gedankte an DIY 
schon erledigt (lohnt nicht).

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.