hi ich bin gerade bei der programmierung der ISR für den uart und die spi wenn ich ISR(UART_RXD_vect) eingebe bekomme ich immer den fehler warning: 'UART_RXD_vect' appears to be a misspelled signal handler wie und wo kann ich den richtigen namen für meinen controller finden (ATtiny167) vielen dank für eure hilfe little
little schrieb: > wie und wo kann ich den richtigen namen für meinen controller finden In der Doku? Oliver P.S. Die Doku zur avr-libs gibt es sowohl auf deiner Festplatte als auch im Internet.
In der online Dokumentation ist unter Interrupts noch keine 167 dabei (zumindest finde ich mit der Suche meines Browsers nix) Im Headerfile für den Tiny167 gibt es eine Tabelle der Interruptvektoren, allerdings ist da kein UART dabei. Ich vermute mal, der Tiny167 hat gar keine, d.h. der Blick ins Datenblatt wäre angebracht.
Grundsätzlich in avr/iotn167.h Der Attiny167 hat aber kein UART sondern ein USI. Dein Programm ist original für den Attiny167 geschrieben?
in der iotn167.h steht /* Interrupt Vectors */ /* Interrupt Vector 0 is the reset vector. */ #define INT0_vect _VECTOR(1) /* External Interrupt Request 0 */ #define INT1_vect _VECTOR(2) /* External Interrupt Request 1 */ #define PCINT0_vect _VECTOR(3) /* Pin Change Interrupt Request 0 */ #define PCINT1_vect _VECTOR(4) /* Pin Change Interrupt Request 1 */ #define WDT_vect _VECTOR(5) /* Watchdog Time-Out Interrupt */ #define TIMER1_CAPT_vect _VECTOR(6) /* Timer/Counter1 Capture Event */ #define TIMER1_COMPA_vect _VECTOR(7) /* Timer/Counter1 Compare Match 1A */ #define TIMER1_COMPB_vect _VECTOR(8) /* Timer/Counter1 Compare Match 1B */ #define TIMER1_OVF_vect _VECTOR(9) /* Timer/Counter1 Overflow */ #define TIMER0_COMPA_vect _VECTOR(10) /* Timer/Counter0 Compare Match 0A */ #define TIMER0_OVF_vect _VECTOR(11) /* Timer/Counter0 Overflow */ #define LIN_TC_vect _VECTOR(12) /* LIN Transfer Complete */ #define LIN_ERR_vect _VECTOR(13) /* LIN Error */ #define SPI_STC_vect _VECTOR(14) /* SPI Serial Transfer Complete */ #define ADC_vect _VECTOR(15) /* ADC Conversion Complete */ #define EE_RDY_vect _VECTOR(16) /* EEPROM Ready */ #define ANA_COMP_vect _VECTOR(17) /* Analog Comparator */ #define USI_START_vect _VECTOR(18) /* USI Start */ #define USI_OVF_vect _VECTOR(19) /* USI Overflow */ #define _VECTORS_SIZE (20 * 4) allso muss das ganze so aussehn ISR(INT0_vect) oder so ISR(INT1_vect) woher weiß der den jetzt das es der interrupt der uart ist
Nochmal: der Tiny167 hat kein UART, und daher auch keinen Interrupt dafür...
little schrieb: > allso muss das ganze so aussehn > > ISR(INT0_vect) oder so ISR(INT1_vect) Falsch. > woher weiß der den jetzt das es der interrupt der uart ist Gar nicht, WEIL DER tiny167 KEINEN UART HAT !
little schrieb: > allso muss das ganze so aussehn > ISR(INT0_vect) oder so ISR(INT1_vect) Natürlich NICHT! > woher weiß der den jetzt das es der interrupt der uart ist Eben. In dem µC ist kein UART. Du kannst aber seriell über USI arbeiten. Atmel Appnotes: AVR319: Using the USI module for SPI communication AVR307: Half Duplex UART Using the USI Module
little schrieb: > doch über den LIN seht zumindest so im datenblatt Na dann lies dir halt das Kapitel im Datenblatt durch und nutze ggf. den LIN-Interrupt. Gruß, Magnetus
15. LIN / UART - Local Interconnect Network Controller or UART seite 162 oder 15.2 http://www.atmel.com/dyn/resources/prod_documents/doc8265.pdf (Moderator's note: langen Anhang durch Link zum Hersteller ersetzt.)
little schrieb: > 15. LIN / UART - Local Interconnect Network Controller or UART > seite 162 oder 15.2 Schön. Hast du bestimmt schon komplett durchgelesen, nicht wahr?
little schrieb: > 15. LIN / UART - Local Interconnect Network Controller or UART > seite 162 oder 15.2 Ok, wieder was dazugelernt. Trotzdem ist das eine exotische Konstruktion, die es wohl nur in ganz wenigen AVRs gibt. Die Programmierung ist daher nicht mit einem üblichen UART zu vergleichen. Du musst also wohl selbst das Datenblatt durchgehen und die nötigen Schritte selbst ermitteln. PS: die Interrupts sind dann anscheinend dieselben wie für die LIN-Funktion, also LIN_TC_vect und LIN_ERR_vect.
@ Magnus Müller klar habe ich was übersehen @Uwe habe es mir nicht ausgesucht war ne vorgabe aber ist LIN_TC_vect nicht zum senden ich will ja empfangen
little schrieb: > @ Magnus Müller > klar habe ich was übersehen > @Uwe > habe es mir nicht ausgesucht war ne vorgabe > aber ist LIN_TC_vect nicht zum senden ich will ja empfangen Wenn du im Header File die danebenstehende Doku liest, dann steht da "Transfer Complete". Da ist also weder von Senden noch von Empfangen die Rede, sondern davon, dass eine Übertragung abgeschlossen wurde. Sorry: Aber da wird dir nichts anderes übrig bleiben als dich selbst einzuarbeiten. Und das beginnt nun mal damit, alles (vor allen Dingen das Datenblatt) aufmerksam zu lesen und auf die Worte zu achten.
sorry wollte euch net verärgern ich mach das zum 1. mal und gebe mir wirklich die grösste mühe aber am anfang ist es nicht so leicht da durchzublicken vielen dank das ihr euch zeit genommen habt war sehr hilfreich :-) little
little schrieb: > sorry wollte euch net verärgern ich mach das zum 1. mal und gebe mir > wirklich die grösste mühe aber am anfang ist es nicht so leicht da > durchzublicken Es sei dir verziehen. Ich hatte den Eindruck, dass du einfach zu faul bist das Datenblatt zu lesen. > vielen dank das ihr euch zeit genommen habt war sehr hilfreich :-) Wenn du das LIN-Kapitel (26 Seiten) durch hast und dann noch Fragen offen sind, kannst Du dich gerne wieder melden. Dann würde ich dir aber raten einen neuen Thread mit neuem, passenden Titel zu eröffnen. Gruß, Magnetus
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.