-
Thread
Anzeige einzelner Zahlen verstellbar
Batterielaufzeit heisst LCD mit statischer Ansteuerung, angenommen man packt die Ziffern an PPTA,PORTB und PORTC und Backplane an PORTD.0, und die Taster an PORTD.1 bis PORTD.6 an einen Schalter der die Verbindung nach GND aufhebt dann ist das Programm einfach [code] void setup() { DDRB=DDRA=DDRC=0xFF
) c=0; if(pressed&64) c--; if(c<0) c=9; PORTA=segments[a]^xor; PORTB=segments[b]^xor; PORTC=segments[c]^xor; PORTD.0=!PORTD.0; xor=~xor; pressed=tasten; delay(10); } [/code] Segments ist die übliche 7-Segment Tabelle
-
Thread
SPI unstabil
buf[17]; SPIInit(); TWIInit(); lcd_init(); DDRC |= 0x08; //Hintergurndbeleuchtung PORTC &= ~0x08; //aus buf[16] = 0; //absicherung, um ein unabgeschl. Array zu vermeiden sei(); while(1){ i++; } return 0; } void SPIInit(void){ DDRB &= ~0x2C; //SCK
case 4: lcd_set_cursor(buf[0]-40, buf[1]-40); break; case 5: PORTC |= 0x08; //Hintergrundbeleuchtung an break; case 6: PORTC &= ~0x08; //Hintergrundbeleuchtung aus break; default: lcd_string("SPI-ERROR!!"); } bufpos
-
Thread
Atmega8 GCC: Bitmanipulation an einer Variablen
1<<PINC4)) { while(dezimalzahl >= 1) { -- dezimalzahl; PORTC = 0x20; _delay_ms(100); PORTC = 0x00 ; _delay_ms(100); } } //PORTC &=(1 << PC5); // } return 0; } Kann mir jemand weiterhelfen? Grüße
-
Thread
mega8 - fragen bei assembler
also zum pin6 an portc: ich brauche halt noch einen weiteren ausgang. ich plane in der schaltung via isp neue updates einspielen zu können. die frage ist ob man das irgendwie bewerkstelligen kann... vielleicht könnte mir
programm schreiben um das nochmal klar zu machen. an den eingängen sind 11 taster (portb und portd) an portc und portd-pin0 sind 7 leuchtdioden angeschlossen. beim drücken jedes tasters soll also eine andere kombination an den leds ausgegeben werden..frage: ist das jetzt wirklich ein prog das ihr zu hoch
-
Thread
AVR128DB mir 3-wire SPI
5 Volt kann, d.h. MOSFET und blauen (und einige grünen) LEDs ohne zusätzlichen IC. Und noch mehr: PORTC kann andere Spannung haben. Z.B. alles von 3 Volt (SD-Card, FRAM usw.), aber MAX7219 (unter 4 Volt will nicht arbeiten) mit 5 Volt über PORTC. Oder umgekehrt, alles von 5 Volt (oder gar von 2 Volt! Oder unmittelbar von Li-OH) und FRAM mit SD-Card über PORTC. Dabei bleibt das alles bei AVR-Kern, man muß nicht umlernen, nur HW-Adressen ändern. Man kann sogar Assembler benutzen! Und Bonus: kostet nur 1/3 von ATMega1284 (auch 16k SRAM). Einziges, was
-
Thread
WINAVR Portpins setzen
WINAVR einzelne Portpins zu setzen. Der Code der dabei raus kommt ist aber viel zu lang Aus PORTC |= 0x80; wird ldi r30, 0x35 ; 53 ldi r31, 0x00 ; 0 ld r24, Z ori r24, 0x80 ; 128 st Z, r24 Erwarten tue ich aber was mit sbi Wie kann man den GCC dazu bringe
@ Guru: Schalte mal 'nen Gang runter, auch seine PORTC Adresse liegt doch offensichtlich unter 0x20, also reitest du auf dem falschen Gaul rum. @ Peter: Der Code sieht so aus, als ob du die Optimierungen nicht aktiviert hast. Also -Os benutzen.
-
Thread
entprellen nach Dannegger
LED_PORT = 0xFF; LED_DDR = 0xFF; // long press: task 2 sei(); PORTC &= ~(1<<PC5); // LED5 zum Testen einschalten while(1) { if( get_key_short( 1<<KEY1 )) PORTC &= ~(1<<PC1); //mit entprellen if ( !(PINB & (1<<PINB4)) ) PORTC &= ~(1<<PC4); // Ohne entprellen LED4 ein } } [/c] Die Test LEDs 5 und 4 gehen jeweils an nur die LED 1 mit dem entprellen nicht, ich sehe das Problem irgend
-
Thread
16-bit Timer ATmega8515
Globale Interrupt Enable for(;;) { } } ISR(TIMER1_COMPA_vect) { if(toggle) { PORTC = 0xFF; toggle = 0; } else { PORTC = 0x00; toggle = 1; } } [/c] Funktioniert bei mir einwandfrei. PORTC Toggelt mit 1/(Taktfrequenz/1024/3599) Sekunden. Gruss
-
Thread
"Gruppierung" von Pins
{ &PORTB, 0x08 }, { &PORTB, 0x10 }, { &PORTB, 0x20 }, { &PORTB, 0x40 }, { &PORTC, 0x02 }, { &PORTC, 0x08 }, { &PORTC, 0x80 } }; #define PINS_COUNT (sizeof(pins) / sizeof(portpin_t)) static void pinout(portpin_t* pp, bool high) { if(high) { *(pp->port
-
Thread
ATMega16 PortC - PortB nicht tauschbar?
funktioniert die Anzeige. Man könnte sagen dann ist ja alles ok, aber dennoch wundere ich mich wieso es an PortC nicht funktiniert hat. Vielleicht gibt es ja einen Zusammenhang?!
Portpins vom PORTC erst mal nicht benutzen, weil da die JTAG Schnittstelle drauf geschaltet ist.
-
Thread
Selbstgebautes Atmega16 Testboard Funktioniert nicht
DDRC = 0b11111111; DDRD = 0b11111111; PORTA = 0b00000000; PORTB = 0b00000000; PORTC = 0b00000000; PORTD = 0b00000000; while( 1 ) { PORTC ^= 0b11111111; long_delay(5); } return 0; } [/c]
Hi > PORTC ^= 0b11111111; Am PortC sind die Pins für das JTAG-Interface, das im Auslieferzustand aktiviert ist -> JTAG Fuse löschen. MfG Spess
-
Thread
AD Wandlung mit MEGA 16
interne Referenz mit 2,56 V */ #define F_CPU 1200000 #include <avr/io.h> #define LED PORTC // LED an PORTC char adc() { ADCSRA |= (1 << ADEN); // Analog-Digital enable bit ADCSRA |= (1 << ADSC); while (ADCSRA & (1 << ADSC)); // warten, bis Wandlung
; // ADC deaktivieren return ADCH; } int main(void) { DDRC = 0xFF; // PORTC Ausgang PORTC = 0xFF; // HIGH, LEDs dunkel // AD enable, prescaler 64 (187,5 KHz) ADCSRA |= (1 << ADEN) | (1 << ADPS1) | (1 << ADPS2); // AD0 an PA0 // AD result store in
-
Thread
struct als volatile => syntax fehler ...
{ timetick=0; actualtime.second++; // debug LED: if(actualtime.second%2) { PORTC |= (1 << PC5); //toggle=0; } else { PORTC &= ~(1 << PC5); //toggle=1; } } //compute time if(actualtime.second==60) { actualtime.second=0; // debug
PORTC /**< port for the LCD lines */ #define LCD_DATA0_PORT LCD_PORT /**< port for 4bit data bit 0 */ #define LCD_DATA1_PORT LCD_PORT /**< port for 4bit data bit 1 */ #define LCD_DATA2
-
Thread
W5100->SPI defekt?
zu nehmen. Leider antwortet das Modul immer mit 0xFF. Das Modul ist wie folgt verbunden: PORTC.PIN4 -> /SCS PORTC.PIN5 -> MOSI PORTC.PIN6 -> MISO PORTC.PIN7 -> SCLK Ich habe die Verkabelung mehrfach überprüft und durchgemessen und auch von SPIC zu SPIF gewechselt mit gleichbleibendem Ergebnis
du musst unbedingt zuerst dein CS Port auf heigh legen , sonst wird der SPI nicht "scharf". PORTC.DIRSET = PIN4_bm; PORTC.OUTSET = PIN4_bm; dann kannst du erst PORTC.OUTCLR = PIN4_bm starten.
-
Thread
Timer beim PIC 16f877
Overflow ein bsf INTCON,5 ; alle Interrupts ein movlw b'00000001' movwf PORTC bcf STATUS,C ; loesche Carry-Flag im STATUS ; Register (noetig fuer rrf) main: rlf PORTC,1 ; Rotiere links ueber Carry call ISR
goto isr1 ; solange Interruptzaehler != 0 ; sonst -> movf PORTC, ; Status PORTB einlesen movwf PORTC ; Ausgabe auf PORTB movlw D'187' ; Vorladen des Interruptzaehlers movwf countint isr1: bcf INTCON,1
-
Thread
LCD funktioniert nicht
Lcdpin = Pin , Rs = Portb.1 , E = Portb.2 , Db4 = Portb.3 , Db5 = Portb.4 , Db6 = Portb.5 , Db7 = Portc.0 Config Lcd = 16 * 2 do Locate 1 , 1 Lcd "Hallo" Locate 2,1 Lcd "Na sowas" Loop
Ich hab alle Pins vom LCD, die nicht benutzt werden auf GND gelegt, die Belelgung auf Portb und Portc und das config lcdbus habe ich auch eingebaut, allerdings wird immer noch nichts angezeigt. Auch durch initlcd passiert nichts und das Display zeigt einfach nichts an, nur wenn ich an dem Kontrast-Poti
-
Thread
ADC 10bit auslesen
habe ein kleines Problem. Ich hab ein Programm in C geschrieben um einen ADC Wert auszulesen und an PortC habe ich mit Widerständen einen DA-Wandler aufgebaut. Das Programm schaltet also den Analogen Wert 1 zu 1 durch. Dazu habe ich nur eine 8 Bit Auflösung benutzt, jetzt würde ich gerne auf 10 Bit erhöhen
die Frage: Wie krieg ich den inhalt von ADCL auf die zwei PINS? Bis jetzt habe ich einfach (ADCH = PORTC) benutzt. Schon mal danke für die Antworten die hoffentlich kommen. mfg peter
-
Thread
Kann mir einer Start Hilfe geben?
1000000 Config Portb.0 = Output Config Pind.7 = Input Portd.7 = 1 Config Pinc.1 = Input Portc.1 = 1 Do If Pind.7 = 1 Or Pinc.1 = 0 Then Portb.0 = 1 If Pind.7 = 1 Or Pinc.1 = 1 Then Portb.0 = 0 Loop End Also passieren tut das hier: portb.0 leuchtet schon am Anfang
1000000 Config Portb.0 = Output Config Pind.7 = Input Portd.7 = 1 Config Pinc.1 = Input Portc.1 = 1 Do If Pind.7 = 1 Or Pinc.1 = 0 Then Set Portb.0 If Pind.7 = 1 Or Pinc.1 = 1 Then Reset Portb.0 Loop End hier passiert das selbe wie oben. Wie kann man denn ein Ausgang
-
Thread
Timer-Interrupt und Delay
DoStep2 CPI step, 0x03 BREQ DoStep3 CPI step, 0x04 BREQ DoStep4 DoStep1: OUT PORTC, step RJMP Exit_TIMER0_Interrupt DoStep2: OUT PORTC, step RJMP Exit_TIMER0_Interrupt DoStep3: OUT PORTC, step OUT OCR1AH, DelayHigh ;Delaytime OUT OCR1AL, DelayLow RJMP Exit_TIMER0_Interrupt DoStep4: OUT PORTC, step OUT OCR1AH, NormalHigh ;Normaltime OUT OCR1AL, NormalLow LDI step, 0x00 RJMP Exit_TIMER0_Interrupt Exit_TIMER0_Interrupt: RETI /// Habe das auf das Wesentliche gekürzt
-
Thread
Zeiger von PORTs (ATmega16)
{&PORTA,(1<<4)}, {&PORTA,(1<<5)}, {&PORTA,(1<<6)}, {&PORTA,(1<<7)}, {&PORTC,(1<<7)}, {&PORTC,(1<<6)}, {&PORTC,(1<<5)} }; [/c] Wenn man dann zb. den Gleisabschnitt Nr. 5 Einschalten möchte muss man nur: [c] *power_config[5].port |= power_config[5].pin
-
Thread
Autorannge Voltmeter
.3 , Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.6 , Rs = Portb.7 Config Lcd = 16 * 2 Led1 Alias Portc.5 Config Portc.0 = Input 'port für ac Messung-anzeige Config Portc.1 = Input 'port für 3V Config Portc.2 = Input 'port für 300mv Config Portc.3 = Input 'port für 30mV Config Portc.4 = Input
-
Thread
Lauflicht mit 28! Led´s
TIMER0_OVF_vect) { unsigned char i; unsigned char Mask; unsigned char PortA = 0, PortB = 0, PortC = 0, PortD = 0; PWMCounter++; if( PWMCounter == 101 ) PWMCounter = 1; // die ersten 8 PWM Kanäle sind auf Port A Mask = 0x01; for( i = 0; i < 8; ++i ) { if( PWMCounter
sind auf Port C Mask = 0x01; for( ; i < 24; ++i ) { if( PWMCounter < Channel[i] ) PORTC |= Mask; Mask = Mask << 1; } PORTC = PortC; // und schlussendlich: die PWM Kanäle 24 bis 27 sind auf Port D Mask = 0x01; for( ; i < 28; ++i ) { if( PWMCounter < Channel[i
-
Thread
Schritte im CTC Modus
Output ' Stiftleiste JP 2; Pin 3; PC0 Stepper1_reset Alias Portc.0 Config Pinc.1 = Output ' Stiftleiste JP 2; Pin 4; PC1 Stepper1_direction Alias Portc.1 Config Pinc.2 = Output ' Stiftleiste
Output ' Stiftleiste JP 2; Pin 3; PC0 Stepper1_reset Alias Portc.0 Config Pinc.1 = Output ' Stiftleiste JP 2; Pin 4; PC1 Stepper1_direction Alias Portc.1 Config Pinc.2 = Output ' Stiftleiste
-
Thread
AVR GCC: Problem mit Variable in Main und ISR
delay.h> #include <avr/interrupt.h> int y; uint32_t x; int main(void) { DDRC=0x03; PORTC=0x00; sei(); TCCR1B = 0x01; TIMSK|=(1<<TOIE1); while (1) { y=1; sei(); } } ISR(TIMER1_OVF_vect) { if (y==1){ PORTC=(1<<PORTC0);
-
Thread
Programm zum C-Source-Code zusammenfassen
Source explizit einfügt. z.B. ürsprünglich: [c] #include<bla.h> void mach_led_an(void) { portc=0x0F; } void main(void) { mach_led_an(); } [/c] soll z.B. in folgendes umgewandelt werden: [c] #include<bla.h> void mach_led_an(void) { portc=0x0F; } void main(void)
[c] #include<bla.h> static inline void mach_led_an(void) { portc=0x0F; } void main(void) { mach_led_an(); } [/c] tut letztlich das, was du willst. ;-) Nein, ein derartiges Programm kenne ich nicht.
-
Thread
Schalter in Bascom
Code hab ich geschrieben. $regfile = "m8535.dat" $crystal = 3690000 $baud = 9600 Config Portc = Output Config Pinb.1 = Input Portb.1 = 1 Do If Pinb.1 = 0 Then Portc = 0 End If Loop Aber das geht irgendwie nicht. Bin leider noch Anfänger. Vieleicht kann mir ja jemand helfen
Do If Pinb.1 = 0 Then Portc = 0 else Portc.0 =1 endif loop so müsste es gehen
-
Thread
Tasten abfragen oder so
-------------- ' Declarationen '------------------------------------------------ Config Sda = Portc.4 Config Scl = Portc.5 Config I2cdelay = 10 Portc.4 = 0 Portc.5 = 0 Ddrb = 00001111 Const Aus = &B11111111 'Alle Ausgänge 0 Const Pcf8574write = &H40
-
Thread
Portpin schaltet nicht
Hallo miteinander, ich stehe vor einem merkwürdigem Problem. Ich habe den PortD (0 bis 4) und PortC (0 bis 5) mit einer LED-Matrix belegt. In der Main steht erstmal zum testen [c] #define MUX_ROW PINC #define MUX_ROW_DDR DDRC #define MUX_COL PIND #define MUX_COL_DDR DDRD
(1) { PORTC = ~0x02; PORTD = 0x10; _delay_ms(250; // LED leuchtet PORTC = ~0x04; PORTD = 0x10; _delay_ms(250); PORTD =
-
Thread
Problem UART Kommunikation 2er AVRs
Main des 1.: [c]DDRC = 0xff; uart_init(); _delay_ms(5000); while(1) { PORTC |=(1<<PC1); uart_putc('d'); _delay_ms(1000); PORTC &=~(1<<PC1); uart_putc('k'); _delay_ms(1000); }[/c] Main des 2.: [c] DDRC = 0xff; uart_init(); while(1) { PORTC ^=(1<<PC1); while (!(UCSRA & (1<<RXC))) // warten bis Zeichen verfuegbar { } uint8_t a = UDR; // Zeichen aus UDR lesen PORTC ^=(1<<PC0
-
Thread
RGB Led ansteuern und mit Taster Farbe ändern
Basic: 'Erzeugt ein Blinklicht und wechselt die Farbe bei Tastendruck zwischen RGBCMY Config Portc.5 = Output Config Portc.4 = Output Config Portd.5 = Output Config Portd.4 = Input Config Portd.3 = Input Rot Alias Portc.4 'Rot Gruen Alias Portd.5 'Gruen Blau Alias Portc.5 'Blau Taster2 Alias Pind.3 Dim A As Byte Dim B As Integer Config Debounce = 15 'Hauptprogramm Do Gosub Tasterabfrage If A > 6 Then
-
Thread
Symbole auf LCD darstellen
SMALL Data Stack Size: 128 bytes Use an 2x16 alphanumeric LCD connected to the STK200+ PORTC header as follows: [LCD] [STK200+ PORTC HEADER] 1 GND- 9 GND 2 +5V- 10 VCC 3 VLC- LCD HEADER Vo 4 RS - 1 PC0 5 RD - 2 PC1 6 EN - 3 PC2 11 D4 - 5 PC4 12 D5 - 6 PC5 13 D6 - 7 PC6 14 D7 - 8 PC7 */ /* the LCD is connected to PORTC outputs */ #asm .equ __lcd_port=0x15 ;PORTC #endasm /* include the LCD driver routines */ #include <lcd.h> typedef unsigned char byte; /* table for the user defined character arrow
-
Thread
Atmega8A 1000ms != 1s ?
fixled_off(); _delay_ms(10000); } } void ioinit (void) { DDRC = 0b00111000; PORTC = 0b11000111; } void adcinit (void) { DDRC = 0b00111000; PORTC = 0b11000111; } void fixled_on(void) { PORTC |= _BV(PC3); } void fixled_off(void) { PORTC &= ~_BV(PC3); } void statled_on(void) { PORTC |= _BV(PC4); } void statled_off(void) { PORTC &= ~_BV(PC4); } void gps_on(void) { PORTC |= _BV(PC5); } void gps_off(void) { PORTC &= ~_BV(PC5); } [/c]
-
Thread
Hardware SPI Problem
// Port C2 - SI -> input without pullup // Port C3 - SCLK -> output default low */ PORTC = 0x02; DDRC = 0x0A; /* Port D Initialisierung // Port D0 - powersupply CC1100 -> output default low // Port D7 - LED -> output default low*/ PORTD = 0x00; DDRD = 0x81; }
Port C2 - SI -> input without pullup > // Port C3 - SCLK -> output default low > */ > PORTC = 0x02; > DDRC = 0x0A; mir fehlt da immer noch das Setzen des SS Pins auf Ausgang Warum schreibst du das eigentlich alles mit Hex-Zahlen So... [C] /* Port B Initialisierung /
-
Thread
DMX Lib für Xmega bekannt?
void usart_init(void){ //configure usart // Pin from USARTC0 TxD C3 set to output PORTC.DIRSET = PIN3_bm; // Pin from USARTC0 TxD C3 to high PORTC.OUTSET = PIN3_bm; // Asynchronous Modus USARTC0.CTRLC = (USARTC0.CTRLC & ~USART_CMODE_gm ) | USART_CMODE_ASYNCHRONOUS_gc;
void usart_init(void){ //configure usart // Pin from USARTC0 TxD C3 set to output PORTC.DIRSET = PIN3_bm; // Pin from USARTC0 TxD C3 to high PORTC.OUTSET = PIN3_bm; // Asynchronous Modus USARTC0.CTRLC = (USARTC0.CTRLC & ~USART_CMODE_gm ) | USART_CMODE_ASYNCHRONOUS_gc;
-
Thread
Micro Wartezeiten
Single , Prescaler = Auto , Reference = Avcc Config Portd = Output Config Portb = Input Config Portc.0 = Output Config Portc.1 = Output Config Portc.2 = Output Config Portc.3 = Output Config Portc.5 = Input Portb = 255 '====================================================== 'Initialisierungen '====================================================== Fusstaste Alias Pinb.0 Relais1 Alias Portc.0 Relais2 Alias Portc.1 Relais3 Alias Portc.2 Relais4 Alias Portc.3 Portb = 255 Dim Zeit As Integer Dim Poti As Integer 'Zeitintervall Portc.0 = 1 '=
-
Thread
Tiefpass-Berechnung für PWM-Glättung
hwstack = 32 $crystal = 16000000 $baud = 9600 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 Config Portd.6 = Output Config Portd.5 = Output Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Up , Prescale
-
Thread
SPI Problem Atmega8
############################################ void Send(UCHAR a, UCHAR b, UCHAR c, UCHAR d) { PORTC&=~((1<<PC2)); //Pin2 CSN auf LOW legen read_write_spi(a); read_write_spi(b); read_write_spi(c); read_write_spi(d); PORTC|=(1<<PC2); //PIN2 (CSN) auf HIGH legen } /
Watchdog disable WDTCR=0x00; DDRD=0xff; //PORTD = Ausgang DDRC=0xff; //PORTC = Ausgang PORTC=0; //PORTC = 0 PORTD=0; //PORTD = 0 INIT_SPI(); while(1) { _delay_us(100); Send(0x00, 0x00, 0x00, 0x00); } return 0;
-
Thread
UART soll nach externem Interrupt senden (C, ATM.8)
----------------- ISR (INT0_vect) // SBUF Display hat Daten - jetzt abholen ! { PORTC++; // GICR= (!(1<<INT0)) ; } //--------------------HAUPTPROGRAMM---------------------------- int main() { wdt_reset(); initusart(); //------------------
); while(1) { PORTB^=(1<<PB0); // Rote LED blinkt _delay_ms(50); if(PORTC>0) //prüfen ob Daten in Register { PORTB=(1<<PB3); //DEBUGLEUCHTE PORTC = 0; //Buffer zurücksetzen sendepuffer_anfordern; } return
-
Thread
Kriege den Taster nicht eingelesen
0xff; // Port B als Ausgang definieren DDRC = 0x00; // Alle Pins auf Eingang PORTC = 0xff; // Port C Pulldown aktivieren if ( PINC & (1<<PINC0) ) { // Ausgänge von Port B beschreiben PORTB = (1<<Bit2) | (1<<Bit0); }
Alexander schrieb im Beitrag #1962533: > PORTC = 0xff; // Port C Pulldown aktivieren Nur, um sich das mal auf der Zunge zergehen zu lassen.... :-o Als kleiner Denkanstoss: auch zusammen mit dem Kommentar wird der PortC keinen /Pulldown
-
Thread
Atmega8 und LCD
8Mhz angesteuert werden. Die Ansteuerung soll im 4bit Modus erfolgen. DB4..DB7 des LCD hängen an PORTC0..3, RS an PORTC4, E an PORTC5 und R/W auf GND. Kontrasteinstellung über Poti. Die Verschaltung ist richtig, habe es mehrmals überprüft. Das LCD funktioniert auch bei Einschalten der Versorgung (erste
-
Thread
[AVR] Controller reagiert auf falsche Zahl.
PORTC &= ~(1<<PC0);; //reset trigger channel } return 0; } [/c]
PORTB |= (1<<PB1); //reset if(dat==123) { //trigger condition HIER IST PROBLEM PORTC |= (1<<PC0); //trigger pulse PORTB |= (1<<PB6); //light LED } else { PORTB &= ~(1<<PB6); //darken } } PORTC &= ~(1<<PC0); //reset trigger channel
-
Thread
avr-gcc Assembler Probleme!
zum TESTEN ldi tmp, 0x00 ;input Taster PINC0, PINC1 out DDRC, tmp ldi tmp, 0x03 out PORTC, tmp WHILE: in tmp, PORTC sbis PORTC, 0 inc MIN out PORTD, MIN sbis PORTC, 1 inc HOUR ldi tmp, 0xFF WAIT: dec tmp brne WAIT rjmp WHILE [/c] [code] #!/bin/bash
-
Thread
SPI Display am Attiny 3216
PIN1_bm // PA1 #define DC_PORT PORTA #define RESET_PIN PIN1_bm // PC1 #define RESET_PORT PORTC #define CS_PIN PIN3_bm // PC3 #define CS_PORT PORTC void spi_init(void) { // SPI0 auf alternativen Pins: MOSI=PC2, SCK=PC0 //PORTMUX.SPIROUTEA = PORTMUX_SPI0_ALTERNATE_gc; PORTMUX.CTRLB |= PORTMUX_SPI0_bm; // SPI0 auf Alternate: SCK=PC0, MOSI=PC2 PORTC.DIRSET = PIN0_bm | PIN2_bm; // SCK, MOSI SPI0.CTRLA = SPI_ENABLE_bm | SPI_MASTER_bm; SPI0.CTRLB = SPI_SSD_bm; } void gpio_init(void) { PORTA.DIRSET = DC_PIN; PORTC.DIRSET = CS_PIN |
-
Thread
Leidiges Thema: LCD - Problem am Port C
allzuviel erkennen weil keine Labels gesetzt sind. Das Problem erscheint mir zu sein, dass Du PORTC und PORTD gemischt hast. Also E von PORTC kommt, RS aber von PORTD. Der Code benutzt aber nur einen Port. #define LCD_PORT PORTC #define LCD_DDR DDRC #define LCD_RS PD4 #define
-
Thread
atmega 16, array, assembler, indirekte adressierung
ldi ZL,low(feld*2) ldi ZH,high(feld*2) lpm r16, Z ldi r17, 0xff out DDRC, r17 out PORTC, r16 . . . Jedenfalls sagen das meine bescheidenen Assemblerkenntnisse ,,,
das ganze ist ein counter von 0-F wird am portc ausgegeben und jenachdem ob PINA4 auf "0" oder "1" ist soll der counter auf/abwärts zählen. das sram soll verwendet werden um dort das array zu speichern ist zwar ein flüchtiger speicher, das array
-
Thread
Mega128 Defekt?
Testprogramm geschrieben $regfile = "m128def.dat" $crystal = 8000000 Config Portb = Output Config Portc = Output Do Portb = 255 Portc = 255 Waitms 250 Portb = 0 Portc = 0 Waitms 150 Loop End aber keiner der ports wechselt. flashen lässt sich der controller ohne probleme...
-
Thread
CodevisionAVR AD-Wandler und Interrupt
der Formel, und Ergebnis an PortC einstellen und halten, und dann wieder Wert wandeln, berechnen und halten bis der nächste wert berechnet wird. 1.Problem: AD-Wandler und Interrupt ich bin mir nicht sicher ob AD-Wandlung unterbrochen
Unterschied. Ausser dem, dass die 2-te Variante um etliches schneller ist. In deinem Fall: anstatt PORTC=(0,062*e+0,044*esum+0,274*edif); //Reglergleichung kommt PORTC = ( 62 * e + 44 * esum + 274 * edif ) / 1000; und schon brauchst du kein floating point mehr. Es gibt auch keinen Grund, warum
-
Thread
LCD und PS2 Tastatur an Atmega 8
$regfile = "m8adef.dat" $crystal = 16000000 Config Lcd = 40 * 2 Config Lcdpin = Pin , Db4 = Portc.5 , Db5 = Portc.4 , Db6 = Portc.3 , Db7 = Portc.2 , E = Portc.1 , Rs = Portc.0 Config Keyboard = Pind.1 , Data = Pind.0 , Keydata = Keydata Cursor On Blink Dim Text As String * 40 Dim I As Byte
-
Thread
PIC und 22 Bit AD Wandler ueber SPI, kriege es nicht gebacken
conversation der 2 ADC's startet gleichzeitig // danach wird sequenziell ausgelesen PORTC &= 0xF8 ; // !Chip select aktiv RC 0,1,2 -> null Delay_ms(10) ; PORTC |= 0x07 ; // !Chip select inaktiv RC 0,1,2 -> eins Delay_ms(70) ; PORTC.F1 = 0 ; // !Chip
= 0; i <= 3; i++) // Auslesen 1. ADC {ad_wert1[i] = Spi_Read(buffer);} PORTC.F1 = 1 ; PORTC.F2 = 0 ; // !Chip select ADC 2 Delay_ms(1) ; for (i = 0; i <= 3; i++) // Auslesen 2. ADC {ad_wert2[i] = Spi_Read(buffer);} PORTC.F2 = 1 ;
-
Thread
Bascom: Ports in einer Schleife ansprechen?!
(10) as bit i=0 Do i = i+1 Leds(i) = 1 gosub Set_Port loop until i<10 Set_Port: portc.1=leds(1) portd.5=leds(2) ...usw. return
zb. 01011101 011 ) an die Ports legen nur das ich eben leider nich nur einen Port benutze sondern portc und ein paar Ausgänge von portD. Das bit schieben von mir war nur ein Beispiel für mein Problem... Sowas würde mein Problem lösen: funktioniert nur nicht.. Schwachsinn: An.1 alias Portc.1 An.2