-
Thread
Atmega16 flashprobleme
sieht genauso aus. Ist das normal kann ich PORTC nicht als normalen verwenden wie PORTA und PORTC? Ich sag schon mal danke für alle Antworten. Gruß und danke Daniel
> Ist das normal kann ich PORTC nicht als normalen > verwenden wie PORTA und PORTC? JTAG ausschalten Otto
-
Thread
switch geht nicht
PORTC = 0x01; break; case 0x02: PORTC = 0x02; break; default: // no key PORTC = 0xFF; }; } } [/c] Bin echt für jede Hilfe dankbar, denn
// pull ups for key inputs PortD2 and portD3 DDRC = 0xFF; // outputs for LEDs PORTC = 0xFF; // LEDs off for(;;) { PORTC = PINB; } } [/c] p.s.: Meine Glaskugel sagt übrigens, dass deine Eingänge einfach nur low-aktiv sind, d. h. du musst entweder mit ~PINB
-
Thread
PIC18F4550 PORTC.F4 / PORTC.F5 als Digital Input
Hallo zusammen, Problem mit dem PIC 18F4550. Ich brauche PORTC.F4 und PORTC.F5 als Digital Input. Hier die Konfig: UCON.F3 = 0. INTCON = 0; ADCON1 = 127; TRISA = 1; TRISB = 3; TRISC = 247;
-
Thread
Suche BASIC-Programmierer
am PortA und PortB meines Mega32 angeschlossen. Die 3 Pins für die Binärzähler befinden sich an Portc.1-3! Wie das Programm funktionieren soll: Man gibt also eine Zahl über die Tasten ein. Diese Zahl wird nach jeder Eingabe neu über die 7-Segm-Anzeigen ausgegeben. Danach drückt man auf einen
zufall = rnd(10) ' gib mir eine zufallszahl zwischen 0 und 9 for x = 0 TO zufall STEP 1 Portc.1 = 1 waitms 20 Portc.1 = 0 next [/pre] wenn ich mich nicht irre. Ich könnte natürlich auch zufallszahlen zw. 0 und 9999 oder so erzeugen lassen und das dann druchlaufen lassen, aber
-
Thread
Ultraschall-Sensor Firmware funktioniert nicht
if(z <= 140) enable_led_portc(1); if(z > 140) enable_led_portc(0); } void enable_led_portc(int y) { DDRC = 0xFF; PORTC = 0x00; //alle LEDs ausschalten zu Beginn switch(y) { case 0 : PORTC
if(z <= 140) enable_led_portc(1); if(z > 140) enable_led_portc(0); } void enable_led_portc(int y) { DDRC = 0xFF; PORTC = 0x00; //alle LEDs ausschalten zu Beginn PORTC = (1<<y); } [/c]
-
Thread
CodeVisionAVR Rx ISR
(0<<DDC2) | (0<<DDC1) | (0<<DDC0); // State: Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTC=(0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0); // Port D initialization // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0
-
Thread
Elektrische Grundlagen eines Busses mit TTL-Pegeln
einfach für jeden dieser vier IO-Pins jede Kombination von gesetzten/zurückgesetzten Bits des DDRC-/PORTC-/PINC-Registers getestet und geschaut ob das entsprechende PINC-Bit beim Auslesen danach gesetzt oder nicht gesetzt ist. Beispiel: DDRC : 0111 (PC0+PC1+PC2 = Output / PC1 + PC3 = Input) PORTC: 0101
1) MEHR Pins mit Low-Pegel gibt als mit Highpegel, ansonsten ist er "1" Beispiele: DDRC : 0011 PORTC: 0011 (zwei Ausgabepins mit high-Pegel) ----------- PINC<: 1111 (high-Pegel) DDRC : 1111 PORTC: 0101 (zwei Ausgabepins mit high, zwei mit low-Pegel) ----------- PINC<: 1111 (high-Pegel setzt
-
Thread
DS1820 an Atmega8 Probleme
m8adef.dat" $crystal = 1000000 Config Lcd = 16 * 2 Config Lcdbus = 4 Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 Config 1wire = Portd.7 Dim Temp(9) As Byte Dim I As Integer Cls Do 1wreset 1wwrite &HCC 1wwrite &H44
-
Thread
ATMega1284P startet Programm nicht
Hi >Aber selbst ein Minimalprogramm wie PortC auf Ausgang, alle Pins von C >auf HI funktioniert schon nicht. 4 Pins des PortC sind im Auslieferungszustand mit dem JTAG-Interface belegt. MfG Spess
spess53 schrieb im Beitrag #3678154: > Hi > >>Aber selbst ein Minimalprogramm wie PortC auf Ausgang, alle Pins von C >>auf HI funktioniert schon nicht. > > 4 Pins des PortC sind im Auslieferungszustand mit dem JTAG-Interface > belegt. > > MfG Spess Danke für die schnelle Antwort
-
Thread
ATMega16 PORTA defekt?
Hi, jop das JTAG Fuse hat mit schonmal bei der Nutzung von PORTC Kopfzerbrechen bereitet, da fall ich nicht mehr so schnell drauf rein ;)
" ist nach wie vor PORTC als LCD_PORT definiert. [c] #define LCD_PORT PORTC /**< port for the LCD lines */ [/c] Gruß, Magnetus
-
Thread
Atmel Microchip Studio - kein Break Point Stop
Main rein: #include <avr/io.h> uint32_t debug_value = 0; int main(void) { DDRC |= (1<<PORTC0); /* Replace with your application code */ while (1) { debug_value++; if (debug_value == 50000) { PORTC |= (1<<PORTC0) ; } else { PORTC &= ~(1<<PORTC0) ; } } } Dabei setze ich die Breakpoints auf PORTC... in der If Schleife. Die werden aber ignoriert. Optimization steht auf -Og und Debugging -g2. Tool ist Atmel Ice + Debug wire
-
Thread
frequenz auslesen und auf lcd anzeigen
hdatei: [C] char buffertakt [50]; int zaehler; int zahl; int hz; int i; #define RS_1 PORTC |= (1<<PC7) #define RS_0 PORTC &= ~(1<<PC7) int wait () { _delay_ms(2); return 0; } int E () { PORTC |= (1<<PC6); PORTC &= ~(1<<PC6); return 0; } int ausgabe () { RS_0; PORTA
-
Thread
LCD C0802-04, HD47780 ansteuern..
hat der ATMega8 auch JTAG am PortC wie die ATMega16? Wenn ja müsstest du das ausschalten.
Hi >hat der ATMega8 auch JTAG am PortC wie die ATMega16? Nein. MfG Spess
-
Thread
Atmega8 Interrupts
PC0) ; // Port C0 an 100ms warten _delay_ms (100) ; PORTC |= _BV (PC0) ; // PORT C0 aus 100 ms warten PORTC &= ~_BV (PC1) ; // PORT PC1 an 100 ms warten _delay_ms (100) ; PORTC |= _BV (PC1) ; // PORT PC1 aus 100ms warten PORTC &= ~_BV (PC2) ; // PORT PC2 an 100 ms warten _delay_ms (100) ; PORTC |= _BV (PC2) ; // // PORT PC2 aus 100ms warten PORTC &= ~_BV (PC3) ; // PORT PC3 an 100ms warten _delay_ms (100) ; PORTC |= _BV (PC3) ; // // PORT PC3 aus 100ms warten PORTC &= ~_BV
-
Thread
Atmega8 langsam, viel versucht = ratlos
++ ) { if ( t <= led_array[led] ) pc |= mask; mask <<= 1; } PORTC = pc; // Alle LED an Port D pd = 0; mask = 0x01; for ( ; led < 24; led++ ) { if ( t <= led_array[led] ) pc |= mask; mask <<= 1; } PORTD =
Die PWM funktioniert sehr gut mit den Ports PortB 2-7 PORTC 0-7 PORTD 0-2 [c]uint8_t led, t; pb = 0; pc = 0; pd = 0; //fuer alle Zeitschritte in einem Zyklus der PWM //fange mit t=255 an und schalte an ab erreichter
-
Thread
Bascom ATmega8a - Problem aus Powerdown aufwecken
= Output Config Pind.2 = Input Portd.2 = 1 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db7 = Portc.5 , Db6 = Portc.4 , Db5 = Portc.3 , Db4 = Portc.2 , E = Portc.1 , Rs = Portc.0 Config Int0 = Low Level On Int0 Isr Config Timer1 = Timer , Prescale = 8 Enable Timer1 On Timer1 Isr_timer Enable
-
Thread
Problem mit Mega1284P und XBee
for(int i=0;i<t;i++) { _delay_ms(1); } } int main(void) { DDRC |= 0xff; PORTC |= 0xff; sei(); uart_init(); char s[10] = {"asdfghjkl"}; s[9] = '\n'; uart_puts(s); PORTC &= ~PORTC; while (1) { USART0_RX_vect(); } return 0; }[/c]
Mach das mal so: int main(void) { DDRC |= 0xff; PORTC |= 0xff; uart_init(); sei(); uart_puts("asdfghjkl\n"); PORTC &= ~PORTC; while (1) { // USART0_RX_vect(); // was soll das denn werden? } return 0; }
-
Thread
Schrittmotor Tutorials
Assembler sieht so aus: <pre> sm_step_rechts: cli push r16 rcall wait ldi r20,10 out PORTC,r20 rcall wait ldi r20,9 out PORTC,r20 rcall wait ldi r20,5 out PORTC,r20 rcall wait ldi r20,6 out PORTC,r20 rcall wait pop r16 sei ret </pre>
-
Thread
ILI9341 langsam Verbesserungsvorschläge?
gebracht, mit folgender Änderung (bezogen auf meine Konfiguration): [c] #define controlport PORTC // fuer Mega644 Controller Testboard #define controlddr DDRC #define controlpin PINC #define rstport PORTC #define rstddr DDRC #define rstpin PINC #define dc 5
.PC7 D/C........PC0 MOSI.......PC3 SCK........PC5 Im Code ILI9341.h: #define controlport PORTC // fuer Mega2560 #define controlddr DDRC #define controlpin PINC #define rstport PORTC #define rstddr DDRC #define rstpin PINC #define dc 0 // controlport
-
Thread
mega16 und LCD unter bascom
heute einen mega16 bekommen und ich halt gedacht klemmste das lcd einfach mal da rdran also RS an Portc.0 E an Portc.1 D4 an Portc.2 D5 an Portc.3 D6 an Portc.4 und D7 an Portc.5 R/W liegt auf masse. In Bascom hab ich alles erstmal umgestellt also den chip und das lcd. Ich hab auch einen quarz dran 10Mhz
programmen nur macht das lcd dann aber nix. Das Progie: $crystal = 10000000 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 "Hallo" End
-
Thread
Komisches Interpretieren der Ausgänge
Ist das normal? Das kommt drauf an wie Deine LED angeschlossen sind. DDRC = 0b11111111; setzt PORTC als Ausgaenge, das ist richtig. Jetzt die Frage, sind Deine LED High oder Low aktive? Dann musst Du die Pins noch mit PORTC = 0xFF oder PORTC = 0x00 setzen
Ausgang auf 0? Juergen G. schrieb im Beitrag #2155878: > Dann musst Du die Pins noch mit > > PORTC = 0xFF oder PORTC = 0x00 ^^^^^^^^^^^^
-
Thread
SD/MMC-Karte am Xplain Evaluationsboard
verzinnt und moeglichst in 90° Winkeln mit 0.5mm Lackdraht mit den Testpunkten, auf denen der SPI-Bus (PORTC/SPIC) liegt, verbunden. Bei diesem Aufbau ist die CS-Leitung des Adapters mit dem PORTC0 verbunden. Die Firmware dazu ist leider noch etwas frickelig und wird vermutlich durch eine bessere Loesung
nicht rausgeführt. PORTH, PORTJ und PORTK (alle EBI) werden auf dem Board für das SDRAM genutzt. PORTC wird für die SPI-Kommunikation zwischen AT90USB1287 und ATxmega128A1 genutzt. Dann wäre da noch der UART0, der mit dem AT90USB1287 verbunden ist. Desweiteren ist am PORTC1 der CS des 32MBit Dataflash
-
Thread
SJA1000 und ATmega32A
PORTA &= ~(1<<ALE); } void Canreg_Write(uint8_t Adresse, uint8_t Daten){ DDRC = 0xFF; // PortC Ausgang PORTC = Adresse; // Adresse ausgeben PORTA |= (1<<ALE); // ALE Low asm volatile ("nop"); PORTA &= ~(1<<ALE); // ALE High PORTC = Daten; // Daten ausgeben PORTA
PORTA |= (1<<WR); // WR High } uint8_t Canreg_Read(uint8_t Adresse){ DDRC = 0xFF; // PortC Ausgang PORTC = Adresse; // Adresse ausgeben PORTA |= (1<<ALE); // ALE Low asm volatile ("nop"); PORTA &= ~(1<<ALE); // ALE High DDRC = 0x00; // PortC Eingang PORTC
-
Thread
ATmega8 Dauer-Reset
nur kurz Grün. #include <avr/io.h> #include <util/delay.h> int main(){ DDRC=0xFF; PORTC=0x01; while(1) { PORTC=PORTC<<1; _delay_ms(10); _delay_ms(10); _delay_ms(10); _delay_ms(10); _delay_ms(10); _delay_ms(10); _delay_ms(10); _delay_ms
Hi Wie kommst du auf Dauerreset? Dein Programm gibt nach 4s nur noch $00 an PortC aus. Davor wird jeder Ausgang einmal auf 1 gesetzt. Oder was denkst du, was dein Programm macht. MfG Spess
-
Thread
Analogwert Auswerten Bascom
240 Or W < 260) Then Portc.0 = 0 End If Loop
'Analogwert 1 If(w > 240 Or W < 260) Then Portc.0 = 0 else Portc.0 = 1 End If Loop [/pre] MfG Falk
-
Thread
For-Schleife ärgert mich ...
umgeht, aber offenbar doch nicht. Also, mein Programm sieht im Prinzip folgendermaßen aus: [C] PORTC &= (1<<PC0); // Initialisierung (am Programmstart) unsigned int i; for(i = 0; i < 8192; i++) { PORTC |= (1<<PCO); if(i == 0) [.. mach was ..] if(i == 2048)
hast du dich da verschrieben? PORTC &= (1<<PC0); Sollte es nicht entweder PORTC &= ~(1<<PC0); oder PORTC |= (1<<PC0); heißen?
-
Thread
Custom character bei Display mit HD44780
7 Font PORTC = 0b00000000; //Enable PORTC = 0b00000001; _delay_ms(500); PORTA = 0b00001111; //Display an, Cursor move, Cursor blinkt nicht PORTC = 0b00000000; //Enable PORTC
= 0b00000000; //Enable PORTC = 0b00000001; PORTD = 0b00000001; //Data mode PORTA = 0b00000000; //Schreibe neues Zeichen --> nichts passiert PORTC = 0b00000000; //Enable PORTC = 0b00000001;
-
Thread
Problem Schieberegister 595er ud 597er
schreiben, genau diese werden auf den Leds angezeigt, also im > Code-Beispiel die 233. [c] PORTC &= ~(1<<DD_SS_i); PORTC |= (1<<DD_SS_i); PORTC &= ~(1<<DD_SS_i); PORTC |= (1<<DD_p597); PORTC &= ~(1<<DD_p597); PORTC |= (1<<DD_p597); [/c] Ich steig durch deine Bezeichnungen
-
Thread
AVR-Board Schaltplan
auch, ebenso Mega48, 88, usw. Solltest du einen Mega8 mal tauschen, wundere dich nicht wenn der PortC nicht funktioniert.
zu verbinden ist, auch wenn man den ADC nicht benutzt? Weil AVCC der Stromversorungspin für den PortC ist.
-
Thread
Timer1-Interrupt
Für den konkreten Fall würde folgendes ausreichen: TIMER: eor temp, temp out PORTC, R17 reti Gruß, Achim.
Sorry, richtig wäre TIMER: eor temp, temp out PORTC, temp reti
-
Thread
Dip Schalter Abfrage
useklavier PINs als Eingang DDRC &= ~(1<<PC3); DDRC &= ~(1<<PC4); DDRC &= ~(1<<PC5); PORTC |= (1<<PC2); //M‰useklavier PULL UP einschalten PORTC |= (1<<PC3); PORTC |= (1<<PC4); PORTC |= (1<<PC5); //############################################################# PORTC |=
SWITCH_MASK (1<<2 | 1<<3 | 1<<4 | 1<<5) void read_switch( void ) { DDRC &= ~SWITCH_MASK; PORTC |= SWITCH_MASK; DDRB |= 1<<0; _delay_us( 100 ); // time to tie open inputs high switch( PINC & SWITCH_MASK ){ case 0b111000: PORTB |= 1<<0; break; case 0b110100: PORTB
-
Thread
CAN funktioniert , aber nicht im vollen Umfang
PORTD = 0b00000000; // Alle=Aus DDRC = 0b00000000; // Alle=Eingang PORTC = 0b00000000; // Alle=Aus DDRB = 0b00000100; // PB2=Ausgang, Rest=Eingang PORTB = 0b11111111; // PB2=High, Rest=PullUp } // BLAUE LED (PD7)
PORTC &= ~(1<<PC4); PORTD |= (1<<PD7); } // ORANGENE LED (PC4) leuchtet, Rote LED (PB2) aus, Blaue LED (PD7) aus. else { PORTB &= ~(1<<PB2); PORTC |= (1<<PC4);
-
Thread
LCD 8 * 2 Bascom
$crystal = 8000000 $prog &HFF , &HE1 , &HD9 , &H00 Config Lcd = 8 * 2 Const _lcdport = Portc Const _lcdddr = Ddrc Const _lcdin = Pinc Const _lcd_e = 1 Const _lcd_rw = 2 Const _lcd_rs = 3[/c] bascom meint daraufhin "unknown LCD Type (8 * 2)" kann das sein das das keine 8 x
regfile = "m8def.dat" $crystal = 8000000 Config Lcd = 8 * 2 Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , Rs = Portc.4 Cls 'loesche das LCD Display Locate 1 , 1 'Cursor auf 1 Zeile, 1 Spalte Lcd "Hello
-
Thread
If-Schleife übersprungen
lässt aber auch diesen //Block komplett aus { PORTC |=0b01000000; } else { PORTC &=0b10111111; } } int main(void) { DDRA = 0b01000000; DDRB = 0b00000011; DDRC = 0b01000000; DDRD =
PORTB |= (1<<PORTB2)|(1<<PORTB3)|(1<<PORTB4); PORTB |= (1<<PORTB5)|(1<<PORTB6)|(1<<PORTB7); PORTC |= 0b10111111; PORTD |= 0b11111111; while(1) { start(); } } [/C] *******************************************
-
Thread
RC Kanal auslesen
Interrupt bei jedem Flankenwechsel (0->1 und 1->0) Config Int0 = Change Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.3 , Db6 = Portc.4 , _ Db7 = Portc.5 , E = Portc.1 , Rs = Portc.0 Config Lcd = 16 * 2 Cursor Off Dim Blitzer As Integer Blitzer = 100 Dim Pause As Integer Pause
Loop End Rc_read: If Reading = 0 Then Start Timer1 Reading = 1 Toggle Portc.0 'Den Timer stoppen mit fallender Flanke Else Stop Timer1 Rc_value = Timer1 Cls Locate 2 , 5 Lcd Rc_value Waitms 500 Timer1 = 0 Reading = 0 Toggle Portc.1
-
Thread
Ziemlich komisches WinAVR problem
WriteAddr(uint32_t addr2) { uint32_t addr=(uint32_t)0x00005555; PORTB = (addr >> 10) & 0xFF; PORTC = ((addr >> 18) & 0x3) | N_PROG | CARD; PORTC |= HADR; PORTC &= ~HADR; PORTB = addr & 0xFF; PORTC = ((addr >> 8) & 0x3) | N_PROG | CARD; PORTC |= LADR; PORTC &= ~LADR; } und
einwandfrei: void WriteAddr(uint32_t addr2) { uint32_t addr=addr2; PORTB = (addr >> 10) & 0xFF; PORTC = ((addr >> 18) & 0x3) | N_PROG | CARD; PORTC |= HADR; PORTC &= ~HADR; PORTB = addr & 0xFF; PORTC = ((addr >> 8) & 0x3) | N_PROG | CARD; PORTC |= LADR; PORTC &= ~LADR; } WriteAddr
-
Thread
Drucker an AVR
nichts ausmachen _sollte_ da der Drucker ja erst beim Strobe liest. Also: portb0-4=druckerdaten0-3, portc0-3=druckerdaten4-7, portc4=busy, portc5=strobe print_send: push temp ; temp sichern andi temp, 0b00001111 ; unteres nibble isolieren (druckerdaten auf 2 ports verteilt
cbi portc, 5 ; strobe senden (strobe ist inverted!) nop ; > 0,5 usec warten nop sbi portc, 5 ; strobe fertig nop
-
Thread
[AVR] Pins über Array ansteuern
main() { uint8_t* Ddrs[] = { &DDRB, &DDRC, &DDRD }; uint8_t* Ports[] = { &PORTB, &PORTC, &PORTD }; Ddrs[1] = 0xFF; // DDRC auf Output schalten Ports[1] = 0xFF; // PORTC komplett auf 1 } [/C] Wie gesagt: Ich kanns hier nicht testen. Was habt ihr denn so ausprobiert
> { > uint8_t* Ddrs[] = { &DDRB, &DDRC, &DDRD }; > uint8_t* Ports[] = { &PORTB, &PORTC, &PORTD }; > > Ddrs[1] = 0xFF; // DDRC auf Output schalten > Ports[1] = 0xFF; // PORTC komplett auf 1 > } > [/C] //EDIT: Ignoriert das hier, volatile vergessen ;) /OLD/
-
Thread
LCD will nicht funktionieren
der lcd.h habe ich 16MHz eingestellt und hier sind die pin-belegungen #define LCD_PORT PORTC #define LCD_DATA0_PORT LCD_PORT #define LCD_DATA1_PORT LCD_PORT #define LCD_DATA2_PORT LCD_PORT #define LCD_DATA3_PORT LCD_PORT #define LCD_DATA0_PIN 0 <-hier hängt
Bei Mega32 und PortC denke ich immer an das JTAG-Interface... Setze zweimal direkt hintereinander das JTD-Bit in MCUCSR, dann ist JTAG deaktiviert und dir steht PortC für I/O zur Verfügung. Alternativ geht das auch
-
Thread
Port Definitionen
PINA #define BIT_ADC_0 0 [/c] sind #defines, die bei der Nutzung von PORTC als Standard-IO sinnvoll sind. Nutzt du dagegen den ADC, helfen die dir nicht weiter. Ist der ADC aktiviert, dann wird der ADC-Kanal in den unteren Bits des ADMUX-Registers eingestellt. Insofern
Wenn in meinem Programm aber zB. der PORTB 100mal auftaucht und mir fällt ein, dass ich doch den PORTC nehmen will, dann muss ich alles ändern und nicht nur ein "define"! verstehst du was ich meine? Wie macht man sowas??? Bei einer Zahl ist das kein Problem. #define PI 3,141 Aber wie mache
-
Thread
RFID - China-Reader ohne Spezial-IC
Transponder arbeitet Sabotage Alias Pind.2 ' Sabotagekontakt L=OK 'Tastatur PortC Jumper Alias Pinc.7 Zeile123 Alias Pinc.0 ' 4 Zeilen mit PullUP-R Zeile456 Alias Pinc.1 Zeile789 Alias Pinc.2 Zeile000 Alias Pinc.3 Spalte147 Alias Portc.4 ' 3 Spaltenausgänge Spalte258 Alias Portc.5 Spalte369 Alias Portc.6 Beep Alias Pinb.0 ' Klingeltaste als Enter '**************************************************************************** Startup: '*********
-
Thread
USBasp+AVRdude+libusb=MEGA-STRESS
0x00; DDRA = 0x00; while(1){ PORTA |= (1<<PA0); PORTC &= ~(1<<PC4); _delay_ms(50); PORTC |= (1<<PC4); PORTA &= ~(1<<PA0); _delay_ms(50); } return(0); }[/c]
muss aber genau ein 12MHz sein, damit das mit dem USB klappt, also auf dem USBasp ! PS: Wenn PortC auf einem M32 nicht ganz geht, immer nach JTAG (De-)aktivierung schauen.
-
Thread
Frage zur UART Mega328
" if (chars=='A') { PORTC=(1<<DDC1); } PORTC=0x00; } " Das wird in einer sehr schnellen Endlosschleife wiederholt ausgeführt. Wenn du ein A schickst, ist PC1 für ein bis zwei CPU Takte (paar
wäre PORTC=(1<<PC1). Noch richtiger wäre PORTC |=(1<<PC1); zum Einschalten und PORTC &= ~(1<<PC1); zum Ausschalten. Unterschied: Mit diesem beiden Befehlen änderst du nur das eine Bit, was du ändern
-
Thread
Timer beim AVR, ich kapiers nicht
anderen kann ich mir noch einen anderen Fehler vorstellen: Im Hauptprogramm toggelst du einen Pin am PORTC, im Timer-Interrupt toggelst du einen anderen Pin, auch am PORTC. Das toggeln eines Pins kann bei einem AVR nie atomar sein, man braucht dazu also immer mehr als nur eine Anweisung, bei der immer
nun, dass ein Timer-Interrupt just nach dem Einlesen des Ports im Hauptprogramm stattfindet, deinen PORTC.1 toggelt und nachdem die INT-Routine abgearbeitet wurde, überschreibt das Hauptprogramm deinen grad getoggelten PORTC.1 wieder mit dem alten Wert. Das ganze nennt sich Race-Condition, Stichwort
-
Thread
"genaue" Frequenz mit Timer ISR erzeugen
//limit counter for 12,5kHz if (counter==8) counter=0; if (counter<=1) PORTC|=(1<<PC0); if (counter>1) PORTC&=~(1<<PC0); } [/c] Das Ausgangssignal an PC0 müsste ja jetzt 12,5kHz sein. Wie erwähnt, möchte ich diese Frequenz sehr genau realisieren. Assemblerkenntnisse
&=~(1<<PC0); [/C] -> [C] if (counter < 1) PORTC|=(1<<PC0); else PORTC&=~(1<<PC0); [/C] Das geht erstens schneller und verhindert zweitens einen Fehler, wenn du das Länge des Highpulses anpasst. Der Highpuls wird nur noch an 1
-
Thread
[F] 7-Segment multipl.
int einer = (zahl-(hunderter*100) - (zehner*10)); if(Merker == 0) { PORTC &= ~(1<<PC5); PORTC &= ~(1<<PC3); PORTC |= (1<<PC4); Display(einer); Merker ++; _delay_ms(2); } if(Merker == 1) { PORTC &= ~(1<<PC4); PORTC &= ~(1<<PC3); PORTC |= (1<<PC5); Display(zehner); Merker ++; _delay_ms(2); } if(Merker == 2) { PORTC &= ~(1<<PC4); PORTC &= ~(1<<PC5); PORTC |= (1<<PC3); Display(hunderter); Merker = 0; _delay_ms(2); } } [/c] Dieser Code wird über ein Interrupt regelmäßig ausgelöst! PORTC3
-
Thread
Atemga16 Bascom Shiftin Problem PINA.0
A R T B E D I N G U G E N ########################################### Porta.1 = 0 Porta.3 = 0 'Portc.1 = 0 'Portc.3 = 0 '##### M A I N L O O P ######################################################### Main: 'Hauptprogramm Do Start
[/code] Ich habe nur eine hardware bis jetzt. deshalb klammer ich aus und steck diese um. am PortC funktioniert alles. nur an PortA nicht.
-
Thread
AVR Bascom Befehl Case div. Pins abfragen
: Portc.5 = 1 'LED an (Pin PC5) wait 6 End Select Loop End
Würd' mal sagen: [code]If Eingabe <> PortC Then Geht Nicht Else Nix kapiert End If[/code]
-
Thread
Einstieg in uC über Moodlight?
Pullup oder Pulldown? DDRC = 0b00110000; //PortC5 und C4 als Ausgang definieren und auf 0 setzen PORTC = (0<<PC5); //Ports LOW-Aktiv! PORTC = (0<<PC4); Das ist meine ganze Initialisierung. mfg
//PortC5 und C4 als Ausgang definieren und auf 0 setzen PORTC = (0<<PC5); //Ports LOW-Aktiv! PORTC = (0<<PC4); Das setzt gezielt gar nichts auf 0. Eine 0 die x mal nach links geschoben wird, ist immer noch 0. Obiges ist also äquivalent zu PORTC = 0
-
Thread
AtMega32: Portc.5 liefert bei logisch1 nur 1.6V?
Config Portc.6 = Output Config Portc.5 = Output Config Portc.4 = Output Config Portc.3 = Output Config Portc.2 = Output Config Portc.1 = Output Config Portc.0 = Output Config Portd.7 = Output Config Portd.6 = Output Multiplex1 Alias Portd.0 Multiplex2 Alias Portd.1 B1 Alias Portc.0 B2 Alias Portc.1 B3 Alias Portc.2 B4 Alias Portc.3 B5 Alias Portc.4 B6 Alias Portc.5 B7 Alias Portc.6 B8 Alias Portc.7 B9 Alias Portd.7 B10 Alias Portd.6 Do Multiplex1 = 1