interrupts atm128

Gast #309402
Lesenswert?
• ▲
▼
was mache ich falsch? möchte das bei 0-signal der interrup ausgelösst
wird. Programm code in C:

#include <inttypes.h>
#include <avr/io.h>
#include <avr/signal.h>


void sysinit(void){
  SREG=SREG|0x80;
  EIMSK=0x03;
  EICRA=0x0C;
  DDRG=0XF0;
  DDRF=0xFF;
}
int main (void){
  sysinit();
    while(1){
      SIGNAL(__SIG_INTERRUPT0){
        PORTF=0x80;
      }
    }
return (0);
}


Warnings:
usbtest.c:18: warning: `__SIG_INTERRUPT0' appears to be a misspelled
signal handler
usbtest.c:18: warning: static declaration of '__SIG_INTERRUPT0'
follows non-static declaration
usbtest.c:18: warning: previous declaration of '__SIG_INTERRUPT0' was
here
Gast #309405
Lesenswert?
• ▲
▼
hallo zusammen:
was mache ich nochmals falsch??? ich cecks bald nicht mehr:


#include <inttypes.h>
#include <avr/io.h>
#include <avr/signal.h>
#include <avr/eeprom.h>
#define _EEGET(var,addr)


SIGNAL(SIG_INTERRUPT0){
  var=eeprom_rb(addr);
    if(var==0x24){
      PORTD=0x80;
      }
}

void sysinit(void){
  SREG=SREG|0x80;
  EIMSK=0x03;
  EICRA=0x0C;
  MCUCR=MCUCR|0x80;
  XMCRB=XMCRB|0x80;
  XMCRA=0x00;
  DDRD=0XFC;
}


int main (void){
  sysinit();
    while(1){
    }
return (0);
}



fehlermeldung:
usbtest.c:5:1: warning: "_EEGET" redefined
In file included from usbtest.c:4:
C:/Program
Files/winavr/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/eeprom 
.h:165:1:
warning: this is the location of the previous definition
usbtest.c: In function `__vector_1':
usbtest.c:8: error: `var' undeclared (first use in this function)
usbtest.c:8: error: (Each undeclared identifier is reported only once
usbtest.c:8: error: for each function it appears in.)
usbtest.c:8: warning: implicit declaration of function `eeprom_rb'
usbtest.c:8: error: `addr' undeclared (first use in this function)
Gast #309406
Lesenswert?
• ▲
▼
usbtest.c: In function `__vector_1':
usbtest.c:8: error: `var' undeclared (first use in this function)
usbtest.c:8: error: (Each undeclared identifier is reported only once
usbtest.c:8: error: for each function it appears in.)
usbtest.c:8: warning: implicit declaration of function `eeprom_rb'
usbtest.c:8: error: `addr' undeclared (first use in this function)
Problem:
Der Compiler meckert über undeklarierte Variablen.
In deinem Fall in Zeile 8 von usbtest.c in der Funktion `__vector_1',
also der Funktion zu Interruptvektor #1 (#0 ist i.d.R. der
Resetvektor).
Lösung:
Variablem muss man in C(++) deklarieren (und nachmöglichkeit auch
initialisieren (also einen bestimmten Wert zuweisen, da sie sonst
iregendwas enthalten können (und ja, das KANN Probleme machen)):
Also z.B. uint8_t var=0, addr=0;

usbtest.c:8: warning: implicit declaration of function `eeprom_rb'
Der Compiler warnt, dass 'eeprom_rb' an dieser Stelle nicht
deklariert ist.

usbtest.c:5:1: warning: "_EEGET" redefined
In file included from usbtest.c:4:
C:/Program
Files/winavr/bin/../lib/gcc/avr/3.4.3/../../../../avr/include/avr/eeprom 
.h:165:1:
warning: this is the location of the previous definition

Der Compiler findet es nicht sehr schön, dass du _EEGET neu definierst
(NICHT deklarierst). Er meckert also, weil _EEGET in eeprom.h in
Zeile 165 schon definiert wurde.
Gast #309407
Lesenswert?
• ▲
▼
#include <avr/eeprom.h>

int var;
int addr;


SIGNAL(SIG_INTERRUPT0){
    _EEGET(var,addr);
    if(addr>0x00){

      PORTD=0x80;
      }
}
sollte mit _EEGET der variabel var nicht die Werte der PAD0-7 PINS
übergeben werden?
Gast #309408
Lesenswert?
• ▲
▼
ich habe mit dem ko gemessen ob rd und wr eingeschaltet werden oder
nicht. sie reagierten auf den put- und get-befehl leider werden keine
daten empfangen oder versendet. nun ist die frage:
ist addr zuständig für die speicherposition im externen eeprom oder die
zwischenspeicherposition im external memory control register A?

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.