-
Thread
I2C mit ATmega32 und MCP23017
chris Berg schrieb im Beitrag #2470412: > DDRC &=~ ((1<<DD0)|(1<<DD1)); > PORTC = (1<<DD0)|(1<<DD1); Das muss heißen: DDRC &=~ ((1<<DDC0)|(1<<DDC1)); PORTC = (1<<DDC0)|(1<<DDC1); Spuckt dein Compiler da keine Fehlermeldung aus?
Da hast Du natürlich Recht! Also nochmal: DDRC &=~ ((1<<DDC0)|(1<<DDC1)); PORTC |= (1<<PC0)|(1<<PC1);
-
Thread
Atmega 48 - und alles ist anders.
q = ~q; while(1){ DDRB = 0xff; PORTB = 0xff; _delay_ms(time); DDRC = 0xff; PORTC = 0xff; _delay_ms(time); DDRD = 0xff; PORTD = 0xff; _delay_ms(time); DDRB = 0xff; PORTB = 0x00; _delay_ms(time); DDRC = 0xff; PORTC = 0x00; _delay_ms(time); DDRD =
0x00; _delay_ms(time); DDRB = 0xff; PORTB = p; _delay_ms(time); DDRC = 0xff; PORTC = p; _delay_ms(time); DDRD = 0xff; PORTD = p; _delay_ms(time); DDRB = 0xff; PORTB = q; _delay_ms(time); DDRC = 0xff; PORTC = q; _delay_ms(time); DDRD = 0xff; PORTD
-
Thread
Befehlszusammenfassung in C
lcdWrite(str); while(sec==tc); DDRB = 0xff; DDRC = 0x00; PORTC = 0xff; lcdGoto(2,1); lcdWrite("Wecker: : "); [/c] Dazwischen die Funktion zum Weckerstellen, die Weckerauslösung mit dem bereits erwähnten Hupton: [c] if ((h==hr)&&(m
); DDRB = 0xff; //PORTB als Ausgang für Speaker //und LED DDRC = 0x00; //PORTC als Eingang für Taster zum //Stellen der Weckzeit PORTC = 0xff; //PullUp-Widerstände an PORTC ein lcdGoto(2,1); lcdWrite("Wecker: : "); stellen(); if ((h==hr
-
Thread
Umstieg von Arduino IDE auf AVR -- scheitert an IRQs
0110) sei(); // re-activate Interrupts DDRC |= 40; } void loop() { PORTC = PORTC ^ 8; delay(500); } ISR (WDT_vect) { PORTC = PORTC ^ 32; } [/c] bringt beide LED zum Blinken. In der "NoDuino-"Form: [c] #include <stdint.h> int main(void) {
re-activate Interrupts DDRC |= 40; // PC 3 and PC 5 are Output while (1) { PORTC = PORTC ^ 8; delay(500); } } ISR (WDT_vect) { PORTC = PORTC ^ 32; } [/c] blinkt nur noch die LED, die von der Watchdog-Timer Routine aufgerufen wird. Habt Ihr eine Erklärung für
-
Thread
GLCD Initialisierungs-Anweisungen
cu PS: Mir ist irgendwie nicht ganz ersichtlich für was der E-Pin gut ist. Bei mir ist er am PORTC angeschlossen aber irgendwie wird der nie erwähnt.
leitungen gecheckt - funktioniert auch alles tadellos. Dann habe ich zu testzwecken auf PORTA und PORTC komplett 'high' ausgegeben - sprich outp(0xff, PORTA); outp(0xff, PORTC); - und habe dann gemessen. Ich hatte überall mehr oder weniger 5 V außer an einem PIN - nämlich PC4 alias TDO dort konnte
-
Thread
Digitalpoti, Dimensionierung Widerstandsarray 8bit 10-500Ohm
an Port C0 4Ohm an Port C1 8Ohm an Port C2 .. hänge funktioniert es nicht. Aber auch wenn ich Portc := XOR n; //na zählt von 0..255 mache funktioniert es nicht
> 4Ohm an Port C1 > 8Ohm an Port C2 > .. > hänge funktioniert es nicht. > Aber auch wenn ich Portc := XOR n; //na zählt von 0..255 > mache funktioniert es nicht ??? Was zum... willst du denn machen und wo kommt auf einmal PortC her? Die Schaltung von WIRO funktioniert nur mit niederohmigen
-
Thread
Software Pwm auf 8 Pin´s mit Bascom
werden. $regfile = "m16def.dat" $crystal = 8000000 $baud = 57600 Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.4 , Rs = Portc.5 Config Portb = Output Config Timer0 = Timer , Prescale = 256 On Timer0 Timer_irq Nosave Dim X As Byte Dim Pwm_zeit
-
Thread
Motorsteuerung mit L293D
.3 = 1 Ddrc.4 = 1 Ddrc.5 = 1 Ddrd.4 = 1 Ddrd.5 = 1 End Sub Sub Robby_vor() Portc.2 = 1 Portc.3 = 0 Portc.4 = 0 Portc.5 = 1 Portd.4 = 1 Portd.5 = 1 Pwm1a = 200 Pwm1b = 200 End Sub Sub Robby_zurueck() Portc.2 = 0 Portc.3 = 1 Portc.4 =
Pwm1a = 200 Pwm1b = 200 End Sub Sub Robby_rechts() Portc.2 = 0 Portc.3 = 0 Portc.4 = 0 Portc.5 = 1 Portd.4 = 1 Portd.5 = 1 Pwm1a = 200 Pwm1b = 200 End Sub Sub Robby_links() Portc.2 = 0 Portc.3 = 1 Portc.4 = 0
-
Thread
Kleiner 8Kanal DMX Empfänger erweitern
For N = 1 To 8 Portpin = N - 1 If _dmx_received(n) > My_counter Then Portc.portpin = 0 Else Portc.portpin = 1 End If Next N If My_counter > 255 Then My_counter = 0 End If Loop End [/code]
Portpin = N - 1 kanal = n If _dmx_received(kanal) > My_counter Then Portc.portpin = 0 Else Portc.portpin = 1 End If kanal = n + 8 If _dmx_received(kanal) > My_counter Then .... Next N [/code] Auf die Anpassung im
-
Thread
EtherSex mit Pollin Net-IO - Portsteuerung und Abfrage über HTTP funzt nicht ?
Hallo zusammen, ich versuche (verzweifelt) mit einem AVR-NetIO Board eine 8Pin - PortSteuerung (PORTC) über eine WEB-Server Implementierung zu realisieren. Bin deswegen extra auf Linux gewechselt (OpenSuse 11.2) und und und ...! Mit windows 7 im Dual Boot ... wobei mir windows 7 im wieder den MBR
Net-IO Board zum Laufen zu bringen. Allerdings ist die PortSteuerung der Ports (insbesondere des PORTC) - und Abfrage über den Browser ein Desaster. Das habe ich abgeschwächt schon bei einer Version aus dem Firmware Builder von http://www.ethersex.de/firmware-builder/list.cgi beobachtet (mit einem AVR
-
Thread
Warum springt der Debugger hier hin?
* uart1_puts_p */ Programm: ISR(TIMER2_OVF_vect) { time++; int h=0; char b[3]; PORTC=time; itoa(h,b,10); if(time==14) time=0; } int main() { DDRC=0xff; uart_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) ); uart1_init( UART_BAUD_SELECT(UART_BAUD_RATE,F_CPU) ); timer2_init(); sei(); while(1) { PORTC=time; if(time==5) { uart1_puts("Hello world\r\n"); time=0; } } }
-
Thread
Ringpuffer mit ADC Werten füllen und versetzt ausgeben
sizeof ringbuffer ) getindex = 0; return c; } } PORTC = uin; sprintf(line,"Wert = %4d \n", c); outprint(line); } return 0; } [/c] Nochmals zur Verständlichkeit: Die ADC Wandlung an sich funktioniert. Ohne den Ringpuffer kann
// Port A.5 //uin=uin; // Kontroll LED //if(uin > 500) // PORTC=0xFF; //else // PORTC=0x00; static unsigned char ringbuffer[ 40 ]; static unsigned short getindex = 0; static unsigned short putindex = 0; static unsigned
-
Thread
I2C am ATmega16 geht nicht mit beliebigen Pins
'Quarz Frequenz Const Pcf8574_lcd = &H40 Config Scl = Portc.0 Config Sda = Portc.1 Dim _lcd_e As Byte _lcd_e = 128 Cls Locate 1 , 3 Lcd "1234567890" End [/code] Wenn ich jetzt nur die I2C Pins auf PC.4 & PC.5 ändere und das LCD umklemme
'Quarz Frequenz Const Pcf8574_lcd = &H40 Config Scl = Portc.4 Config Sda = Portc.5 Dim _lcd_e As Byte _lcd_e = 128 Cls Locate 1 , 3 Lcd "1234567890" End [/code] Danke für einen hilfreichen Tipp
-
Thread
Uhr Bascom problem
hwstack = 32 $swstack = 10 $framesize = 40 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 Lcdbus = 4 Cursor Off Ddrb = &B11111111 Ddrd = &B00000000 Portd.0 = 1 Portd.1 = 1 Portd.2 = 1 Portd.3 =
-
Thread
Barcodescanner mit Atmega128 einlesen
******* LCD konfigurieren ******************* Config Lcd = 40 * 4 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.4 , Db6 = Portc.5 , Db7 = Portc.6 , E = Portc.1 , E2 = Portc.2 , Rs = Portc.0 Config Lcdbus = 4 ' einmaliges Initialisieren des Displays Dim ___lcdno As Byte ___lcdno = 0 :
-
Thread
Hilfe Bei Assembler Program
Ausgänge die ich zu 8 Segmenten á 8 Ausgänge zusammenfasse. Die Segmente werden von einem ATmega32 an PortC in einem Timer-Interrupt ausgewertet. Die Segmente werden nacheinander von PortA aktiviert. Das Ergebnis soll mir an PortB angezeigt werden. Ein Beispiel: Segment 1 aktiviert , Ausgang 1 = 1 , Ergebnis
Atmega32... PORTC... Wie ist eigentlich die JTAG Fuse eingestellt?
-
Thread
genaues Timing mit ATMEGA8 unter C
Programmiert: #include <avr/io.h> #include <util/delay.h> int main(void) {int i,j,x,y; PORTC = 0b00000000; PORTD = 0b00000000; DDRC = 0xff; DDRD = 0xff; for (;;) {x = 32; for (i=0; i<6; i++) {PORTC = x; x = x/2; y = 32; for (j=0; j<6; j++)
int main(void) { DDRC = 0xff; DDRD = 0xff; for (;;) { for (PORTC=32; PORTC>0; PORTC >>= 1) for (PORTD=32; PORTD>0; PORTD >>= 1) _delay_us(25); } } funzen, aber das sollte man testen.
-
Thread
LCD und BASCOM
also du musst noch die pins configurieren so z.B Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 Config Lcd = 16 * 4 cls LCD "hello WOrld" und du musst dem programm noch sagen wo das lcd dranhängt in der configuration
-
Thread
Atmel Studio, µC Grundlagen Hilfe
if verzweigung gestartet { PORTC = PORTC | (1<<PC3); // PORTC wird ODER verknüpft mit PC3 } } //while } //main [/c] Bitte kann mir jemand die einzelnen Parameter zu dieser Aufgabe erklären
Deine Kommentare erzählen nicht WARUM etwas gemacht wird. Du beschreibst hier [c] PORTC = PORTC | (1<<PC3); // PORTC wird ODER verknüpft mit PC3 [/c] das PORTC ODER verknüpft wird. Und zwar mit PC3. Aber warum machst du das? Was ist der Zweck der Übung? Das da eine Oder Verknüpfung
-
Thread
Interrupt-kritische Bereiche
Interrupts gesichert werden. Die Eigenschaft 'atomar' ist in C alles andere als trivial zu bestimmen. PORTC=0 ist z.B. atomar. (ein Befehl in ASM). PORTC = PORTC+1 nicht (Laden in R, inkrementieren, speichern). PORTC |= 1 dagen schon (sbi PORTC,1). Konstukte, die auf Konditionen auf globalen Variablen bauen
-
Thread
Hilfe für Bascom
$swstack = 32 $framesize = 40 'Taster1 Programmiermodus 'Config Portc.1 = Input 'Portc.1 = 1 'Taster1 Alias Portc.1 'Taster Relais 1 'Config Pinc.2 = Input 'Taster2 Alias Pinc.2 'Pinc.2 = 1 'Taster
Hallo [c] 'Taster1 Programmiermodus 'Config Portc.1 = Input 'Portc.1 = 1 'Taster1 Alias Portc.1 [/c] Sollte doch ein Eingang sein MFG Dieter
-
Thread
Anschlussproblem am Atmega8
habe für den lcd den portb nicht mehr komplett frei. kann ich einzelne Pins von portb mit pins vom portc kombinieren und diese an den LCD anschließen?? Gruß Max
... oder z.B. diesen Aufruf: Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , Db7 = Portc.5 , Rs = Portc.0 , E = Portc.1 Config Lcd = 16 * 1 Cursor Off Hier kannst du für alle LCD-Datenleitungen beliebige Ports einsetzten. Diese müssen
-
Thread
Port erweiterung -- Parallele Ausgabe--avr gcc
Bits des Registers. ok danke ;) 1) > LSB an PC0 und PC6 und 7 nicht überschreiben: > [c] > PORTC |= (variable & 0x3F); > PORTD |= ((variable & 0xC0) >> 2); > [/c] hmmmm bin etwa vewirrt. wenn ich am Portc 0b11111111 und var =0b00000000 also var& 0x3F =0b00000000 dann bekomme ich am ende Portc
Funktioniert das "|=" ? ich habe mir das bei AVR gcc angeschaut und andersrum verstanden also wie ein Portc= Portc "oder"(var&0x3F).... 2) kann man nicht auf einzelne Pin zugreifen zum beispiel PC0 = Var&0b00000001 ? 3) wenn var eine uint16_t ist muss ich die zuweisung wie folgt durchführen ?:
-
Thread
DatenProblem anziege in HTERM
))) { PORTC |=(LED2); wert2++; uart_puts( dtostrf( wert2, 1,0,string ); uart_puts(";"); while(!(PINA & (zaehler2))); } else { PORTC &=~(LED2); }
if(!(PINA & (zaehler2))) { PORTC |= (LED2); wert2++; uart_puts( dtostrf(wert2, 1, 0, string) ); uart_puts(";"); while(!(PINA & (zaehler2))); } else { PORTC &= ~(LED2); } [/C]
-
Thread
PNP-Transistor an ATMega328 - LED glimmt?
messe ich am Ausgangsport etwa 4,4V Tippe mal auf: AVCC nicht angeschlossen. Dann zieht sich PORTC seine VCC über die Pins. Peter
ich am Ausgangsport etwa 4,4V > > Tippe mal auf: AVCC nicht angeschlossen. > Dann zieht sich PORTC seine VCC über die Pins. Hatte ich auch vermutet, AVCC ist aber angeschlossen und liegt brav auf 5V.
-
Thread
Assebler Hilfe gebraucht
mehr gemacht, aber so sollte es gehen: in temp,DDRC ori temp,0b00000111 out DDRC,temp in temp,PORTC ori temp,0b00000111 out PORTC,temp Volkmar
temp,0b00000111 out DDRC,temp ;in temp,DDRC ;sbr temp,0b00000111 ;out DDRC,temp in temp,PORTC andi temp,0b11111000 out PORTC,temp ;in temp,PORTC ;cbr temp,0b00000111 ;out PORTC,temp irgendwie so
-
Thread
IR Transistor empfängt zwei Signal bei einen Tasten druck(Flag 0 und dann Flag 1)
irsnd_send_data(&irmp_dat, TRUE); //ON Command senden _delay_ms(50); //Warten.. PORTC |= (1<<LED_25); //LED einschalten systemOn = 1; //System Aktivieren _delay_ms(500); }else if(systemOn == 1){ //Abfrage auf System ist bereits aktiv irmp_dat.protocol = IRMP_RC5_PROTOCOL
irsnd_send_data(&irmp_dat, TRUE); //ON Command senden um es auszuschalten _delay_ms(1000); //Warten PORTC &= ~(1<<LED_25); //Alle LEDS auschalten PORTC &= ~(1<<LED_50); PORTC &= ~(1<<LED_75); PORTC &= ~(1<<LED_100); systemOn = 0; //System dekativieren _delay_ms(
-
Thread
Programmierung im Keil
komme nicht auf den Fehler, vielleicht fehlt ein include oder der Befehl ist an sch falsch. if(PORTC&&0x01==1) { OUTB=0xFF; } Soll einfach bei einem High am Pin 1 am PortC am gesamten PORTB ein HIGH ausgeben. error C202:'PORTC' undefined identifier ? MFG Michael
Wenn schon PORTC&&0x01 ^^ dann bitte PORTC & 0x01 schreiben & = Binaeres UND && = Logisches UND
-
Thread
Atmega2560 + PCINT
if(PINJ & S0) { PORTC = 0x00; } } Das entsprechende Bit in PCICR, PCMSKI und SREG wird korrekt gesetzt - aber es tut sich nichts, d.h. es wird nicht mal in die ISR reingesprungen. Vielleicht kann mir ja jemand
void ir_int_init(void) int main(void) { int k = 0; DDRB = 0x00; DDRC = 0xff; PORTC = 0xff; ir_int_init(); sei(); for(;;) k++; } void ir_int_init(void) //Initialize interrupt { PCICR = (1<<PCIE0); PCMSK1 = 0xff; } ISR (PCI0_vect) { PORTC =
-
Thread
AVR Atmega 328 Hilfe bei LED Taster Schaltung
int main(void) { DDRB = 0xFF; //Register B Ausgänge DDRC = 0x00; // Register C Eingänge PORTC = 0xFF; // Register C Pullups ein while (1) { if (!(PINC & ( 1<<PC4 ))) //wenn PC4 HIGH dann... { PINB |= ( 1<<PB0 ); // LED an PB0 an } else { PINB
main(void) { DDRB = 0xFF; // Register B Ausgänge DDRC = 0x00; // Register C Eingänge PORTC = 0xFF; // Register C Pullups ein while (1) { if ((PINC & ( 1<<PC4 ))) //wenn PC4 High dann... { PORTB |= ( 1<<PB0 ); // LED an PB0 an } else { PINB
-
Thread
1023 PWM sind 0 v?
sind. Hier der Code: [code] $regfile = "m8def.dat" $crystal = 1000000 $baud = 9600 Config Portc.5 = Output Config Portc.4 = Output Config Lcdpin = Pin , Db4 = Portd.4 , Db5 = Portd.5 , Db6 = Portd.6 , _ Db7 = Portd.7 , E = Portd.3 , Rs = Portd.2 Config Lcd = 16 * 1 Cursor Off Config
Getadc(0) Compare1a = Wert Locate 1 , 1 Lcd ; Wert Waitms 10 Cls If Wert < 600 Then Portc.5 = 1 Elseif Wert > 700 Then Portc.4 = 1 Else Portc.5 = 0 Portc.4 = 0 End If Loop End [/code] wo liegt der Fehler? ich such jetzt schon 3 Stunden nach dem Problem und finde nichts .
-
Thread
ACSR - Bit7 setzen
fragen. Danke für die Geduld im Voraus! Hier das Programm: Ergebnis es leuchtet keine LED an PORTC [c] #include<avr/io.h> #define MEINBIT7 7 int main (void) { DDRC=0xff; PORTC=0x00; ACSR |= (1<<MEINBIT7); while(1) { if(bit_is_set(ACSR,MEINBIT7) == 1) { PORTC=0xff;
[c]PORTC |= (ACD<<PC4)[/c] versucht, welche auch nicht weiterhelfen. Der Atmega weigert sich halt, das Bit auf 1 zu schalten. Und ich habe keine Ahnung wieso...
-
Thread
I2C - Buspegel sind echt schräg.
// PULL UP DDRB = 0; // Eingabe PORTB = 255; // PLL UP DDRC = 0; // Eingabe PORTC = 255; // PULL UP DDRD = 0; // Eingabe PORTD = 255; // PULL UP for (;;) { } JTAG ist per Fuse bei jedem Mega32 abgeschaltet. PortC sollte also 'normal' tun. Erwartungswert
schrieb im Beitrag #2620540: > P.s. Wenn einer der Mega32 via > > DDRC = 255; // Ausgabe > PORTC = 255; // HIGH > > erzwingt - liegt an SDA und SDL jeweils 5 Volt an. Und was passiert, wenn Du LOW Pegel erzwingst?
-
Thread
Digitale Positionsanzeige mit Bascom
Encoder_b Alias Pind.3 '-------------Config Ausgänge Siebensegment Config Portb = &B11111111 Config Portc = &B00111100 '-------------Pullup Taster0 Taster_Auf Taster_Ab Config Pind.0 = Input Portc.0 = 1 Taster0 Alias Pinc.0 Portc.1 = 1 Taster_ab Alias Pinc.1 Portd.0 = 1 Taster_auf Alias Pind.0
Dim Rueck As Byte Teiler = Ee_teiler '-------------Test Siebensegmentanzeige Portb = &B00000000 Portc = &B00000010 Waitms 2000 Portc = &B11011111 Waitms 2000 Portc = &B11101111 Waitms 2000 Portc = &B11110111 Waitms 2000 Portc = &B11111011 Waitms 2000 Portb = &B00000000 Portc = &B00000010
-
Thread
AND, OR und andere mathematischen funktionen in bascom
Bitschiebeoperatoren << und >> sind vorhanden): If PORTA And ((1 << PA6) Or (1 << PA7)) Then PORTC = PORTC Or (1 << PC0) Else PORTC = PORTC And Not (1 << PC0) End If Bäääh, das ist vielleicht hässlich... Basic hat für solche Spässe definitiv die falsche Syntax.
tempbyte = pina and &B11000000 if tempbyte=&B11000000 then portc.0=1 else portc.0=0 endif
-
Thread
Daft Punk Tisch
Peter Kuhlmann schrieb im Beitrag #1860538: > PORTA > 10101010 > PORTB > 10101010 > PORTC > 10101010 > PORTD > 10000000 Ich würde das über ein Lampen-Array machen. Somit brauchst du nur 2 Ausgänge. -> http://www.mikrocontroller.net/articles/LED-Matrix
wohl eher: PORTA = 0b01010101; //Erstellt das 1 Schachbrettmuster PORTB = 0b10101010; PORTC = 0b01010101; PORTD = 0b10101010;
-
Thread
externer 32,768kHz Crystal für Timer1 funktioniert nicht PIC16F1823
] void interrupt(void) { if(PIR1.TMR1IF == 1) //interrupt from Timer1? { PORTC.B2 = 1; //nur zum testen! ob er überhaupt in die ISR geht PIR1.TMR1IF = 0; //re-enabling the interrupt TMR1H = 0x80; //high byte TMR1L = 0x00; //low byte }
define PORTA digital TRISA = 0xFF; // define PORTA as input TRISC = 0x00; // define PORTC as output PORTC = 0x00; PORTC.B2 = 0; TIMER1_Init(); while(1) { } } [/c] und ich bin drauf gekommen das er am Ende der INIT bei der while-Schleife
-
Thread
kleines Timerproblem
Aufrufer zurueckgeben }; char USART1_getchar(void) { // Ist schon ein Zeichen im Buffer? PORTC = 0xFE; //rechte LED an while (!bit_is_set(UCSR1A, RXC1)) ; PORTC = 0xFF; //Rechte LED aus return UDR1; } //Daten empfangen Routine unsigned char USART1_readcommand(unsigned
ISR (TIMER0_OVF_vect) //Timerroutine { TCNT0 = 0; counter++; if(counter==10) { PORTC = ~PORTC; counter = 0; } }
-
Thread
TSIC und ATMega
clear external interrupt flag } [/c] und dann die ISRs: [c] ISR (TIMER1_COMPA_vect) { PORTC ^= ( 1 << PC4 ); } ISR (INT1_vect) { if (state == ZAC_READING_START_BIT_LOW) { timer1_start_normal(); int1_rising_edge(); state = ZAC_READING_START_BIT_HIGH; } if (state
timer_value); state = ZAC_READING_HIGH_BYTE; } else if (state == ZAC_READING_HIGH_BYTE) { PORTC |= 1 << PINC3; } } [/c] Wenn man die if/else Konstruktion vernünftig schreibt, klappts auch mit der Strobe Messung. ;)
-
Thread
LED zum Blinken bringen
Besten hinbekomme? Die Funktionen sehen wie folgt aus: void kurz() { // turn on LED PORTC |= (1<<PC4); delay_ms(35); // turn off LED PORTC &= ~(1<<PC4); delay_ms(400); } void lang() { // turn on LED PORTC |= (1<<PC4); delay_ms(700); // turn off LED PORTC &= ~(1<<PC4); delay_ms(400); } Der Aufruf ist hier zu sehen: lang(); lang(); lang(); kurz(); kurz(); Vielen Dank für Eure Mühen.
-
Thread
if Verschachtelung
Akkuspannung; Akkuspannung = WandleWertIn16Bit(0x09); if (Akkuspannung <= 7800) { PORTC |= (1 << PC0 | 1 << PC4 | 1 << PC1 | 1 << PC5 | 1 << PC3 | 1 << PC2); while (1) { Akkuspannung = WandleWertIn16Bit(0x09); PORTB |= (1 << PB2); // LED_ROT blinken
else { if (Akkuspannung <= 7400) { while (1) { PORTC &=~ (1 << PC0 | 1 << PC4 | 1 << PC1 | 1 << PC5 | 1 << PC3 | 1 << PC2); PORTB |= (1 << PB1); // LED_ROT blinken _delay_ms(500); PORTB &= ~ (1 << PB1);
-
Thread
Atmega32 AD-Wandlung
Endlosschleife starte ich die AD-Wandlung warte auf das Ergebnis und gebe schließlich ADCH auf dem PORTC aus. (JTAG habe ich deaktiviert (AVR-Studio). Da sonst die JTAG-Pins auf 5V gelegt werden wegen Pull-up Widerstand.). Am PortC sollt nun der AD-Wert anliegen. Klar dieser Wert wird immer wieder überschrieben
out DDRC, temp ;PortC als Ausgang out DDRB, temp ;PortB als Ausgang clr temp out PORTC, temp ;PORTC zurücksetzen out PORTB, temp ;Led an ; ADC Multiplexer Selection Register ADMUX ; REFS1 REFS0 ADLAR MUX4 MUX3 MUX2 MUX1 MUX0 ldi temp, 0b01100000 ; REFS1
-
Thread
Keine Reaktion auf Eingabe
> #define BUTTON_PORT (&PORTC) > #define BUTTON_DDR (&DDRC) Ist es an irgendeiner STelle wichtig, dass du die Adresse benutzen kannst? Wenn nein: dann lass es. Das verschafft dir nur zusätzlichen Aufwand bei der Benutzung von
/io.h> #include <avr/interrupt.h> #include "lcd.h" #define KEY_DDR DDRC #define KEY_PORT PORTC #define KEY_PIN PINC #define KEY_ADJUST 1 #define KEY_DISP 0 int main() { uint8_t keysPrev; uint8_t keysNow; lcd_init(LCD_DISP_ON_CURSOR); KEY_DDR &= ~(( 1 << KEY_ADJUST
-
Thread
DS18S20 keine Temperaturwandlung
****************************************************** ; Lichtschranke .equ ls_port = PORTC .equ ls_port_io = DDRC .equ ls_diode = 2 ; PortC2 .equ ls_emitter = 1 ; PortC1 ;One Wire .equ one_wire_port = PORTC .equ one_wire_pin = 3
******************************************************* one_wire_reset: cbi PORTC,3 ; auf LOW sbi DDRC,3 ; auf Ausgang ldi ar_1,1 ;warte 1ms sts ms_wait_counter_time+1,ar_1 rcall wait_ms sbi PORTC,3 ; auf HIGH
-
Thread
Probleme mit den Grundlagen der Elektronik
X = 0 Portc.0 = 0 Portc.1 = 0 Main: Do Getrc5(address , Command) If Address = 0 Gosub Aus End If Loop End Aus: If X = 0 Then Portc.1 = 1 X = 1 Else Gosub Ein End If Return Ein: If X = 1 Then X = 0 Portc.1 = 0 End If Gosub Main
-
Thread
AVR Videogenerator, 40x25 Zeichen, nur 60% CPU Auslastung !
;Byte aus CGROM lesen 3 SBRC tempi,7 ; Skip wenn Bit 7 nicht gesetzt OUT PORTC,tempi out DDRB, spiaus ;SPI aus, Port an 1 out SPDR, tempi ;Byte ausgeben 1 out DDRB, spian
color, X+ ;Farbe lesen 1 out SPDR, tempi ;Byte ausgeben 1 out PORTC, color ;Farbe ausgeben 1 [/code] Am Ende der Zeile muss man dann noch 0x00 in PORTC schreiben, damit man den Schwarz-Pegel erhält. Die Beschaltung für einen Farb-"DAC" findet man bei Jörgs Chipbasic-Projekt
-
Thread
Über Mikrocontroller Beschleunigungssensor auslesen
, dass er mir alle Daten aus dem Register des BMA020 ausspuckt (am besten noch in einem File)? PortC Bit4 muss als Eingang deklariert werden!? Anschließend muss ich ihm sagen, hole mir bitte die Daten aus dem RegisterA, dann RegisterB und RegisterC.
Yannick Simon schrieb: > PortC Bit4 muss als Eingang deklariert werden!? > Anschließend muss ich ihm sagen, hole mir bitte die Daten aus dem > RegisterA, dann RegisterB und RegisterC. Fang mal an, das Tutorial hier durchzugehen
-
Thread
Hilfe bei Erstellung einer Library für den ADXL362
schreibende Daten while(!(SPSR & (1<<SPIF))); //Warte auf Übertragungsende _delay_us(2); PORTC = (PINC | (1<<SS2)); //Setze Chipselect auf 1 }[/c] [c]//Liest Daten aus einem Register des ADXL362 unsigned short lesen_ADXL362(int reg) { PORTC = (PINC | (1<<SS2)); //Setze Chip-Select
Warum die Anbängigkeiten von PINC? Für den Anfang: statt PORTC = (PINC | (1<<SS2)); : PORTC |= (1<<SS2); und statt PORTC = (PINC & (~(1<<SS2))); : PORTC &= ~(1<<SS2);
-
Thread
Fehler auf AtMega32 Platine
aktivierten Ports auf PORTC 4 nur 1,66 V anliegen auf PORT C 2, 3 und 5 liegen die vollen 5 V an. Wenn ich jetzt jedoch eine LED an PORTC 2, 3 oder 5 anschließe, dann leuchtet diese nicht (bzw. mini-minimal), und die Spannung
Timo Olkus schrieb im Beitrag #3417129: > Nun das Problem: Es funktionieren alle Ports, ausser PORTC 2 -5. JTAG-Fuse?
-
Thread
problem mit ersten geh versuchen
loop: in r16, pinb com r16 ;das hab ich zum invertieren hinzugefügt out portc, r16 rjmp loop
die ich nicht ganz verstehe. es funktioniert nur wenn ich den tster an portB bit0 und die led an portc bit0 anschließe. aber die befehle beziehen sich doch immer nur an den gesamten portb oder portc. was mach ich den wenn ich das ganze an jeweils bit1 anschließen möchte?