-
Thread
Tastatur geht nicht
Interrupt kommt aber die tasten werden nicht erkannt, HIIILLLFEEE ! ;) meine Interruptrouriene: PORTC,3 ist eine Led zum anzeigen dass eine Taste erkannt wurde. (wenn ich die Led ohne Prüfung aktiviere funktioniert alles nach 250ms schaltet die wieder ab) SIGNAL(SIG_INTERRUPT0) { cbi(GICR,INT0
bei PIND1 würde ich vermuten, dass du das als Makro mit "PIND &(1<<0)" realisiert hast. Sonst geht das auch nicht mit dem AVR-GCC... Und Warteschleifen haben in InterruptServiceRoutinen nichts zu suchen!
-
Thread
Anfänger mit C LED ein
das mega-simple BSP abgetippt: [c] #include <avr/io.h> int main (void) { DDRC = 0xff; //PORTC |= (1 << 2); /* setzt Bit 2 an PortC auf 1 */ PORTC &= ~(1 << 2); /* loescht Bit 2 an PortC */ while(1) { } return 0; } [/c] Was an meinem ATmega32 passiert ist folgendes: In
1 << DDC3); DDRC &= ~( (1 << DDC5) | (1 << DDC6) | (1 << DDC7)); while (1) { PORTC |= (1 << 2); /* setzt Bit 2 an PortC auf 1 */ PORTC |= (1 << 3); /* setzt Bit 3 an PortC auf 1 */ _delay_ms(500); PORTC &= ~(1 << 2); /* loescht Bit 2 an PortC */
-
Thread
sleep oder NOP in asm
Register mit 1111 1111 füllen out PORTA, r16 ;PORTA auf 0xFF setzen -> alle LEDs an out PORTC, r16 ;PORTC auf 0xFF setzen -> alle LEDs an ldi r16, 0xC0 ;r16 Register mit 1000 0000 füllen out PORTD, r16 ;PORTD auf 0x80 setzen -> LED7 an ret ;wieder zurück
Register mit 1111 1111 füllen out PORTA, r16 ;PORTA auf 0xFF setzen -> alle LEDs an out PORTC, r16 ;PORTC auf 0xFF setzen -> alle LEDs an ldi r16, 0xC0 ;r16 Register mit 1000 0000 füllen out PORTD, r16 ;PORTD auf 0x80 setzen -> LED7 an ret ;wieder zurück
-
Thread
XMega: ISR wird nicht getriggered
-256.html Das getestete Program: [c] #include <avr/io.h> #include <avr/interrupt.h> ISR(PORTC_INT0_vect) { PORTC.OUTTGL = 14; } int main() { PORTC_DIRCLR = PIN0_bm; // PORTC_INT0 als Eingang PORTC.PIN0CTRL = PORT_OPC_TOTEM_gc | PORT_ISC_FALLING_gc; PORTC.INTCTRL = (PORTC.INTCTRL
[c]ISR(PORTC_INT0_vect){ PORTC.OUTTGL = 14; }[/c] meinst du da nicht 0x14?
-
Thread
LED ein/aus schalten mit Taster
DDRC=0xff; // als ausgang definieren while(1) { if (PINB&(1<<PB0)) PORTC=PORTC &~(1<<PC0); else PORTC=PORTC |(1<<PB0); } } } [/C]
funktionieren nicht. LED_on / LED_off werden ersetzt durch das, was du definiert hast. Also steht da: if(PORTC |= 0xff) bzw. if(PORTC &= 0x00) Das erste ist true, das zweite false. Vergiss das ganz schnell. Das willst du gar nicht wissen. In diesem Fall, wo es um den ganzen Port geht, was natürlich auch
-
Thread
HD44780 (Pollin DV20208) Zeichenbreite stimmt nicht
define PIN_D7 PINC #define DDR_D7 DDRC #define BIT_D7 PC3 #define PORT_E PORTC #define DDR_E DDRB #define BIT_E PB2 #define PORT_RW PORTC #define DDR_RW DDRB #define BIT_RW PB3 #define PORT_RS PORTC #define DDR_RS DDRB #define BIT_RS
angeschlossen ist. Einschub: OK. Wie legt man fest, dass ein Pin, sagen wir mal der Pin 6 vom PORTC auf Ausgag geschaltet werden soll, und wie wird dieser Pin dann auf 1 gesetzt? Na das geht offenbar so: Weil es sich um den PORTC handelt, findet sich das zugehörige Konfigurationsbit im DDRC. PORTC
-
Thread
ATMEGA8 eingeschaltete LED Zählen
PORTB & (BIT_3)){ if( count <= 6 ) count++; }else{ if( count>8 ) count--; } if(PORTC & (BIT_4)){ if( count <= 6 ) count++; }else{ if( count>8 ) count--; } if(PORTC & (BIT_5)){ if( count <= 6 ) count++; }else{ if( count>8 ) count--;} if(PORTC
Wenn die Zahl der LEDs unwichtig ist und es nur interessant it ob alle 7 an sinf oder nicht sind geht es so schnellet [c] if(PORTB&0x0C)|(PORTC&0xF2)==0xFE) restart(); [/c]
-
Thread
Schrittmotor+Schaltung
/Port C als Ausgang definieren while(1) { if(Mode == 0) //Wenn Mode == Half { PORTC = 0x03; PORTC = 0x01; PORTC = 0x09; PORTC = 0x08; PORTC = 0x0C; PORTC = 0x04; PORTC = 0x06; PORTC = 0x02; } else //Wenn Mode == FULL { PORTC
//Port C als Ausgang definieren while(1) { if(Mode == 0) //Wenn Mode == Half { PORTC = 0x01; schlaf(50); PORTC = 0x04; schlaf(50); } else //Wenn Mode == FULL { PORTC = 0x03; PORTC = 0x09; PORTC = 0x0C; PORTC = 0x06; } } } ===========
-
Thread
bidirektionale RS232 Funkbrücke mit RFM12
Senderoutine 4 mal durchlaufen. Für jeden Buchstaben einmal. Meine LEDs (low aktiv): #define LED_TX PORTC_4 // TX LED #define LED_RX PORTC_3 // RX LED #define LED_RETRANS PORTC_2 // Retransmit LED #define LED_ERR PORTC_1 // Error LED #define LED_POWER PORTC_0 // Power
dass so lange wie hinter #define USE_DIPSWITCH keine 1 steht, wird es nicht ausgeführt :-/ Nun geht es! Ich danke Dir, Benedikt! Wenn ich die DIP-Schalter einsetzen möchte, dann ist es doch richtig, dass am PortC die PIN's 0-2 für die Baudrate, 3-4 für HF-Kanal sind und 5 unbenutzt? In der rfm12
-
Thread
AVR Programm, brauche Hilfe bei Kommentar bitte
ein Test ob es funktioniert, habe noch ein richtigen Beitrag reingestellt, bitte anschauen wenn es geht. Lg Dominik
case durch die variable i { case 0: // Wenn 1. Durchlauf PORTC=0xFF; // alle LED aus i++; break; case 1: PORTC=0b1111110; // letzte LED an i++; break; case 2: PORTC=0b1111100; // letzte und vorletzte LED an
-
Thread
poti messen mit adc
= 2,8) // vierte LED leuchtet { DDRC = 16; PORTC=PORTC &238; } if(ADCW = 3,5) // fünfte LED leuchtet { DDRC = 32; PORTC=PORTC &222; } } [/c]
PORTC &246; } else if(ADC_Read(0) <= 120) // vierte LED leuchtet { DDRC = 16; PORTC=PORTC &238; } else if(ADC_Read(0) <= 150) // fünfte LED leuchtet { DDRC = 32; PORTC=PORTC
-
Thread
volatile Funktionen
". Ich auch nicht. Und auch nicht in der Dokumentation des gcc, wo es um "function attributes" geht. Was soll das denn sein? Abgesehen davon geht es bei volatile Objekten keinesfalls um Locking, sondern darum, die Zugriffe auf das RAM durch Nutzung von Registern abzukürzen.
PORTC = i.load (std::memory_order_relaxed); }[/c] Für _Atomic geht es ähnlich, keine Lust es nachzuschlagen. std::atomic<std::uint8_t> sollte automatisch wissen dass std::uint8_t atomisch geschrieben werden
-
Thread
ATmega8 geht nicht mehr nach Umstellung auf externen Quarzoszillator
Hallo, der Reset geht auf low, weil ich den Anfang eines Programmiervorgangs aufgenommen habe. Der ISP läuft mit 57.60KHz. Mit 4kHz hab ichs auch schon probiert. Es geht immer noch nichts :-(
>der nicht mehr geht Mit dieser Info kann niemand helfen! WAS GENAU GEHT NICHT MEHR? Fehlermeldungen inkl. Details? Kannst Du auch die Signature nicht lesen?
-
Thread
Warum kann nicht alles so einfach wie Arduino sein?
case 6: PORTB |= (1 << PB6); break;\ case 7: PORTB |= (1 << PB7); break;\ \ case 8: PORTC |= (1 << PC0); break;\ case 9: PORTC |= (1 << PC1); break;\ case 10: PORTC |= (1 << PC2); break;\ case 11: PORTC |= (1 << PC3); break;\ case 12: PORTC |= (1 << PC4); break
case 6: PORTB &= ~(1 << PB6); break;\ case 7: PORTB &= ~(1 << PB7); break;\ \ case 8: PORTC &= ~(1 << PC0); break;\ case 9: PORTC &= ~(1 << PC1); break;\ case 10: PORTC &= ~(1 << PC2); break;\ case 11: PORTC &= ~(1 << PC3); break;\ case 12: PORTC &= ~(1 << PC4)
-
Thread
AVR Einstieg / Probleme mit Programm Interrupt
0b000010; GetWaitTime(); PORTB = 0b000001; GetWaitTime(); PORTB = 0b000000; PORTC = 0b000001; GetWaitTime(); PORTC = 0b000010; GetWaitTime(); PORTC = 0b000100; GetWaitTime(); PORTC = 0b001000; GetWaitTime(); PORTC = 0b000100; GetWaitTime(); PORTC =
nur PORTC3. Das wollte ich eigentlich damit ausdrücken. Es geht doch nur um die Absicherung 0 und kleiner 0, klar hätte auch kleiner 1 schreiben können aber das macht hier doch nun wirklich keinen Unterschied
-
Thread
AVR Timer 1 Normal/CTC Mode ?
Compare.A > Pin.A geht automatisch von 0 auf 1 (leerer ISR) Overflow tritt ein > Pin.C geht automatisch von 0 auf 1 und im ISR setze ich manuell die Pins A und B zurück auf 0. Soweit meine Theorie. Sollte doch funktionieren
register uint8_t isr_tmp asm("r16"); register uint8_t tmp0 asm("r17"); # define outPORT PORTC # define incrmnt 0x20 Nur warum sieht jetzt eurer Assembler Code anders aus als der originale? Mit einbinden durch asm ( ... ); geht wohl doch nicht so einfach wie überall beschrieben?
-
Thread
Problem mit gosub in Bascom
die routine "gosub a", "gosub a0" sowie ddra und porta weg, geht alles wie nach plan. kann das jemand erklären? portc und portd spinnen eh etwas auffällig rum. sie blinken in anderen programmen herum, auch wenn sie nur auf high und als ausgang konfiguiert werden
hoffe, dass euch das Buch mit meinen Fragen entlassten wird. Ahja: Ich habe den Zeilen bereits den PortC verpasst und angelötet. Auf PortB geht das nicht, denn er kann ja bekanntlich nur 6 Pins ausgeben. Für die Spalten werde ich PortA, PortD und von PortB die Bits 0-3 verwenden. Geht das so klar?
-
Thread
Schalter PORTC 1-5 C
DDRC &= ~(1<<DDC2); DDRC &= ~(1<<DDC3); DDRC &= ~(1<<DDC4); DDRC &= ~(1<<DDC5); PORTC |= (1<<PC1); /* internen Pull-Up an PC1-5 aktivieren */ PORTC |= (1<<PC2); PORTC |= (1<<PC3); PORTC |= (1<<PC4); PORTC |= (1<<PC5); /* Fuehre Aktion aus, wenn Bit Nr. 1 (das "zweite
DDRC &= ~(1<<DDC2); DDRC &= ~(1<<DDC3); DDRC &= ~(1<<DDC4); DDRC &= ~(1<<DDC5); //PORTC |= (1<<PC1); /* internen Pull-Up an PC1-5 aktivieren */ PORTC |= (1<<PC2); PORTC |= (1<<PC3); PORTC |= (1<<PC4); PORTC |= (1<<PC5); /* Wenn Taster gelickt ist soll LED an gehen*
-
Thread
Interrupt reagiert nicht richtig
'Taster Schieber AUF Config Pind.2 = Input 'Taster Schieber ZU Config Portc.1 = Output 'Relais Schieber AUF Config Portc.2 = Output 'Relais Schieber ZU Config Portc.3 = Output 'LED On Int0 Stop_1 Config Int0 = Rising
Testweise ausgelötet hatte war der Interruptfehler auf einmal weg. Anderes Kabel eingelötet und es geht immernoch.
-
Thread
Denkfehler bei Matrixtastatur?
er auf .3,7V. Stimmen die Abfragen? Oder wo liegt der Fehler? Mein CODE: DDRC = 0x87; PORTC = 0x00; //DDRC = 0x07; while(1) { PORTC = 0x01; if (PORTC == 0x01) { if (PINC & (1<<PC3)) { PORTC = 0x80; } if ( PINC & (1<<PINC4)) { PORTC = 0x80; } if ( PINC & (1<<PINC5)) { PORTC = 0x80; } if ( PINC & (1<<PINC6)) { PORTC = 0x80; } } else { PORTC = 0x01 ;} PORTC = 0x01;
-
Thread
Anfänger Frage zu variable hochzählen
include <util/delay.h> #include <stdbool.h> #include <avr/io.h> #define led (1<<PC0) #define ein PORTC |= #define aus PORTC &= ~ bool tastergedrueckt = true; int main(void) { DDRC = (1<<PC0); PORTD =(1<<PD0); void ledblink() { PORTC |= (1<<PC0); _delay_ms(400); PORTC
in dieser Schleife zu initialisieren. Schau, wo deine Endlosschleife beginnt und wie weit sie geht und überlege Dir dann einfach mal, was durch den Ausdruck int a = 0; innerhalb dieser Endlosschleife bewirkt wird. Apropos, auch das [c] #define led (1<<PC0) #define ein PORTC |= #define
-
Thread
Hilfe und Tipps bei der Fehlersuche
$regfile = "M16def.DAT" $crystal = 16000000 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.2 , Rs = Portc.0 Rw Alias Portc.1 Config Rw = Output Rw = 0 Cls Do Locate 1 , 1 Lcd "Zeile 1" Locate 2 , 1 Lcd "Zeile
Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.5 , Db6 = Portc.6 , Db7 = Portc.7 , E = Portc.2 , *Rs* = Portc.0 Jo, *RS*, nicht RW an PC1 (!) anschließen! Bei deinem Listing steht: Rs = Portc.0 Im Schaltplan ist aber Portc
-
Thread
Wie Assembler ISR in C integrieren ?
r8" "\n\t" "reti" "\n\t" ::[sreg] "I" (_SFR_IO_ADDR(SREG)), [port] "I" (_SFR_IO_ADDR(PORTC))); } [/c] Wenn in der 'while(1)' mal noch was rein soll, was selbstverständlich wieder auf die Geschwindigkeit geht, reserviert man für das Sichern von SREG und für die Berechnung jeweils ein Register
Programm bisher aber noch nichts. Sollen die Kurven in einem externen Eeprom gehalten werden mit PORTC als Adresseingang? Im Augenblick liefert ein DAC an PORTC nur eine Sägezahnkurve. Gruß, Stefan
-
Thread
Zwei kleine Fragen zu Bascom Do Loop Schleife
ich hole jetzt mein Steckbrett, einen ATMega8 und ein bisschen Kleinkram und teste, was da nicht geht... Das will ich jetzt einfach mal wissen. Es kann doch nicht sein, dass so ein kleines Progrämmchen nicht geht... Gruß Jonathan
Ich habe langsam überhaupt keine Erklärung, warum diese ISR Variante nicht geht und meine alte Int0 "besser" geht....Rätsel ( Also an der Schaltung bzw Hardware, AVR kann es nicht liegen )
-
Thread
Timer und ADC bei Atmega16 mit WinAVR
Danke für Excel ! Werde mir später anschauen. Ich habe jetzt nen anderen Problemchen den PortC in meiner Schaltung gibt immer 11111111 aus wenn ich ADC Wert direckt Ausgeben will. Gleiche schaltung gleiches Programm nur an PortD Ausgeben geht. Stecke ich Atmega16 ins STK500 alles geht. Stecke wieder in meine Schaltung geht auf 11111111. Ein fester Wert wie [c]PORTC = 200;[/c] oder [c]PORTC = 10;[/c]geht. Nur direkt[c] PORTC=x;[/c] da springt er auf 11111111. Auch wenn ich Fotodiode abdecke und einschalte, wocher
-
Thread
Sharp GP2D02 Sensor auslesen mit CodeVisionAVR und einem AT90S8515
8 mal. > 4. Halte VIN für mindestens 1,5ms high, um den Auslesemodus zu beenden. > Der Sensor geht in Power Off. Okay, danke schon mal. Aber ich hätte da noch ein paar Fragen: Wenn Laut Sensor VOUT das Bit 7 ist, dann ist das doch PORTC.7 oder? Das Gleiche dann für VIN: Bit 4 ist dann PORTC
macht es einfacher, dass später vielleicht mal auf einen anderen Port/Pin zu schieben. #define VIN PORTC.4 . VIN=0; . VIN=1; Entweder falsch gedacht oder nur der Kommentar falsch? >PORTC.4=0; //VIN auf high Das ist auf jeden Fall falsch: >wert=r_rotate(PORTC.7); //
-
Thread
Schieberegister ohne SPi
PORTC &= ~(1<<A); //A auf Ausgangsposition } else { PORTC &= ~(1<<A); //stelle (zur Sicherheit) Datenbus auf Low PORTC |= (1<<SHIFTCLOCK); //und gibt eine
byteOut (uint8_t word) { for (uint8_t i = 0;i < 8;i++) { if (word & (1<<0)) PORTC |= (1<<A); else PORTC &= ~(1<<A); PORTC |= (1<<SHIFTCLOCK); PORTC &= ~(1<<SHIFTCLOCK); word >>= 1; } PORTC |= (1<<LATCHCLOCK); PORTC &= ~(1<<LATCHCLOCK);
-
Thread
DMX Dimmerpack bauen
Set PORTC.3 Stop Timer1 Start Timer1 Compare1=&h5 status = 2 Case 2 'nach 200ms Reset PORTC.3 Stop Timer1 Start Timer1 Compare1=&h4DD status = 3 Case 3 'nach 1,5s Set PORTC.3 Stop Timer1 Start Timer1 Compare1=&h5 status = 4 Case 4 'nach 200ms Reset PORTC.3 Stop Timer1 Disable Oc1A End Select End Interrupt [/Code]
-
Thread
LCD EA DOG-M und Bascom
'ATmega168 $crystal = 1000000 'Quarz: 1 MHz Config Portc = Output 'DOG 162, 4bit, 5 Volt 'Portc.0 = D4 'Portc.1 = D5 'Portc.2 = D6 'Portc.3 = D7 'Portc.4 = E 'Portc.5 = RS ' ---------------------- LCD DOG162 Init --------------------- Dog:
regfile = "m168def.dat" 'ATmega168 $crystal = 1000000 'Quarz: 1 MHz Config Portc = Output 'DOG 162, 4bit, 5 Volt 'Portc.0 = D4 'Portc.1 = D5 'Portc.2 = D6 'Portc.3 = D7 'Portc.4 = E 'Portc.5 = RS Dog: Restore Da For Wertx = 1 To 20 Read Balken Portc = Balken
-
Thread
LCD am AVR Problem
m16def.dat" Config Lcd = 16 * 2 'damit läuft auch ein 8*2 LCD Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4 Cls Cursor off locate 1,1 Lcd "Zeile 1" locate 2,1 Lcd "Zeile 2" end Gruß
Also jetzt weiss ich waran das liegt! Ich muss JTAG Interface abschalten! Sagt mal bitte, wie das geht. Am besten eine Code, wenn es geht! Wäre ich seeeeehhr dankbar!
-
Thread
ATMega 8, assembler | lcd und led funktionieren zusammen nicht
Joachim Jakob schrieb im Beitrag #3802142: > und sobald ich die taste loslasse geht die led wieder aus Wie ?
oh, nein also muss ich jetzt noch ldi r16,0xff out portc, r16 schreiben?
-
Thread
Probleme mit 74ACT573
Nikolaj > bsp... > PORTC.OUTSET = 0x00; // alle LE pin(74ACT573) auf L setzen > PORTE.OUTSET = 0xAA; // hiermit ich lade gewünschte Daten in Register > PORTC.OUTSET = 0x80; // ich lasse Latch daten übernehmen von > Register
hiermit ich lade gewünschte Daten in Register PORTC.OUT = 0x80; // ich lasse Latch daten übernehmen von Register.(aber nur für eine von 8) PORTC.OUT = 0x00; // und wieder Latch sperren
-
Thread
Drei 7-Segment-Anzeigen über nur einen Port ansteuern
Latch-Eingang für je ein Segment. void dsp_char(unsigned char char2display) { /* set MSB digit */ PORTC = (PORTC & 0xf0) | (char2display / 100); /* latch to 7seg driver */ PORTC |= (1<<PC4); PORTC &= ~(1<<PC4); /* set mid digit */ PORTC = (PORTC & 0xf0) | ((char2display % 100)/10); /* latch to 7seg driver */ PORTC |= (1<<PC5); PORTC &= ~(1<<PC5); /* set LSB digit */ PORTC = (PORTC & 0xf0) | ((char2display % 10); /* latch to 7seg driver */ PORTC |= (1<<PC6); PORTC &= ~(1<<PC6); } Als Treiber-IC
-
Thread
EADOGM162W-A-Anzeige mit XMEGA
(PC5) #define LCD_D7 PIN4_bm // Data Bit 7 (PC4) // Helper macros #define LCD_E_HIGH() (PORTC.OUTSET = LCD_E) #define LCD_E_LOW() (PORTC.OUTCLR = LCD_E) #define LCD_RS_HIGH() (PORTC.OUTSET = LCD_RS) #define LCD_RS_LOW() (PORTC.OUTCLR = LCD_RS) // Function Prototypes void lcd_init()
(nibble & 0x04) PORTC.OUT |= (1 << D6); // Set D6 if (nibble & 0x08) PORTC.OUT |= (1 << D7); // Set D7 } void LCD_EnablePulse(void) { PORTC.OUT |= (1 << E); // Set E HIGH _delay_us(1); // Pulse
-
Thread
Bitoperationen Zusammenfassen
4 Bit der Variable x auf PORTC ausgeben willst, dann geht das natürlich auch: PORTC = (x >> 4) & 15; Beantwortet das Deine Frage? Bye Daniel Jelkmann
das geht schon, aber ist ein bisschen umständlich (naja, vielleicht ansichtssache). damit wird dasselbe erreicht: PORTC = (PORTC & 0xfe) | (cmd >> 7);
-
Thread
Nach einer Interrupt Routine wird der PORT zurückgesetzt
define INT1_vect _VECTOR(2) volatile uint8_t temp; ISR(INT0_vect) { PORTC = 0x01; } ISR(INT1_vect) { switch (temp) { case 0: PORTC = 0x01; temp++; break; case 1: PORTC = 0x02; temp++; break; case 3: PORTC = 0x03; temp
. int main (void) { DDRC = 0xff; // Port C als Output PORTC = 0xff; <--- zum Test auf "FF" setzen DDRD = 0x00; // Port D als Input Das Target sollte schon richtig eingestellt sein, sonst gehts nicht. JTAG ist aus?
-
Thread
ATMega328-basierter Sprach-Synthesizer für den CPC 464 - Schnelles Byte-weises Lesen mit dem 328?
Es geht um 0x... <-> 0b...
int main(void) { DDRB = 0; DDRC = 0b00110000; initUSART(); clearBit(PORTC, 5); clearBit(PORTC, 4); while (receiveByte() != ':'); buffer_index = 0; last_low = 0; last_high = 0; initInterrupt(); while ( 1 ) { setBit(PORTC, 5
-
Thread
Problem bei Einlesen der Analogwerte
Port C als Ausgang setzen while( 1 ) { if( PINA & ( 1 << PA0 ) ) PORTC |= 1<<PC0; else PORTC &= ~(1<<PC0); if( PINA & ( 1 << PA1 ) ) PORTC |= 1<<PC1; else PORTC &= ~(1<<PC1); // Ansonsten setze PC0 LOW } }
PORTC &= ~(1<<PC1); [/c]
-
Thread
Programm geht nicht, so wie ich das will. Könnte da mal jmd drübersehen?
Hallo Leute, Kann das so stimmen? Ich will ein Taktsignal über UART(TxD) senden und eine LED mit den 0,5kHz Takt ansteuern. Aber es funktioniert nicht? Das soll ein reines Testprogramm für die UART Schnittstelle sein. [c] #include <avr/io.h> #include <stdint.h> #include <avr/interrupt.h> #define FOSC 7372800UL #define BAUD 19200 #define MYUBRR (FOSC/16/BAUD-1) void init_timer1 (void) { TCCR1B = (3<<WGM12)|(2<<CS10); ICR1 = 1000; TIMSK |= (1<<TICIE1); } ISR (Timer1_Capt_vect) { PORTC ^= (1<<PC5); UDR = 0x22; } void init_uart ( void ) {
-
Thread
LCD an Atmega8 PortC
Hallo! Ich möchte gerne ein LCD an PortC des Mega 8 anschliessen. Ich hab jetzt eine Routine für einen Mega32 gefunden und möchte diese gerne verwenden. Jetzt hab ich nur ein Problem. Der Mega32 hat am PortC mehr anschlüsse. Und das
Geht aber um Mega8 :-)
-
Thread
Atmega 8 will nicht
Hi >Frage: >Warum geht aber die verdammte Led nicht an? >Portc.0 = 1 Wie ist denn die Led angeschlossen? MfG Spess
$regfile = "m8def.dat" $crystal = 1000000 Config Portc.0 = Output do Portc.0 = 1 wait 1 Portc.0=0 wait 1 loop End LED nur mit Vorwiderstand verwenden! LED vorher prüfen. LED an + und über einen Widerstand an - Wenn das geht
-
Thread
BCD auf C: was mache ich falsch?
hier muss auch was mit Index her, ANPASSEN [/c] Hier ist gerade das Problem. Weil: [c] /* VL0 PORTC PC3 */ #define setVL0 (PORTC |= (1<<PC3)) #define resVL0 (PORTC &= ~(1<<PC3)) /* VL1 PORTC PC2 */ #define setVL1 (PORTC |= (1<<PC2)) #define resVL1 (PORTC &= ~(1<<PC2)) /* VL2 PORTC PC1 */ #define setVL2 (PORTC |= (1<<PC1)) #define resVL2 (PORTC &= ~(1<<PC1)) /* VL3 PORTC PC0 */ #define setVL3 (PORTC |= (1<<PC0)) #define resVL3 (PORTC &= ~(1<<PC0)) /* VL4 PORTB PB2 */ #define setVL4 (PORTB |= (1
-
Thread
PORT-Zustand abfrgen und zurück schreiben
Oliver S. schrieb im Beitrag #4519902: > Um welchen Controller geht's denn überhaupt? ATTiny84
PORTA geht nur für Ausgaben... Das Inputregister findest du aber mal selbst raus ;) GRUß J
-
Thread
PORTC bei Atmega16 Problem
90S8515 haben alle Aus- und Eingänge funktioniert. Nun habe ich auf den Atmega 16 gewechselt und bei PortC funktionieren die Bits 2 bis 5 nicht. Die anderen gehen. Hat jemand eine Idee?
> D. h. wenn die Fuse abgeschaltet ist, geht kein JTAG. Wenn man > programmgesteuert gelegentlich JTAG benutzen können will, aber > dennoch die entsprechenden Ports normalerweise (während kein JTAG > benötigt wird) verfügbar haben möchte,
-
Thread
Atmega8 Einstiegsprobleme
Also mit dem AVR Assembler 1 gehts jetzt... komisch
Led Toggle */ void LedSet(unsigned char state) { switch (state) { case 0: PORTC &= ~(1<<5); break; case 1: PORTC |= 1<<5; break; default: if (PORTC & 1<<5) PORTC &= ~(1<<5); else PORTC |= 1<<5; } } int
-
Thread
Audiotisch (Daft Punk)
Testprogramm! Eine Frage nur noch: [avrasm] loop: in temp, PIND com temp out PORTC, temp JMP loop [/avrasm] damit wird doch der ganze PORTC geschaltet ? Mich wundert es, das nur der erste Pin reagiert und die anderen LEDs (habs erweitert) dauerhaft leuchten. Oder ist
ANDI temp, 1 BRNE loop ; Auf Impuls warten (negative Flanke am Eingang) OUT PORTC, muster ; neues Muster ausgeben [/avrasm] Gute Nacht Jobst
-
Thread
Microcontroller über Windows Applikation anpassen. Aber wie?
Sequence[nextNr]; nextNr++; if( nextNr == lenSequence ) { nextNr = 0; PORTC &= ~(1<<PC1); PORTC &= ~(1<<PC2); PORTC &= ~(1<<PC3); PORTC &= ~(1<<PC4); } if( command & ROT ) { PORTC |= (1<<PC4); // Turn On Red LED } if( command
nextNr]; nextNr++; if( nextNr == lenSequence ) { nextNr = 0; } PORTC &= ~(1<<PC1); PORTC &= ~(1<<PC2); PORTC &= ~(1<<PC3); PORTC &= ~(1<<PC4); if( command & ROT ) { PORTC |= (1<<PC4); // Turn On Red LED } if(
-
Thread
AVR als EPROM benutzen (C-Optimierung)
Tim T. schrieb im Beitrag #4751313: > PORTC = pgm_read_byte(&speicher[(PINB << 8) | PINA]); Was passiert, wenn Du stattdessen > PORTC = pgm_read_byte(&speicher[(PINB << 8) + PINA]); verwendest?
.ORG FIRSTBOOTSTART main: ;1 in ZL,PINA ; 1 in ZH,PINB ; 1 lpm R0,Z ; 3 out PORTC,R0 ; 1 ;2 in ZL,PINA ; 1 in ZH,PINB ; 1 lpm R0,Z ; 3 out PORTC,R0 ; 1 ;3 in ZL,PINA ; 1 in ZH,PINB ; 1 lpm R0,Z ; 3 out PORTC,R0 ; 1 ... ;511 in ZL,PINA
-
Thread
Bascom- Fehlerausgabe bei Programmierung
Set Portd.6 Reset Portc.3 Reset Portd.6 Elseif D = 1 Then Set Portc.2 Set Portd.6 Reset Portc.2 Reset Portd.6 Elseif E = 1 Then Set Portc.1 Set Portd.6 Reset Portc.1
die Variable A den Wert 1 zugewiesen bekommt dafür sorgen, dass durch das 1 in der Variable z.B. Portc.5 auf 1 gesetzt wird. Wenn B z.B. auch noch den Wert 1 hat sollen beide so schnell geschaltet werden, dass z.B. bei einer Led, das Wechseln so schnell geht, dass das menschliche Auge nicht mitkommt
-
Thread
Display Ansteuerung - 16 x 4 DotMatrix LCD
----- Ddrc = &B11111111 Ddrd = &B11111111 Config Lcd = 16 * 4 Config Lcdpin = Pin , Db4 = Portc.4 , Db5 = Portc.3 , Db6 = Portc.2 , Db7 = Portc.1 , E = Portc.5 , Rs = Portc.6 Portd.7 = 1 Waitms 20 Locate 2 , 4 Lcd "Hallo" End ------------------------------------------------
.2 , Db7 = Portc.1 , E = Portc.5 , Rs = Portc.6 Portd.7 = 1 '----------------------------------------------------------------------- Waitms 50 Initlcd Cls Cursor On Blink Locate 1 , 1 Lcd "Hallo"